fix: 🐛 Fix storing SavedUserAuth

Caused SAML claim sources not to work in USERINFO and ID_TOKEN
pull/1580/head
Dominik Frantisek Bucik 2022-04-06 12:34:56 +02:00
parent 9bd4bac4ae
commit c83ecc28e2
No known key found for this signature in database
GPG Key ID: 25014C8DB2E7E62D
1 changed files with 8 additions and 4 deletions

View File

@ -100,17 +100,21 @@ public class SavedUserAuthentication implements Authentication {
setAuthorities(new HashSet<>(src.getAuthorities()));
setAuthenticated(src.isAuthenticated());
if (src instanceof SavedUserAuthentication) {
this.setAcr(((SavedUserAuthentication) src).getAcr());
SavedUserAuthentication source = (SavedUserAuthentication) src;
this.setAcr(source.getAcr());
this.setAuthenticationDetails(source.getAuthenticationDetails());
} else if (src instanceof ExpiringUsernameAuthenticationToken) {
ExpiringUsernameAuthenticationToken token = (ExpiringUsernameAuthenticationToken) src;
this.acr = ((SamlPrincipal) token.getPrincipal()).getSamlCredential()
SAMLCredential credential = ((SamlPrincipal) token.getPrincipal()).getSamlCredential();
this.setAcr(credential
.getAuthenticationAssertion()
.getAuthnStatements().stream()
.map(AuthnStatement::getAuthnContext)
.map(AuthnContext::getAuthnContextClassRef)
.map(AuthnContextClassRef::getAuthnContextClassRef)
.collect(Collectors.joining());
this.authenticationDetails = new SamlAuthenticationDetails((SAMLCredential) src.getCredentials());
.collect(Collectors.joining())
);
this.setAuthenticationDetails(new SamlAuthenticationDetails(credential));
}
}