[java-idp-oidc] 05/44: JOIDC-5 Refactoring: use SPSSODescriptor instead of custom RP type.

Henri Mikkonen henri.mikkonen at iki.fi
Thu Oct 22 13:08:17 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=3c4e3fcd1cf79147d662666776b86d9c53649801

commit 3c4e3fcd1cf79147d662666776b86d9c53649801
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Apr 17 14:50:16 2020 +0300

    JOIDC-5 Refactoring: use SPSSODescriptor instead of custom RP type.
    
    https://issues.shibboleth.net/jira/browse/JOIDC-5
    
    RP metadata is located in SPSSODescriptor/Extensions/OAuthRPExtensions
---
 .../idp/saml/oidc/xmlobject/ClientSecret.java      |  37 +++++
 .../idp/saml/oidc/xmlobject/JwksData.java          |  37 +++++
 ...eDescriptorType.java => OAuthRPExtensions.java} |   8 +-
 .../resources/schema/saml-metadata-ext-oidcmd.xsd  |  18 +--
 .../oidc/xmlobject/impl/ClientSecretBuilder.java   |  46 ++++++
 ...orTypeMarshaller.java => ClientSecretImpl.java} |  21 ++-
 ...Marshaller.java => ClientSecretMarshaller.java} |  11 +-
 ...rshaller.java => ClientSecretUnmarshaller.java} |  11 +-
 .../saml/oidc/xmlobject/impl/JwksDataBuilder.java  |  46 ++++++
 ...riptorTypeMarshaller.java => JwksDataImpl.java} |  21 ++-
 ...TypeMarshaller.java => JwksDataMarshaller.java} |  11 +-
 ...peMarshaller.java => JwksDataUnmarshaller.java} |  11 +-
 ...eBuilder.java => OAuthRPExtensionsBuilder.java} |  16 +-
 ...torTypeImpl.java => OAuthRPExtensionsImpl.java} |  24 +--
 ...aller.java => OAuthRPExtensionsMarshaller.java} |   6 +-
 ...ler.java => OAuthRPExtensionsUnmarshaller.java} |  22 +--
 .../resources/saml2-metadata-oidcmd-config.xml     |  20 ++-
 .../impl/EntitiesDescriptor-with-oidcmd.xml        | 172 ++++++++++++---------
 18 files changed, 371 insertions(+), 167 deletions(-)

diff --git a/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/ClientSecret.java b/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/ClientSecret.java
new file mode 100644
index 00000000..c64b8699
--- /dev/null
+++ b/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/ClientSecret.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'ClientSecret'.
+ */
+public interface ClientSecret extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ClientSecret";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/JwksData.java b/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/JwksData.java
new file mode 100644
index 00000000..e9ece14f
--- /dev/null
+++ b/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/JwksData.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'JwksData'.
+ */
+public interface JwksData extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "JwksData";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/OAuthRPRoleDescriptorType.java b/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/OAuthRPExtensions.java
similarity index 94%
rename from idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/OAuthRPRoleDescriptorType.java
rename to idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/OAuthRPExtensions.java
index 5c6454c9..33b55d38 100644
--- a/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/OAuthRPRoleDescriptorType.java
+++ b/idp-oidc-extension-api/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/OAuthRPExtensions.java
@@ -20,15 +20,15 @@ import java.util.List;
 
 import javax.xml.namespace.QName;
 
-import org.opensaml.saml.saml2.metadata.RoleDescriptor;
+import org.opensaml.saml.common.SAMLObject;
 
 /**
- * SAML 2.0 Metadata extension OAuthRPRoleDescriptorType.
+ * SAML 2.0 Metadata extension OAuthRPExtensions.
  */
