Skip to content

Commit 2c5264a

Browse files
committed
Fix #34400: allow to use NameID as SAML username
1 parent e25ef9b commit 2c5264a

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

src/main/java/eu/openanalytics/containerproxy/auth/impl/saml/ResponseAuthenticationConverter.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import java.util.stream.Collectors;
4040

4141
import static eu.openanalytics.containerproxy.auth.impl.saml.SAMLConfiguration.DEFAULT_NAME_ATTRIBUTE;
42+
import static eu.openanalytics.containerproxy.auth.impl.saml.SAMLConfiguration.NAME_ATTRIBUTE_NAME_ID_VALUE;
4243
import static eu.openanalytics.containerproxy.auth.impl.saml.SAMLConfiguration.PROP_LOG_ATTRIBUTES;
4344
import static eu.openanalytics.containerproxy.auth.impl.saml.SAMLConfiguration.PROP_NAME_ATTRIBUTE;
4445
import static eu.openanalytics.containerproxy.auth.impl.saml.SAMLConfiguration.PROP_ROLES_ATTRIBUTE;
@@ -75,7 +76,13 @@ public AbstractAuthenticationToken convert(@Nonnull OpenSaml4AuthenticationProvi
7576
logAttributes(principal);
7677
}
7778

78-
Optional<String> nameValue = getSingleAttributeValue(principal, nameAttribute);
79+
Optional<String> nameValue;
80+
if (nameAttribute.equalsIgnoreCase(NAME_ATTRIBUTE_NAME_ID_VALUE)) {
81+
nameValue = Optional.ofNullable(nameId);
82+
} else {
83+
nameValue = getSingleAttributeValue(principal, nameAttribute);
84+
}
85+
7986
if (nameValue.isEmpty()) {
8087
throw new UsernameNotFoundException(String.format("[SAML] User: \"%s\" => name attribute missing from SAML assertion", nameId));
8188
}

src/main/java/eu/openanalytics/containerproxy/auth/impl/saml/SAMLConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
public class SAMLConfiguration {
6262

6363
public static final String DEFAULT_NAME_ATTRIBUTE = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
64+
public static final String NAME_ATTRIBUTE_NAME_ID_VALUE = "https://shinyproxy.io/nameid";
6465

6566
public static final String PROP_LOG_ATTRIBUTES = "proxy.saml.log-attributes";
6667
public static final String PROP_FORCE_AUTHN = "proxy.saml.force-authn";

0 commit comments

Comments
 (0)