Skip to content

Commit c67d834

Browse files
committed
KEYCLOAK-3096 Remove leading/trailing spaces from login
1 parent 8bdfd57 commit c67d834

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

services/src/main/java/org/keycloak/authentication/authenticators/browser/AbstractUsernameFormAuthenticator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ public boolean validateUserAndPassword(AuthenticationFlowContext context, Multiv
119119
context.failureChallenge(AuthenticationFlowError.INVALID_USER, challengeResponse);
120120
return false;
121121
}
122+
123+
// remove leading and trailing whitespace
124+
username = username.trim();
125+
122126
context.getEvent().detail(Details.USERNAME, username);
123127
context.getClientSession().setNote(AbstractUsernameFormAuthenticator.ATTEMPTED_USERNAME, username);
124128

testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/forms/LoginTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,28 @@ public void loginSuccess() {
305305
events.expectLogin().user(userId).detail(Details.USERNAME, "login-test").assertEvent();
306306
}
307307

308+
@Test
309+
public void loginWithWhitespaceSuccess() {
310+
loginPage.open();
311+
loginPage.login(" login-test \t ", "password");
312+
313+
Assert.assertEquals(RequestType.AUTH_RESPONSE, appPage.getRequestType());
314+
Assert.assertNotNull(oauth.getCurrentQuery().get(OAuth2Constants.CODE));
315+
316+
events.expectLogin().user(userId).detail(Details.USERNAME, "login-test").assertEvent();
317+
}
318+
319+
@Test
320+
public void loginWithEmailWhitespaceSuccess() {
321+
loginPage.open();
322+
loginPage.login(" [email protected] ", "password");
323+
324+
Assert.assertEquals(RequestType.AUTH_RESPONSE, appPage.getRequestType());
325+
Assert.assertNotNull(oauth.getCurrentQuery().get(OAuth2Constants.CODE));
326+
327+
events.expectLogin().user(userId).assertEvent();
328+
}
329+
308330
@Test
309331
public void loginPromptNone() {
310332
driver.navigate().to(oauth.getLoginFormUrl().toString() + "&prompt=none");

0 commit comments

Comments
 (0)