mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-05 10:12:36 +00:00
Add NameID to SAML 2.0 Authentication Info
Issue gh-10820
This commit is contained in:
parent
36c7b91fb9
commit
02a8c416aa
@ -77,6 +77,11 @@ public interface Saml2AuthenticatedPrincipal extends AuthenticatedPrincipal, Sam
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default String getNameId() {
|
||||||
|
return getName();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default List<String> getSessionIndexes() {
|
default List<String> getSessionIndexes() {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
@ -18,6 +18,7 @@ package org.springframework.security.saml2.provider.service.authentication;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.opensaml.saml.saml2.core.NameID;
|
||||||
import org.opensaml.saml.saml2.core.SessionIndex;
|
import org.opensaml.saml.saml2.core.SessionIndex;
|
||||||
|
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@ -41,6 +42,12 @@ public interface Saml2AuthenticationInfo {
|
|||||||
*/
|
*/
|
||||||
String getRelyingPartyRegistrationId();
|
String getRelyingPartyRegistrationId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the {@link NameID} value of the authenticated principal
|
||||||
|
* @return the {@link NameID} value of the authenticated principal
|
||||||
|
*/
|
||||||
|
String getNameId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the {@link SessionIndex} values of the authenticated principal
|
* Get the {@link SessionIndex} values of the authenticated principal
|
||||||
* @return the {@link SessionIndex} values of the authenticated principal
|
* @return the {@link SessionIndex} values of the authenticated principal
|
||||||
|
@ -147,16 +147,19 @@ final class BaseOpenSamlLogoutRequestResolver implements Saml2LogoutRequestResol
|
|||||||
issuer.setValue(entityId);
|
issuer.setValue(entityId);
|
||||||
logoutRequest.setIssuer(issuer);
|
logoutRequest.setIssuer(issuer);
|
||||||
NameID nameId = this.nameIdBuilder.buildObject();
|
NameID nameId = this.nameIdBuilder.buildObject();
|
||||||
nameId.setValue(authentication.getName());
|
|
||||||
logoutRequest.setNameID(nameId);
|
logoutRequest.setNameID(nameId);
|
||||||
Saml2AuthenticationInfo info = Saml2AuthenticationInfo.fromAuthentication(authentication);
|
Saml2AuthenticationInfo info = Saml2AuthenticationInfo.fromAuthentication(authentication);
|
||||||
if (info != null) {
|
if (info != null) {
|
||||||
|
nameId.setValue(info.getNameId());
|
||||||
for (String index : info.getSessionIndexes()) {
|
for (String index : info.getSessionIndexes()) {
|
||||||
SessionIndex sessionIndex = this.sessionIndexBuilder.buildObject();
|
SessionIndex sessionIndex = this.sessionIndexBuilder.buildObject();
|
||||||
sessionIndex.setValue(index);
|
sessionIndex.setValue(index);
|
||||||
logoutRequest.getSessionIndexes().add(sessionIndex);
|
logoutRequest.getSessionIndexes().add(sessionIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
nameId.setValue(authentication.getName());
|
||||||
|
}
|
||||||
logoutRequest.setIssueInstant(Instant.now(this.clock));
|
logoutRequest.setIssueInstant(Instant.now(this.clock));
|
||||||
this.parametersConsumer
|
this.parametersConsumer
|
||||||
.accept(new LogoutRequestParameters(request, registration, authentication, logoutRequest));
|
.accept(new LogoutRequestParameters(request, registration, authentication, logoutRequest));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user