-public interface OAuthRPRoleDescriptorType extends RoleDescriptor {
+public interface OAuthRPExtensions extends SAMLObject {
     
     /** Local name of the XSI type. */
-    public static final String TYPE_LOCAL_NAME = "OAuthRPRoleDescriptorType";
+    public static final String TYPE_LOCAL_NAME = "OAuthRPExtensions";
 
     /** QName of the XSI type. */
     public static final QName TYPE_NAME = new QName(MetadataValueSAMLObject.SAML20MDOIDCMD_NS, TYPE_LOCAL_NAME,
diff --git a/idp-oidc-extension-api/src/main/resources/schema/saml-metadata-ext-oidcmd.xsd b/idp-oidc-extension-api/src/main/resources/schema/saml-metadata-ext-oidcmd.xsd
index 85319fcb..62296a78 100644
--- a/idp-oidc-extension-api/src/main/resources/schema/saml-metadata-ext-oidcmd.xsd
+++ b/idp-oidc-extension-api/src/main/resources/schema/saml-metadata-ext-oidcmd.xsd
@@ -9,18 +9,15 @@
 
     <import namespace="urn:oasis:names:tc:SAML:2.0:metadata" schemaLocation="http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"/>
 
-    <complexType name="OAuthRPRoleDescriptorType">
+    <complexType name="OAuthRPExtensions">
         <complexContent>
-            <extension base="md:RoleDescriptorType">
                 <sequence>
-                    <element ref="oidcmd:RedirectUri" minOccurs="0" maxOccurs="unbounded"/>
                     <element ref="oidcmd:TokenEndpointAuthMethod" minOccurs="0" maxOccurs="1"/> <!-- or unbounded? -->
                     <element ref="oidcmd:GrantType" minOccurs="0" maxOccurs="unbounded"/>
                     <element ref="oidcmd:ResponseType" minOccurs="0" maxOccurs="unbounded"/>
                     <element ref="oidcmd:ApplicationType" minOccurs="0" maxOccurs="1" />
                     <element ref="oidcmd:ClientUri" minOccurs="0" maxOccurs="1" /> <!-- TODO localized -->
                     <element ref="oidcmd:Scope" minOccurs="0" maxOccurs="unbounded" />
-                    <element ref="oidcmd:JwksUri" minOccurs="0" maxOccurs="1" />
                     <element ref="oidcmd:SoftwareId" minOccurs="0" maxOccurs="1" />
                     <element ref="oidcmd:SoftwareVersion" minOccurs="0" maxOccurs="1" />
                     <element ref="oidcmd:SectorIdentifierUri" minOccurs="0" maxOccurs="1" />
@@ -42,7 +39,6 @@
                 </sequence>
                 <attribute name="defaultMaxAge" type="int" use="optional" />
                 <attribute name="requireAuthTime" type="string" use="optional" />
-            </extension>
         </complexContent>
     </complexType>
 
@@ -54,7 +50,9 @@
 
     <element name="ClientUri" type="anyURI" />
     <element name="Scope" type="anyURI" />
-    <element name="JwksUri" type="anyURI" />
+    <element name="ClientSecret" type="anyURI" />
+    <element name="JwkSet" type="anyURI" />
+    <element name="JwkSetUri" type="anyURI" />
     <element name="SoftwareId" type="anyURI" />
     <element name="SoftwareVersion" type="anyURI" />
     <element name="SectorIdentifierUri" type="anyURI" />
@@ -74,11 +72,7 @@
     <element name="InitiateLoginUri" type="anyURI" />
     <element name="RequestUri" type="anyURI" />
     <element name="PostLogoutRedirectUri" type="anyURI" />
-
-    <complexType name="OIDCRPRoleDescriptorType">
-        <complexContent>
-            <extension base="oidcmd:OAuthRPRoleDescriptorType"/>
-        </complexContent>
-    </complexType>
+    
+    <element name="JwksData" type="anyURI" />
 
 </schema>
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretBuilder.java
new file mode 100644
index 00000000..814b3c03
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientSecret;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link ClientSecretImpl}.
+ */
+public class ClientSecretBuilder extends AbstractSAMLObjectBuilder<ClientSecret> {
+
+    /**
+     * Constructor.
+     */
+    public ClientSecretBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public ClientSecret buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, ClientSecret.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public ClientSecret buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new ClientSecretImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretImpl.java
similarity index 50%
copy from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
copy to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretImpl.java
index 20b22543..f5418f15 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretImpl.java
@@ -16,14 +16,21 @@
 
 package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
-
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientSecret;
 
 /**
- * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * Concrete implementation of {@link ClientSecret}.
  */
-public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+public class ClientSecretImpl extends AbstractMetadataValueSAMLObject implements ClientSecret {
 
-    //TODO
-}
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected ClientSecretImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretMarshaller.java
similarity index 68%
copy from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
copy to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretMarshaller.java
index 20b22543..614c5bbf 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretMarshaller.java
@@ -16,14 +16,11 @@
 
 package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
-
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientSecret;
 
 /**
- * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * A thread safe Marshaller for {@link ClientSecret} objects.
  */
-public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+public class ClientSecretMarshaller extends AbstractMetadataValueMarshaller<ClientSecret> {
 
-    //TODO
-}
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretUnmarshaller.java
similarity index 68%
copy from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
copy to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretUnmarshaller.java
index 20b22543..d9adaf4d 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientSecretUnmarshaller.java
@@ -16,14 +16,11 @@
 
 package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
-
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientSecret;
 
 /**
- * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * A thread-safe Unmarshaller for {@link ClientSecret} objects.
  */
-public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+public class ClientSecretUnmarshaller extends AbstractMetadataValueUnmarshaller<ClientSecret> {
 
-    //TODO
-}
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataBuilder.java
new file mode 100644
index 00000000..c34bfc44
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksData;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link JwksDataImpl}.
+ */
+public class JwksDataBuilder extends AbstractSAMLObjectBuilder<JwksData> {
+
+    /**
+     * Constructor.
+     */
+    public JwksDataBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public JwksData buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, JwksData.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public JwksData buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new JwksDataImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataImpl.java
similarity index 51%
copy from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
copy to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataImpl.java
index 20b22543..6c6698c3 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataImpl.java
@@ -16,14 +16,21 @@
 
 package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
-
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksData;
 
 /**
- * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * Concrete implementation of {@link JwksData}.
  */
-public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+public class JwksDataImpl extends AbstractMetadataValueSAMLObject implements JwksData {
 
-    //TODO
-}
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected JwksDataImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataMarshaller.java
similarity index 68%
copy from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
copy to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataMarshaller.java
index 20b22543..aaaf844b 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataMarshaller.java
@@ -16,14 +16,11 @@
 
 package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
-
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksData;
 
 /**
- * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * A thread safe Marshaller for {@link JwksData} objects.
  */
-public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+public class JwksDataMarshaller extends AbstractMetadataValueMarshaller<JwksData> {
 
-    //TODO
-}
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataUnmarshaller.java
similarity index 68%
copy from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
copy to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataUnmarshaller.java
index 20b22543..32b504bc 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksDataUnmarshaller.java
@@ -16,14 +16,11 @@
 
 package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
-
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksData;
 
 /**
- * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * A thread-safe Unmarshaller for {@link JwksData} objects.
  */
-public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+public class JwksDataUnmarshaller extends AbstractMetadataValueUnmarshaller<JwksData> {
 
-    //TODO
-}
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsBuilder.java
similarity index 64%
rename from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeBuilder.java
rename to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsBuilder.java
index 5892989a..91e8e093 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeBuilder.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsBuilder.java
@@ -19,30 +19,30 @@ package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
 
 import net.shibboleth.idp.saml.oidc.xmlobject.MetadataValueSAMLObject;
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPExtensions;
 
 /**
- * Builder of {@link OAuthRPRoleDescriptorTypeImpl} objects.
+ * Builder of {@link OAuthRPExtensions} objects.
  */
-public class OAuthRPRoleDescriptorTypeBuilder extends AbstractSAMLObjectBuilder<OAuthRPRoleDescriptorType> {
+public class OAuthRPExtensionsBuilder extends AbstractSAMLObjectBuilder<OAuthRPExtensions> {
 
     /** Constructor. */
-    public OAuthRPRoleDescriptorTypeBuilder() {
+    public OAuthRPExtensionsBuilder() {
 
     }
 
     /** {@inheritDoc} */
     @Override
-    public OAuthRPRoleDescriptorType buildObject() {
+    public OAuthRPExtensions buildObject() {
         return buildObject(MetadataValueSAMLObject.SAML20MDOIDCMD_NS,
-                OAuthRPRoleDescriptorType.DEFAULT_ELEMENT_LOCAL_NAME,
+                OAuthRPExtensions.TYPE_LOCAL_NAME,
                 MetadataValueSAMLObject.SAML20MDOIDCMD_PREFIX);
     }
 
     /** {@inheritDoc} */
     @Override
-    public OAuthRPRoleDescriptorType buildObject(final String namespaceURI, final String localName,
+    public OAuthRPExtensions buildObject(final String namespaceURI, final String localName,
             final String namespacePrefix) {
-        return new OAuthRPRoleDescriptorTypeImpl(namespaceURI, localName, namespacePrefix);
+        return new OAuthRPExtensionsImpl(namespaceURI, localName, namespacePrefix);
     }
 }
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsImpl.java
similarity index 97%
rename from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeImpl.java
rename to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsImpl.java
index 23bb6093..e1642429 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeImpl.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsImpl.java
@@ -21,6 +21,10 @@ import java.util.List;
 
 import javax.xml.namespace.QName;
 
+import org.opensaml.core.xml.util.XMLObjectChildrenList;
+import org.opensaml.saml.saml2.metadata.Endpoint;
+import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorImpl;
+
 import net.shibboleth.idp.saml.oidc.xmlobject.ApplicationType;
 import net.shibboleth.idp.saml.oidc.xmlobject.ClientUri;
 import net.shibboleth.idp.saml.oidc.xmlobject.DefaultAcrValue;
@@ -30,7 +34,7 @@ import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
 import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
 import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
 import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPExtensions;
 import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
 import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
 import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
@@ -49,14 +53,10 @@ import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseAlg;
 import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
 import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
 
-import org.opensaml.core.xml.util.XMLObjectChildrenList;
-import org.opensaml.saml.saml2.metadata.Endpoint;
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorImpl;
-
 /**
- * Implementation for {@link OAuthRPRoleDescriptorType}.
+ * Implementation for {@link OAuthRPExtensions}.
  */
-public class OAuthRPRoleDescriptorTypeImpl extends RoleDescriptorImpl implements OAuthRPRoleDescriptorType {
+public class OAuthRPExtensionsImpl extends RoleDescriptorImpl implements OAuthRPExtensions {
 
     /** Redirect URIs configured for this entity. */
     private final XMLObjectChildrenList<RedirectUri> redirectUris;
@@ -148,7 +148,7 @@ public class OAuthRPRoleDescriptorTypeImpl extends RoleDescriptorImpl implements
      * @param elementLocalName the local name of the XML element this Object represents
      * @param namespacePrefix the prefix for the given namespace
      */
-    protected OAuthRPRoleDescriptorTypeImpl(final String namespaceURI, final String elementLocalName,
+    protected OAuthRPExtensionsImpl(final String namespaceURI, final String elementLocalName,
             final String namespacePrefix) {
         super(namespaceURI, elementLocalName, namespacePrefix);
         redirectUris = new XMLObjectChildrenList<>(this);
@@ -171,10 +171,10 @@ public class OAuthRPRoleDescriptorTypeImpl extends RoleDescriptorImpl implements
     }
     
     /** {@inheritDoc} */
-	@Override
-	public List<RedirectUri> getRedirectUris() {
-		return redirectUris;
-	}
+    @Override
+    public List<RedirectUri> getRedirectUris() {
+        return redirectUris;
+    }
 
     /** {@inheritDoc} */
     @Override
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsMarshaller.java
similarity index 77%
rename from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
rename to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsMarshaller.java
index 20b22543..3faaf585 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsMarshaller.java
@@ -18,12 +18,10 @@ package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
 import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
 
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
-
 /**
- * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * Marshaller for {@link OAuthRPExtensions} objects.
  */
-public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+public class OAuthRPExtensionsMarshaller extends RoleDescriptorMarshaller {
 
     //TODO
 }
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsUnmarshaller.java
similarity index 89%
rename from idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeUnmarshaller.java
rename to idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsUnmarshaller.java
index 744dcd74..c7e30723 100644
--- a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeUnmarshaller.java
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPExtensionsUnmarshaller.java
@@ -18,7 +18,7 @@ package net.shibboleth.idp.saml.oidc.xmlobject.impl;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.UnmarshallingException;
-import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorUnmarshaller;
+import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
 import org.w3c.dom.Attr;
 
 import com.google.common.base.Strings;
@@ -32,7 +32,7 @@ import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
 import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
 import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
 import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
-import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPExtensions;
 import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
 import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
 import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
@@ -52,17 +52,17 @@ import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
 import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
 
 /**
- * Unmarshaller for {@link OAuthRPRoleDescriptorType} objects.
+ * Unmarshaller for {@link OAuthRPExtensions} objects.
  */
-public class OAuthRPRoleDescriptorTypeUnmarshaller extends RoleDescriptorUnmarshaller {
+public class OAuthRPExtensionsUnmarshaller extends AbstractSAMLObjectUnmarshaller {
 
     /** {@inheritDoc} */
     protected void processChildElement(final XMLObject parentSAMLObject, final XMLObject childSAMLObject)
             throws UnmarshallingException {
-        final OAuthRPRoleDescriptorType descriptor = (OAuthRPRoleDescriptorType) parentSAMLObject;
+        final OAuthRPExtensions descriptor = (OAuthRPExtensions) parentSAMLObject;
 
         if (childSAMLObject instanceof RedirectUri) {
-        	descriptor.getRedirectUris().add((RedirectUri) childSAMLObject);
+            descriptor.getRedirectUris().add((RedirectUri) childSAMLObject);
         } else if (childSAMLObject instanceof ResponseType) {
             descriptor.getResponseTypes().add((ResponseType) childSAMLObject);
         } else if (childSAMLObject instanceof GrantType) {
@@ -120,20 +120,20 @@ public class OAuthRPRoleDescriptorTypeUnmarshaller extends RoleDescriptorUnmarsh
     
     /** {@inheritDoc} */
     protected void processAttribute(final XMLObject samlObject, final Attr attribute) throws UnmarshallingException {
-        final OAuthRPRoleDescriptorType descriptor = (OAuthRPRoleDescriptorType) samlObject;
+        final OAuthRPExtensions descriptor = (OAuthRPExtensions) samlObject;
 
         if (attribute.getNamespaceURI() == null) {
-            if (attribute.getLocalName().equals(OAuthRPRoleDescriptorType.DEFAULT_MAX_AGE_ATTRIB_NAME)
+            if (attribute.getLocalName().equals(OAuthRPExtensions.DEFAULT_MAX_AGE_ATTRIB_NAME)
                     && !Strings.isNullOrEmpty(attribute.getValue())) {
                 descriptor.setDefaultMaxAge(Integer.parseInt(attribute.getValue()));
-            } else if (attribute.getLocalName().equals(OAuthRPRoleDescriptorType.REQUIRE_AUTH_TIME_ATTRIB_NAME)
+            } else if (attribute.getLocalName().equals(OAuthRPExtensions.REQUIRE_AUTH_TIME_ATTRIB_NAME)
                     && !Strings.isNullOrEmpty(attribute.getValue())) {
                 descriptor.setRequireAuthTime(Boolean.parseBoolean(attribute.getValue()));
             } else {
                 super.processAttribute(samlObject, attribute);
             }
         } else {
-            processUnknownAttribute(descriptor, attribute);
+
         }
     }
-}
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/resources/saml2-metadata-oidcmd-config.xml b/idp-oidc-extension-impl/src/main/resources/saml2-metadata-oidcmd-config.xml
index f174d5ad..8fd87d01 100644
--- a/idp-oidc-extension-impl/src/main/resources/saml2-metadata-oidcmd-config.xml
+++ b/idp-oidc-extension-impl/src/main/resources/saml2-metadata-oidcmd-config.xml
@@ -10,6 +10,12 @@
             <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ApplicationTypeUnmarshaller"/>
         </ObjectProvider>
 
+        <ObjectProvider qualifiedName="oidcmd:ClientSecret">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientSecretBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientSecretMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientSecretUnmarshaller"/>
+        </ObjectProvider>
+
         <ObjectProvider qualifiedName="oidcmd:ClientUri">
             <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientUriBuilder"/>
             <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientUriMarshaller"/>
@@ -52,16 +58,22 @@
             <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.InitiateLoginUriUnmarshaller"/>
         </ObjectProvider>
         
+        <ObjectProvider qualifiedName="oidcmd:JwksData">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksDataBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksDataMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksDataUnmarshaller"/>
+        </ObjectProvider>
+        
         <ObjectProvider qualifiedName="oidcmd:JwksUri">
             <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksUriBuilder"/>
             <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksUriMarshaller"/>
             <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksUriUnmarshaller"/>
         </ObjectProvider>
         
-        <ObjectProvider qualifiedName="oidcmd:OAuthRPRoleDescriptorType">
-            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPRoleDescriptorTypeBuilder"/>
-            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPRoleDescriptorTypeMarshaller"/>
-            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPRoleDescriptorTypeUnmarshaller"/>
+        <ObjectProvider qualifiedName="oidcmd:OAuthRPExtensions">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPExtensionsBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPExtensionsMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPExtensionsUnmarshaller"/>
         </ObjectProvider>
         
         <ObjectProvider qualifiedName="oidcmd:PostLogoutRedirectUri">
diff --git a/idp-oidc-extension-impl/src/test/resources/org/geant/idpextension/oidc/metadata/impl/EntitiesDescriptor-with-oidcmd.xml b/idp-oidc-extension-impl/src/test/resources/org/geant/idpextension/oidc/metadata/impl/EntitiesDescriptor-with-oidcmd.xml
index c3304734..ef0a2153 100644
--- a/idp-oidc-extension-impl/src/test/resources/org/geant/idpextension/oidc/metadata/impl/EntitiesDescriptor-with-oidcmd.xml
+++ b/idp-oidc-extension-impl/src/test/resources/org/geant/idpextension/oidc/metadata/impl/EntitiesDescriptor-with-oidcmd.xml
@@ -3,82 +3,114 @@
 
     <md:EntityDescriptor entityID="mockSamlClientId">
 
-        <md:RoleDescriptor xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0"
-                           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                           xsi:type="oidcmd:OAuthRPRoleDescriptorType"
-                           protocolSupportEnumeration="http://openid.net/specs/openid-connect-core-1_0.html"
-                           defaultMaxAge="123"
-                           requireAuthTime="true">
-        <md:KeyDescriptor use="signing">
-            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+        <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 use="signing">
+                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                     <ds:X509Data>
                         <ds:X509Certificate>
-MIIEQDCCAqigAwIBAgIVAIarXvdvyS47KJR7U40FlTufyD8vMA0GCSqGSIb3DQEB
-CwUAMCAxHjAcBgNVBAMMFWxvY2FsaG9zdC5sb2NhbGRvbWFpbjAeFw0xOTA2MTcx
-MTI5MTJaFw0zOTA2MTcxMTI5MTJaMCAxHjAcBgNVBAMMFWxvY2FsaG9zdC5sb2Nh
-bGRvbWFpbjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALXysGFnoBFh
-oasd5uMecp9OTBjvztntPUVmHfm4R3AcItEMEZEN/pETcX/wgKdo4qCBq4PrZITa
-T8Salgl0XL6qF1Wia3JNA7Hh/OaoQEUsbsHgsjLMKt6MJh8vIaE1o8loL7Ay4WmZ
-Cr3wc8ZS6CpMsv+qbxkyfl1h7MTydETnQhg/X83bj+BjJSh7QeFU0d0SWK1dN2/D
-nFoGOfuTfVqeDRIwMxKlR5G//8N202sLaG28NljaHhLn3jHXeiGpCQ+Q2X90dkFb
-EKb6sQ6SlDUAzm9MwLYjglDyOhXpUqOnvD67nggLb4Gn/4k+g5wtdfr7unOJYcHK
-w7JGnI8Gd0lJMd6B3SpkhUOWgKv/D6HIBArhqSEmXuTyy8FewyYuo1XkIw/Lu3bB
-9qoBojM1tygoGlKi7R7e719J+DSkhyGbMyQ59leoN97iGGgqjUWS5mew8zSNviyz
-4uGqvxmLWU9UTH1YhlARsBF1bMiMnwLz7dF74AaAkC4pN3BYzDMyHQIDAQABo3Ew
-bzAdBgNVHQ4EFgQUwKUd9D1Qymu2oBEVTscrAhP+sIUwTgYDVR0RBEcwRYIVbG9j
-YWxob3N0LmxvY2FsZG9tYWluhixodHRwczovL2xvY2FsaG9zdC5sb2NhbGRvbWFp
-bi9pZHAvc2hpYmJvbGV0aDANBgkqhkiG9w0BAQsFAAOCAYEAEYqh54a+j5OuR1UB
-/AT9k2xXVwHiqQXAC/2un8O5BWAOeOq9+0gLJO5yaJp5c9GjPXRJmnDfGP9HFF6R
-CjngtRCm1gV/fpj97IRQS5oroaeTWPQ9ZD5+ogs5DNt6UZeJ2GqpfA5mOytNg3cM
-OP1B5QnA1apOaG4FHTegJR7WOIXkkAjEJUy6R+5Q6At7DdK/SRrP5onVPFv2HgGF
-E9v9iX/uQepDizS5F2oi6LZCl1/b38gxA8BFL7VZu53JQguaA7SrnP+dBOErT/yh
-Qcx3e9wE2ms8H1qISIdl3e7gvLi5jEyDWC9Agde6EjjvVVJAF7jR0puQ39mBfoxP
-moVdHJQmCt3V7Ew9tYZUpG3rjp4YNXOiM+QhtwhHWT94q9uJKUQ6JvbxgLNDs5KM
-3PENx2C60TPFne9nRRIMVDavU4wwY7GdCgeo8PiZ5zxI0ZCkxh38ODePtKQrxJ7i
-E0J1BE2LIxa1T7KY0XKpsH0iI2dNfZfNpNp4v/HiDb4svYgq
-                        </ds:X509Certificate>
+                            MIIEQDCCAqigAwIBAgIVAIarXvdvyS47KJR7U40FlTufyD8vMA0GCSqGSIb3DQEB
+                            CwUAMCAxHjAcBgNVBAMMFWxvY2FsaG9zdC5sb2NhbGRvbWFpbjAeFw0xOTA2MTcx
+                            MTI5MTJaFw0zOTA2MTcxMTI5MTJaMCAxHjAcBgNVBAMMFWxvY2FsaG9zdC5sb2Nh
+                            bGRvbWFpbjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALXysGFnoBFh
+                            oasd5uMecp9OTBjvztntPUVmHfm4R3AcItEMEZEN/pETcX/wgKdo4qCBq4PrZITa
+                            T8Salgl0XL6qF1Wia3JNA7Hh/OaoQEUsbsHgsjLMKt6MJh8vIaE1o8loL7Ay4WmZ
+                            Cr3wc8ZS6CpMsv+qbxkyfl1h7MTydETnQhg/X83bj+BjJSh7QeFU0d0SWK1dN2/D
+                            nFoGOfuTfVqeDRIwMxKlR5G//8N202sLaG28NljaHhLn3jHXeiGpCQ+Q2X90dkFb
+                            EKb6sQ6SlDUAzm9MwLYjglDyOhXpUqOnvD67nggLb4Gn/4k+g5wtdfr7unOJYcHK
+                            w7JGnI8Gd0lJMd6B3SpkhUOWgKv/D6HIBArhqSEmXuTyy8FewyYuo1XkIw/Lu3bB
+                            9qoBojM1tygoGlKi7R7e719J+DSkhyGbMyQ59leoN97iGGgqjUWS5mew8zSNviyz
+                            4uGqvxmLWU9UTH1YhlARsBF1bMiMnwLz7dF74AaAkC4pN3BYzDMyHQIDAQABo3Ew
+                            bzAdBgNVHQ4EFgQUwKUd9D1Qymu2oBEVTscrAhP+sIUwTgYDVR0RBEcwRYIVbG9j
+                            YWxob3N0LmxvY2FsZG9tYWluhixodHRwczovL2xvY2FsaG9zdC5sb2NhbGRvbWFp
+                            bi9pZHAvc2hpYmJvbGV0aDANBgkqhkiG9w0BAQsFAAOCAYEAEYqh54a+j5OuR1UB
+                            /AT9k2xXVwHiqQXAC/2un8O5BWAOeOq9+0gLJO5yaJp5c9GjPXRJmnDfGP9HFF6R
+                            CjngtRCm1gV/fpj97IRQS5oroaeTWPQ9ZD5+ogs5DNt6UZeJ2GqpfA5mOytNg3cM
+                            OP1B5QnA1apOaG4FHTegJR7WOIXkkAjEJUy6R+5Q6At7DdK/SRrP5onVPFv2HgGF
+                            E9v9iX/uQepDizS5F2oi6LZCl1/b38gxA8BFL7VZu53JQguaA7SrnP+dBOErT/yh
+                            Qcx3e9wE2ms8H1qISIdl3e7gvLi5jEyDWC9Agde6EjjvVVJAF7jR0puQ39mBfoxP
+                            moVdHJQmCt3V7Ew9tYZUpG3rjp4YNXOiM+QhtwhHWT94q9uJKUQ6JvbxgLNDs5KM
+                            3PENx2C60TPFne9nRRIMVDavU4wwY7GdCgeo8PiZ5zxI0ZCkxh38ODePtKQrxJ7i
+                            E0J1BE2LIxa1T7KY0XKpsH0iI2dNfZfNpNp4v/HiDb4svYgq</ds:X509Certificate>
                     </ds:X509Data>
-            </ds:KeyInfo>
-        </md:KeyDescriptor>
-        <md:KeyDescriptor use="signing">
-            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                </ds:KeyInfo>
+            </md:KeyDescriptor>
+            <md:KeyDescriptor use="signing">
+                <ds:KeyInfo
+                    xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                     <ds:X509Data>
                         <ds:X509Certificate>
-MIIBKDCBzgIJAOYlspXlaqguMAoGCCqGSM49BAMCMBwxCzAJBgNVBAYTAkZJMQ0w
-CwYDVQQDDAR0ZXN0MB4XDTE5MTEwMTA4Mjg0OVoXDTIwMTAzMTA4Mjg0OVowHDEL
-MAkGA1UEBhMCRkkxDTALBgNVBAMMBHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMB
-BwNCAARCUOlFMtRj3MIbdCzXmoGz4giDwjzPoX4AxMehhlXmPOodQhLDdvDqx3KE
-hqadzIIsKHRQPDycscpHWpPbaQ2VMAoGCCqGSM49BAMCA0kAMEYCIQCVykSuUjlX
-j4lxI6YqgYVuuhL2rG4hIrXw/pCey7eF2gIhAOSSaS025lQWy09W4NlnO28OkHoI
-+Hbap7+DQlhbbr2d
-                        </ds:X509Certificate>
+                            MIIBKDCBzgIJAOYlspXlaqguMAoGCCqGSM49BAMCMBwxCzAJBgNVBAYTAkZJMQ0w
+                            CwYDVQQDDAR0ZXN0MB4XDTE5MTEwMTA4Mjg0OVoXDTIwMTAzMTA4Mjg0OVowHDEL
+                            MAkGA1UEBhMCRkkxDTALBgNVBAMMBHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMB
+                            BwNCAARCUOlFMtRj3MIbdCzXmoGz4giDwjzPoX4AxMehhlXmPOodQhLDdvDqx3KE
+                            hqadzIIsKHRQPDycscpHWpPbaQ2VMAoGCCqGSM49BAMCA0kAMEYCIQCVykSuUjlX
+                            j4lxI6YqgYVuuhL2rG4hIrXw/pCey7eF2gIhAOSSaS025lQWy09W4NlnO28OkHoI
+                            +Hbap7+DQlhbbr2d</ds:X509Certificate>
                     </ds:X509Data>
-            </ds:KeyInfo>
-        </md:KeyDescriptor>
-        <md:KeyDescriptor use="encryption">
-            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
-                    <ds:X509Data>
-                        <ds:X509Certificate>
-MIIBKDCBzgIJAOYlspXlaqguMAoGCCqGSM49BAMCMBwxCzAJBgNVBAYTAkZJMQ0w
-CwYDVQQDDAR0ZXN0MB4XDTE5MTEwMTA4Mjg0OVoXDTIwMTAzMTA4Mjg0OVowHDEL
-MAkGA1UEBhMCRkkxDTALBgNVBAMMBHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMB
-BwNCAARCUOlFMtRj3MIbdCzXmoGz4giDwjzPoX4AxMehhlXmPOodQhLDdvDqx3KE
-hqadzIIsKHRQPDycscpHWpPbaQ2VMAoGCCqGSM49BAMCA0kAMEYCIQCVykSuUjlX
-j4lxI6YqgYVuuhL2rG4hIrXw/pCey7eF2gIhAOSSaS025lQWy09W4NlnO28OkHoI
-+Hbap7+DQlhbbr2d
-                        </ds:X509Certificate>
-                    </ds:X509Data>
-            </ds:KeyInfo>
-        </md:KeyDescriptor>
-            <oidcmd:RedirectUri>https://example.org/cb</oidcmd:RedirectUri>
-            <oidcmd:RedirectUri>https://example.org/cb2</oidcmd:RedirectUri>
-            <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>
-        </md:RoleDescriptor>
+                </ds:KeyInfo>
+            </md:KeyDescriptor>
+            <md:KeyDescriptor use="signing">
+                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:KeyName>Foo</ds:KeyName>
+                    <ds:KeyValue>
+                        <ds:RSAKeyValue>
+                            <ds:Modulus>
+                                AMP1p7GwPH64UPvBKD4DK0I6SDY7dtFPzL7L5qAIEJwIBBeDmLfVY/f9mLzDuDb19XzQxc6GEcjj
+                                K8qRe7JAD3CE1IXXD0hKSOJ7H+chWS84iv7UNukbHHBO1oaRgfHh7vbX7HnpYMoqKK75rfiQqD9e
+                                XOa2FLiH1QvnhLGKJcN+OKujetTgAhxE7ski9Gtfhhbt1qCEl7XtaUCLLexyrwWxx+NRxFgMU+nt
+                                IZQ+T8ii+JQSWnRh14PGc+K9o1dp+vjse62hFprVQhhcbAKAkWpbup77NvvuTZ2+AtUhOuNHrH2I
+                                X3jHeSWH7EzTGkPLGS6bFnYJQBqWv0POytfSyMM=</ds:Modulus>
+                            <ds:Exponent>AQAB</ds:Exponent>
+                        </ds:RSAKeyValue>
+                    </ds:KeyValue>
+                </ds:KeyInfo>
+            </md:KeyDescriptor>
+            <md:KeyDescriptor use="signing">
+                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:KeyName>mockJwkId</ds:KeyName>
+                    <oidcmd:JwksData>
+                        ewogICJrdHkiOiAiUlNBIiwKICAiZSI6ICJBUUFCIiwKICAia2lkIjogIm1vY2siLAogICJhbGci
+                        OiAiUlMyNTYiLAogICJuIjogInBKcHRScnpyRlhEUnBaWkdpRmc1eW9KeVRPMlphUENSNEcwbjEx
+                        aUVSclBTdlVYX202Qmdvak5qVEZISk1pa19pbGhtVzY0Q3JLdGlMdklRTFF6VWV5RXdDZHdYZVB3
+                        UVpNeEV4VDJPV2thQy1DV0ZJNHR4X2VFWGRkUGtja1NMRERhMEVQd3dzWktQUFhoRTNWNTBfZ3pW
+                        VDJZQVRvRE9fMmoyeGpWcHFzU0dFc0xpYjZqLW52dFpVVV9CMHNHeUppR1ZzMkpUTmhCTVNrT2tR
+                        Zks2NkNCcW1sbzBuUE5NYVIxbWl2dG5JUG1aNnJKVHcwUDVZZ0dFS1hmZjBsa25Ib25ZVmRsVktw
+                        c0Q4VW5hY0JzdFlyeUhsM0NQR2Uyc3RmR2ExZ3N6NEdIVGVfRnlWVk04UlNoQ2dYVVo3MTdoenpf
+                        ekdQaVhDQkw0ZktEek5ZUXpIUSIKfQo=</oidcmd:JwksData>
+                </ds:KeyInfo>
+            </md:KeyDescriptor>
+            <md:KeyDescriptor>
+                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:KeyName>mockJwksUri</ds:KeyName>
+                    <oidcmd:JwksUri>https://example.org/jwks</oidcmd:JwksUri>
+                </ds:KeyInfo>
+            </md:KeyDescriptor>
+            <md:KeyDescriptor>
+                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:KeyName>mockClientSecret</ds:KeyName>
+                    <oidcmd:ClientSecret>mockClientSecretValue</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:AssertionConsumerService
+                    Binding="http://csc.fi/ns/profiles/oidc/sso/browser"
+                    Location="https://example.org/cb2"
+                    index="2"/>
+             <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