mirror of
https://github.com/keycloak/keycloak.git
synced 2026-02-03 20:39:33 -05:00
Make sure disabled organization is ignored when re-authenticating
Closes #45924 Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
This commit is contained in:
parent
47408e8620
commit
072f547b71
2 changed files with 26 additions and 4 deletions
|
|
@ -203,10 +203,6 @@ public class OrganizationAuthenticator extends IdentityProviderAuthenticator {
|
||||||
|
|
||||||
if (alias.isEmpty()) {
|
if (alias.isEmpty()) {
|
||||||
organization = Organizations.resolveOrganization(session, user, domain);
|
organization = Organizations.resolveOrganization(session, user, domain);
|
||||||
if (organization != null && isSSOAuthentication(authSession)) {
|
|
||||||
// make sure the organization selected by the user is available from the client session when running mappers and issuing tokens
|
|
||||||
authSession.setClientNote(OrganizationModel.ORGANIZATION_ATTRIBUTE, organization.getId());
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
OrganizationProvider provider = getOrganizationProvider();
|
OrganizationProvider provider = getOrganizationProvider();
|
||||||
organization = provider.getByAlias(alias.get(0));
|
organization = provider.getByAlias(alias.get(0));
|
||||||
|
|
|
||||||
|
|
@ -380,6 +380,32 @@ public class OrganizationOIDCProtocolMapperTest extends AbstractOrganizationTest
|
||||||
oauth.scope("organization:" + orgB.getAlias());
|
oauth.scope("organization:" + orgB.getAlias());
|
||||||
oauth.openLoginForm();
|
oauth.openLoginForm();
|
||||||
assertTrue(driver.getCurrentUrl().contains("Invalid+scopes%3A+openid+organization"));
|
assertTrue(driver.getCurrentUrl().contains("Invalid+scopes%3A+openid+organization"));
|
||||||
|
|
||||||
|
oauth.scope("organization:" + orgA.getAlias());
|
||||||
|
oauth.openLoginForm();
|
||||||
|
loginPage.loginUsername(member.getEmail());
|
||||||
|
loginPage.login(memberPassword);
|
||||||
|
response = assertSuccessfulCodeGrant();
|
||||||
|
assertThat(response.getScope(), containsString("organization"));
|
||||||
|
accessToken = oauth.verifyToken(response.getAccessToken());
|
||||||
|
organizations = (List<String>) accessToken.getOtherClaims().get(OAuth2Constants.ORGANIZATION);
|
||||||
|
assertThat(accessToken.getOtherClaims().keySet(), hasItem(OAuth2Constants.ORGANIZATION));
|
||||||
|
assertThat(organizations.contains(orgA.getAlias()), is(true));
|
||||||
|
assertThat(organizations.contains(orgB.getAlias()), is(false));
|
||||||
|
oauth.openLoginForm();
|
||||||
|
appPage.assertCurrent();
|
||||||
|
orgA.setEnabled(false);
|
||||||
|
testRealm().organizations().get(orgA.getId()).update(orgA).close();
|
||||||
|
oauth.openLoginForm();
|
||||||
|
assertTrue(driver.getCurrentUrl().contains("Invalid+scopes%3A+openid+organization"));
|
||||||
|
|
||||||
|
oauth.scope("");
|
||||||
|
oauth.openLoginForm();
|
||||||
|
appPage.assertCurrent();
|
||||||
|
response = assertSuccessfulCodeGrant();
|
||||||
|
assertThat(response.getScope(), not(containsString("organization")));
|
||||||
|
accessToken = oauth.verifyToken(response.getAccessToken());
|
||||||
|
assertThat(accessToken.getOtherClaims().keySet(), not(hasItem(OAuth2Constants.ORGANIZATION)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue