[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