NPE in User Session Note mapper on Token Exchange
Closes #24200 Signed-off-by: Douglas Palmer <dpalmer@redhat.com>
This commit is contained in:
parent
a83b9d11fa
commit
7e78d29f8d
3 changed files with 17 additions and 1 deletions
|
@ -48,6 +48,7 @@ public class BrokeredIdentityContext {
|
||||||
private IdentityProviderModel idpConfig;
|
private IdentityProviderModel idpConfig;
|
||||||
private IdentityProvider idp;
|
private IdentityProvider idp;
|
||||||
private Map<String, Object> contextData = new HashMap<>();
|
private Map<String, Object> contextData = new HashMap<>();
|
||||||
|
private Map<String, String> claims = new HashMap<>();
|
||||||
private AuthenticationSessionModel authenticationSession;
|
private AuthenticationSessionModel authenticationSession;
|
||||||
|
|
||||||
public BrokeredIdentityContext(String id) {
|
public BrokeredIdentityContext(String id) {
|
||||||
|
@ -161,6 +162,14 @@ public class BrokeredIdentityContext {
|
||||||
this.contextData = contextData;
|
this.contextData = contextData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getClaims() {
|
||||||
|
return claims;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClaims(Map<String, String> claims) {
|
||||||
|
this.claims = claims;
|
||||||
|
}
|
||||||
|
|
||||||
// Set the attribute, which will be available on "Update profile" page and in authenticators
|
// Set the attribute, which will be available on "Update profile" page and in authenticators
|
||||||
public void setUserAttribute(String attributeName, String attributeValue) {
|
public void setUserAttribute(String attributeName, String attributeValue) {
|
||||||
List<String> list = new ArrayList<>();
|
List<String> list = new ArrayList<>();
|
||||||
|
|
|
@ -127,7 +127,12 @@ public class ClaimToUserSessionNoteMapper extends AbstractClaimMapper {
|
||||||
: valueEquals(value, claimValue);
|
: valueEquals(value, claimValue);
|
||||||
|
|
||||||
if (claimValuesMatch) {
|
if (claimValuesMatch) {
|
||||||
context.getAuthenticationSession().setUserSessionNote(claim.getKey(), claimValue);
|
if(context.getAuthenticationSession() != null) {
|
||||||
|
context.getAuthenticationSession().setUserSessionNote(claim.getKey(), claimValue);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
context.getClaims().put(claim.getKey(), claimValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -515,6 +515,8 @@ public class DefaultTokenExchangeProvider implements TokenExchangeProvider {
|
||||||
userSession.setNote(IdentityProvider.EXTERNAL_IDENTITY_PROVIDER, externalIdpModel.get().getAlias());
|
userSession.setNote(IdentityProvider.EXTERNAL_IDENTITY_PROVIDER, externalIdpModel.get().getAlias());
|
||||||
userSession.setNote(IdentityProvider.FEDERATED_ACCESS_TOKEN, subjectToken);
|
userSession.setNote(IdentityProvider.FEDERATED_ACCESS_TOKEN, subjectToken);
|
||||||
|
|
||||||
|
context.getClaims().forEach((k, v) -> userSession.setNote(k, v));
|
||||||
|
|
||||||
return exchangeClientToClient(user, userSession, null, false);
|
return exchangeClientToClient(user, userSession, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue