|
@@ -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;
|
|
|
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 {
|
|
|
.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);
|
|
|
}
|