[java-idp-oidc] 13/44: JOIDC-5 Updated testing to include RP configured via SAML-metadata

Henri Mikkonen henri.mikkonen at iki.fi
Thu Oct 22 13:08:25 UTC 2020


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=97dd8e4fd86eca3ce42967c109651725a0a4f1e6

commit 97dd8e4fd86eca3ce42967c109651725a0a4f1e6
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Apr 24 14:22:58 2020 +0300

    JOIDC-5 Updated testing to include RP configured via SAML-metadata
    
    https://issues.shibboleth.net/jira/browse/JOIDC-5
---
 .../oidc/profile/flow/TokenFlowTest.java           | 14 +++++++++++-
 .../oidc/profile/flow/UserInfoTest.java            | 17 ++++++++++++++
 .../src/test/resources/conf/global.xml             |  4 ++--
 .../src/test/resources/conf/metadata-providers.xml |  2 +-
 .../EntityDescriptor-with-oidcmd-clientsecret.xml  | 26 ++++++++++++++++++++++
 5 files changed, 59 insertions(+), 4 deletions(-)

diff --git a/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/TokenFlowTest.java b/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/TokenFlowTest.java
index 4516571e..6c396933 100644
--- a/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/TokenFlowTest.java
+++ b/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/TokenFlowTest.java
@@ -62,6 +62,7 @@ public class TokenFlowTest extends AbstractOidcFlowTest {
     
     String redirectUri = "https://example.org/cb";
     String clientId = "mockClientId";
+    String clientIdSaml = "mockSamlClientId";
     String clientIdPkcePlain = "mockClientIdPKCEPlain";
     String clientIdPkcePlainUnforced = "mockClientIdPKCEPlainUnforced";
     String clientIdPkceS256 = "mockClientIdPKCES256";
@@ -143,7 +144,18 @@ public class TokenFlowTest extends AbstractOidcFlowTest {
         OIDCTokenResponse response = parseSuccessResponse(result, OIDCTokenResponse.class);
         Assert.assertNotNull(response.getTokens().getAccessToken());
     }
-    
+
+    @Test
+    public void testValidGrantSaml() throws ParseException, IOException, NoSuchAlgorithmException, URISyntaxException,
+        DataSealerException, ComponentInitializationException {
+        initializeGrantAndRequest(clientId, createRequestParameters(redirectUri, "authorization_code",
+                buildAuthorizationCode(clientIdSaml), clientIdSaml));
+        setBasicAuth(clientIdSaml, clientSecret);
+        final FlowExecutionResult result = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
+        OIDCTokenResponse response = parseSuccessResponse(result, OIDCTokenResponse.class);
+        Assert.assertNotNull(response.getTokens().getAccessToken());
+    }
+
     protected String buildAuthorizationCode(String clientId) throws NoSuchAlgorithmException, URISyntaxException,
         DataSealerException, ComponentInitializationException {
         return buildAuthorizationCode(clientId, null);
diff --git a/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/UserInfoTest.java b/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/UserInfoTest.java
index 402d6d88..b3b9222b 100644
--- a/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/UserInfoTest.java
+++ b/idp-oidc-extension-impl/src/test/java/org/geant/idpextension/oidc/profile/flow/UserInfoTest.java
@@ -45,6 +45,7 @@ public class UserInfoTest extends AbstractOidcApiFlowTest {
     public static final String FLOW_ID = "oidc/userinfo";
     
     String clientId = "mockClientId";
+    String clientIdSaml = "mockSamlClientId";
     String subject = "mockSubject";
     
     @Autowired
@@ -99,6 +100,22 @@ public class UserInfoTest extends AbstractOidcApiFlowTest {
         Assert.assertNull(userInfo.getNickname());
         Assert.assertNull(response.getUserInfoJWT());
     }
+    
+    @Test
+    public void testSuccessOnlySubjectSaml() throws URISyntaxException, NoSuchAlgorithmException, DataSealerException,
+        ComponentInitializationException, IOException {
+        BearerAccessToken token = buildToken(clientIdSaml, subject, new Scope("openid"));
+        request.addHeader("Authorization", token.toAuthorizationHeader());
+        final FlowExecutionResult result = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
+        UserInfoSuccessResponse response = parseSuccessResponse(result, UserInfoSuccessResponse.class);
+        Assert.assertEquals(response.getUserInfo().getSubject().getValue(), subject);
+        UserInfo userInfo = response.getUserInfo();
+        Assert.assertNotNull(userInfo);
+        Assert.assertNull(userInfo.getEmailAddress());
+        Assert.assertNull(userInfo.getNickname());
+        Assert.assertNull(response.getUserInfoJWT());
+    }
+
 
     @Test
     public void testSuccessEmailResolution() throws URISyntaxException, NoSuchAlgorithmException, DataSealerException,
diff --git a/idp-oidc-extension-impl/src/test/resources/conf/global.xml b/idp-oidc-extension-impl/src/test/resources/conf/global.xml
index 44ff8e8a..b2bbfd96 100644
--- a/idp-oidc-extension-impl/src/test/resources/conf/global.xml
+++ b/idp-oidc-extension-impl/src/test/resources/conf/global.xml
@@ -16,8 +16,8 @@
     
     <import resource="global-oidc.xml" />
 
-    <bean id="exampleMetadata-saml-oidc" class="org.springframework.core.io.ClassPathResource">
-        <constructor-arg value="/org/geant/idpextension/oidc/metadata/impl/EntitiesDescriptor-with-oidcmd.xml"/>
+    <bean id="exampleMetadata-saml-oidc-clientsecret" class="org.springframework.core.io.ClassPathResource">
+        <constructor-arg value="/org/geant/idpextension/oidc/metadata/impl/EntityDescriptor-with-oidcmd-clientsecret.xml"/>
     </bean>
     
     <util:set id="testbed.MetadataIndexes">
diff --git a/idp-oidc-extension-impl/src/test/resources/conf/metadata-providers.xml b/idp-oidc-extension-impl/src/test/resources/conf/metadata-providers.xml
index 40f30fb2..c1cfcded 100644
--- a/idp-oidc-extension-impl/src/test/resources/conf/metadata-providers.xml
+++ b/idp-oidc-extension-impl/src/test/resources/conf/metadata-providers.xml
@@ -19,7 +19,7 @@
         <!-- Metadata Configuration -->
         <!-- ========================================== -->
 
-    <MetadataProvider id="SP123MD" xsi:type="ResourceBackedMetadataProvider" maxRefreshDelay="PT5M" indexesRef="testbed.MetadataIndexes" resourceRef="exampleMetadata-saml-oidc">
+    <MetadataProvider id="SP123MD" xsi:type="ResourceBackedMetadataProvider" maxRefreshDelay="PT5M" indexesRef="testbed.MetadataIndexes" resourceRef="exampleMetadata-saml-oidc-clientsecret">
         <MetadataFilter xsi:type="NodeProcessing">
             <MetadataNodeProcessor xsi:type="oidcext:ClientInformation"/>
         </MetadataFilter>
diff --git a/idp-oidc-extension-impl/src/test/resources/org/geant/idpextension/oidc/metadata/impl/EntityDescriptor-with-oidcmd-clientsecret.xml b/idp-oidc-extension-impl/src/test/resources/org/geant/idpextension/oidc/metadata/impl/EntityDescriptor-with-oidcmd-clientsecret.xml
new file mode 100644
index 00000000..57beb35a
--- /dev/null
+++ b/idp-oidc-extension-impl/src/test/resources/org/geant/idpextension/oidc/metadata/impl/EntityDescriptor-with-oidcmd-clientsecret.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="mockSamlClientId">
+    <md:SPSSODescriptor xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" protocolSupportEnumeration="http://openid.net/specs/openid-connect-core-1_0.html">
+        <md:KeyDescriptor>
+            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                <ds:KeyName>mockClientSecret</ds:KeyName>
+                <oidcmd:ClientSecret>mockClientSecretmockClientSecretmockClientSecret</oidcmd:ClientSecret>
+            </ds:KeyInfo>
+        </md:KeyDescriptor>
+        <md:Extensions>
+            <oidcmd:OAuthRPExtensions>
+                <oidcmd:GrantType>authorization_code</oidcmd:GrantType>
+                <oidcmd:ResponseType>code</oidcmd:ResponseType>
+                <oidcmd:ApplicationType>web</oidcmd:ApplicationType>
+                <oidcmd:TokenEndpointAuthMethod>client_secret_basic</oidcmd:TokenEndpointAuthMethod>
+                <oidcmd:Scope>openid</oidcmd:Scope>
+                <oidcmd:Scope>profile</oidcmd:Scope>
+            </oidcmd:OAuthRPExtensions>
+        </md:Extensions>
+        <md:AssertionConsumerService
+                Binding="http://csc.fi/ns/profiles/oidc/sso/browser"
+                Location="https://example.org/cb"
+                index="1"/>
+         <md:NameIDFormat>public</md:NameIDFormat>
+    </md:SPSSODescriptor>
+</md:EntityDescriptor>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list