@ -54,6 +54,7 @@ import org.opensaml.saml.saml2.core.EncryptedID;
@@ -54,6 +54,7 @@ import org.opensaml.saml.saml2.core.EncryptedID;
import org.opensaml.saml.saml2.core.Issuer ;
import org.opensaml.saml.saml2.core.NameID ;
import org.opensaml.saml.saml2.core.OneTimeUse ;
import org.opensaml.saml.saml2.core.ProxyRestriction ;
import org.opensaml.saml.saml2.core.Response ;
import org.opensaml.saml.saml2.core.Status ;
import org.opensaml.saml.saml2.core.StatusCode ;
@ -63,6 +64,7 @@ import org.opensaml.saml.saml2.core.impl.AttributeBuilder;
@@ -63,6 +64,7 @@ import org.opensaml.saml.saml2.core.impl.AttributeBuilder;
import org.opensaml.saml.saml2.core.impl.EncryptedAssertionBuilder ;
import org.opensaml.saml.saml2.core.impl.EncryptedIDBuilder ;
import org.opensaml.saml.saml2.core.impl.NameIDBuilder ;
import org.opensaml.saml.saml2.core.impl.ProxyRestrictionBuilder ;
import org.opensaml.saml.saml2.core.impl.StatusBuilder ;
import org.opensaml.saml.saml2.core.impl.StatusCodeBuilder ;
import org.opensaml.xmlsec.encryption.impl.EncryptedDataBuilder ;
@ -832,6 +834,19 @@ public class OpenSaml4AuthenticationProviderTests {
@@ -832,6 +834,19 @@ public class OpenSaml4AuthenticationProviderTests {
. withMessageContaining ( "did not match any valid issuers" ) ;
}
// gh-14931
@Test
public void authenticateWhenAssertionHasProxyRestrictionThenParses ( ) {
OpenSaml4AuthenticationProvider provider = new OpenSaml4AuthenticationProvider ( ) ;
Response response = response ( ) ;
Assertion assertion = assertion ( ) ;
ProxyRestriction condition = new ProxyRestrictionBuilder ( ) . buildObject ( ) ;
assertion . getConditions ( ) . getConditions ( ) . add ( condition ) ;
response . getAssertions ( ) . add ( assertion ) ;
Saml2AuthenticationToken token = token ( signed ( response ) , verifying ( registration ( ) ) ) ;
provider . authenticate ( token ) ;
}
private < T extends XMLObject > T build ( QName qName ) {
return ( T ) XMLObjectProviderRegistrySupport . getBuilderFactory ( ) . getBuilder ( qName ) . buildObject ( qName ) ;
}