[java-idp-oidc] 02/02: JOIDC-61 - Support metadata policies in the dyn. reg. profile configuration
Henri Mikkonen
henri.mikkonen at iki.fi
Wed Mar 9 13:32:59 UTC 2022
This is an automated email from the git hooks/post-receive script.
hjmikkon pushed a commit to branch main
in repository java-idp-oidc.
View the commit online:
http://git.shibboleth.net/view/?p=java-idp-oidc.git;a=commit;h=8945d0aa366cd357adb6c5d726a82d42ba9102a6
commit 8945d0aa366cd357adb6c5d726a82d42ba9102a6
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Wed Mar 9 15:31:59 2022 +0200
JOIDC-61 - Support metadata policies in the dyn. reg. profile configuration
https://shibboleth.atlassian.net/browse/JOIDC-61
Added testing of another metadata policy setup via shibboleth.RelyingPartyOverrides
---
.../oidc/op/profile/flow/RegistrationFlowTest.java | 31 +++++++++++++++++++---
.../src/test/resources/conf/metadata-policy2.json | 5 ++++
.../src/test/resources/conf/relying-party.xml | 14 +++++++++-
3 files changed, 46 insertions(+), 4 deletions(-)
diff --git a/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java b/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java
index 8ef9d7b1..c3472714 100644
--- a/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java
+++ b/idp-oidc-extension-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/RegistrationFlowTest.java
@@ -34,6 +34,7 @@ import org.testng.annotations.Test;
import com.nimbusds.langtag.LangTag;
import com.nimbusds.langtag.LangTagException;
+import com.nimbusds.oauth2.sdk.GrantType;
import com.nimbusds.oauth2.sdk.ParseException;
import com.nimbusds.oauth2.sdk.token.BearerAccessToken;
import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
@@ -157,12 +158,36 @@ public class RegistrationFlowTest extends AbstractOidcFlowTest {
public void testAccessToken_noPolicyNoRedirectUri() throws NoSuchAlgorithmException, DataSealerException,
ComponentInitializationException {
setJsonRequest("POST", "{ \"test\":false }");
- request.addHeader("Authorization", buildRegistrationAccessToken("mockDynRegClient", (String) null, (String[]) null)
- .toAuthorizationHeader());
+ request.addHeader("Authorization", buildRegistrationAccessToken("mockDynRegClientNoProfilePolicy",
+ (String) null, (String[]) null).toAuthorizationHeader());
final FlowExecutionResult result = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
assertErrorCode(result, "invalid_redirect_uri");
}
-
+
+ @Test
+ public void testAccessToken_nonDefaultPolicyActive_failsWhenIncompatibleRequest()
+ throws NoSuchAlgorithmException, DataSealerException, ComponentInitializationException {
+ // the policy for mockDynRegClientAnotherProfilePolicy shouldn't accept other grant_types than implicit
+ setJsonRequest("POST", buildRequestMessage(redirectUri, "\"grant_types\":[\"authorization_code\"]"));
+ request.addHeader("Authorization", buildRegistrationAccessToken("mockDynRegClientAnotherProfilePolicy",
+ (String) null, (String[]) null).toAuthorizationHeader());
+ final FlowExecutionResult result = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
+ assertErrorCode(result, "invalid_client_metadata");
+ }
+
+ @Test
+ public void testAccessToken_nonDefaultPolicyActive_successWithCompatibleRequest()
+ throws NoSuchAlgorithmException, DataSealerException, ComponentInitializationException, ParseException, IOException, net.minidev.json.parser.ParseException {
+ setJsonRequest("POST", buildRequestMessage(redirectUri, "\"grant_types\":[\"implicit\"]"));
+ request.addHeader("Authorization", buildRegistrationAccessToken("mockDynRegClientAnotherProfilePolicy",
+ (String) null, (String[]) null).toAuthorizationHeader());
+ final FlowExecutionResult result = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
+ assertSuccessfulResponse(result);
+ final OIDCClientInformationResponse parsedResponse =
+ parseSuccessResponse(result, OIDCClientInformationResponse.class);
+ Assert.assertTrue(parsedResponse.getOIDCClientInformation().getOIDCMetadata().getGrantTypes().contains(GrantType.IMPLICIT));
+ }
+
protected void assertSuccessfulResponse(final FlowExecutionResult result) throws IOException, ParseException, net.minidev.json.parser.ParseException {
final OIDCClientInformationResponse parsedResponse =
parseSuccessResponse(result, OIDCClientInformationResponse.class);
diff --git a/idp-oidc-extension-impl/src/test/resources/conf/metadata-policy2.json b/idp-oidc-extension-impl/src/test/resources/conf/metadata-policy2.json
new file mode 100644
index 00000000..f69df6a9
--- /dev/null
+++ b/idp-oidc-extension-impl/src/test/resources/conf/metadata-policy2.json
@@ -0,0 +1,5 @@
+{
+ "grant_types": {
+ "one_of": ["implicit"]
+ }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/test/resources/conf/relying-party.xml b/idp-oidc-extension-impl/src/test/resources/conf/relying-party.xml
index 98c7928b..8e6d1c45 100644
--- a/idp-oidc-extension-impl/src/test/resources/conf/relying-party.xml
+++ b/idp-oidc-extension-impl/src/test/resources/conf/relying-party.xml
@@ -90,13 +90,25 @@
</list>
</property>
</bean>
- <bean parent="RelyingPartyByName" c:relyingPartyIds="mockDynRegClient">
+ <bean parent="RelyingPartyByName" c:relyingPartyIds="mockDynRegClientNoProfilePolicy">
<property name="profileConfigurations">
<list>
<bean parent="OIDC.Registration" p:metadataPolicy="#{null}"/>
</list>
</property>
</bean>
+ <bean parent="RelyingPartyByName" c:relyingPartyIds="mockDynRegClientAnotherProfilePolicy">
+ <property name="profileConfigurations">
+ <list>
+ <bean parent="OIDC.Registration" p:metadataPolicyLookupStrategy-ref="shibboleth.oidc.dynreg.AnotherMetadataPolicyLookupStrategy"/>
+ </list>
+ </property>
+ </bean>
</util:list>
+ <bean id="shibboleth.oidc.dynreg.AnotherMetadataPolicyLookupStrategy"
+ parent="shibboleth.oidc.dynreg.MetadataPolicyLookupStrategy"
+ c:resource="classpath:conf/metadata-policy2.json"
+ c:id="AnotherProfileMetadataPolicyCache" />
+
</beans>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list