[java-idp-plugin-duo] branch main updated: Aligning configuration naming, and adding IdPModule with default config.

Scott Cantor cantor.2 at osu.edu
Tue Oct 6 14:53:51 UTC 2020


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-idp-plugin-duo.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-duo.git;a=commit;h=3bb1aa2e34e10cdf2a98a5722ebc593bac814f81

The following commit(s) were added to refs/heads/main by this push:
       new  3bb1aa2   Aligning configuration naming, and adding IdPModule with default config.
3bb1aa2 is described below

commit 3bb1aa2e34e10cdf2a98a5722ebc593bac814f81
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Oct 6 10:53:48 2020 -0400

    Aligning configuration naming, and adding IdPModule with default config.
---
 idp-duo-impl/pom.xml                               |  7 ++++
 .../idp/plugin/authn/duo/DuoOIDCModule.java        | 20 +++++++++
 .../META-INF/net.shibboleth.idp/postconfig.xml     | 26 ++++++------
 .../flows/authn/DuoOIDC/duo-oidc-authn-beans.xml   | 47 ++++++++++------------
 .../services/net.shibboleth.idp.module.IdPModule   |  1 +
 .../idp/plugin/authn/duo/module.properties         | 12 ++++++
 .../module/conf/authn/duo-oidc-authn-config.xml}   | 22 +++++++---
 .../duo/module/conf/authn/duo-oidc.properties      | 13 ++++++
 .../authn/duo-oidc-authn-config-custom-factory.xml |  2 +-
 ...duo-oidc-authn-config-multiple-integrations.xml |  2 +-
 idp-duo-native-client-impl/.classpath              |  4 +-
 .../plugin/authn/duo}/duo-client-factory-bean.xml  |  6 +--
 .../.classpath                                     |  5 +++
 idp-duo-nimbus-client-impl/.project                | 23 +++++++++++
 .../.settings/org.eclipse.core.resources.prefs     |  5 +++
 .../.settings/org.eclipse.jdt.core.prefs           |  8 ++++
 .../.settings/org.eclipse.m2e.core.prefs           |  4 ++
 .../plugin/authn/duo}/duo-client-factory-bean.xml  | 16 ++++----
 18 files changed, 164 insertions(+), 59 deletions(-)

diff --git a/idp-duo-impl/pom.xml b/idp-duo-impl/pom.xml
index 864a834..01bada9 100644
--- a/idp-duo-impl/pom.xml
+++ b/idp-duo-impl/pom.xml
@@ -98,6 +98,13 @@
             <scope>provided</scope>
         </dependency>
 
+        <!-- Needed for module/plugin impls. -->
+        <dependency>
+            <groupId>${idp.groupId}</groupId>
+            <artifactId>idp-admin-impl</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
         <!-- Test Dependencies -->
         <dependency>
             <groupId>${spring.groupId}</groupId>
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCModule.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCModule.java
new file mode 100644
index 0000000..d03c3af
--- /dev/null
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/DuoOIDCModule.java
@@ -0,0 +1,20 @@
+package net.shibboleth.idp.plugin.authn.duo;
+
+import java.io.IOException;
+
+import net.shibboleth.idp.module.ModuleException;
+import net.shibboleth.idp.module.impl.PluginIdPModule;
+
+public class DuoOIDCModule extends PluginIdPModule {
+
+    /**
+     * Constructor.
+     * 
+     * @throws IOException if the property file cannot be loaded
+     * @throws ModuleException if other errors occur
+     */
+    public DuoOIDCModule() throws IOException, ModuleException {
+        super(DuoOIDCModule.class);
+    }
+    
+}
\ No newline at end of file
diff --git a/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml b/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
index c7a1c73..f034656 100644
--- a/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
+++ b/idp-duo-impl/src/main/resources/META-INF/net.shibboleth.idp/postconfig.xml
@@ -13,20 +13,20 @@
 
     <!-- Authentication Flow Descriptor -->
    <bean id="authn/DuoOIDC" parent="shibboleth.AuthenticationFlow"
-            p:order="%{idp.authn.Duo.OIDC.order:1000}"
-            p:nonBrowserSupported="%{idp.authn.Duo.OIDC.nonBrowserSupported:false}"
-            p:passiveAuthenticationSupported="%{idp.authn.Duo.OIDC.passiveAuthenticationSupported:false}"
-            p:forcedAuthenticationSupported="%{idp.authn.Duo.OIDC.forcedAuthenticationSupported:true}"
-            p:proxyRestrictionsEnforced="%{idp.authn.Duo.OIDC.proxyRestrictionsEnforced:%{idp.authn.enforceProxyRestrictions:true}}"
-            p:proxyScopingEnforced="%{idp.authn.Duo.OIDC.proxyScopingEnforced:false}"
-            p:discoveryRequired="%{idp.authn.Duo.OIDC.discoveryRequired:false}"
-            p:lifetime="%{idp.authn.Duo.OIDC.lifetime:%{idp.authn.defaultLifetime:PT1H}}"
-            p:inactivityTimeout="%{idp.authn.Duo.OIDC.inactivityTimeout:%{idp.authn.defaultTimeout:PT30M}}"
-            p:reuseCondition-ref="#{'%{idp.authn.Duo.OIDC.reuseCondition:shibboleth.Conditions.TRUE}'.trim()}"
-            p:activationCondition-ref="#{'%{idp.authn.Duo.OIDC.activationCondition:shibboleth.Conditions.TRUE}'.trim()}">
+            p:order="%{idp.authn.DuoOIDC.order:1000}"
+            p:nonBrowserSupported="%{idp.authn.DuoOIDC.nonBrowserSupported:false}"
+            p:passiveAuthenticationSupported="%{idp.authn.DuoOIDC.passiveAuthenticationSupported:false}"
+            p:forcedAuthenticationSupported="%{idp.authn.DuoOIDC.forcedAuthenticationSupported:true}"
+            p:proxyRestrictionsEnforced="%{idp.authn.DuoOIDC.proxyRestrictionsEnforced:%{idp.authn.enforceProxyRestrictions:true}}"
+            p:proxyScopingEnforced="%{idp.authn.DuoOIDC.proxyScopingEnforced:false}"
+            p:discoveryRequired="%{idp.authn.DuoOIDC.discoveryRequired:false}"
+            p:lifetime="%{idp.authn.DuoOIDC.lifetime:%{idp.authn.defaultLifetime:PT1H}}"
+            p:inactivityTimeout="%{idp.authn.DuoOIDC.inactivityTimeout:%{idp.authn.defaultTimeout:PT30M}}"
+            p:reuseCondition-ref="#{'%{idp.authn.DuoOIDC.reuseCondition:shibboleth.Conditions.TRUE}'.trim()}"
+            p:activationCondition-ref="#{'%{idp.authn.DuoOIDC.activationCondition:shibboleth.Conditions.TRUE}'.trim()}">
         <property name="supportedPrincipalsByString">
             <bean parent="shibboleth.CommaDelimStringArray"
-                c:_0="#{'%{idp.authn.Duo.OIDC.supportedPrincipals:}'.trim()}" />
+                c:_0="#{'%{idp.authn.DuoOIDC.supportedPrincipals:%{idp.authn.Duo.supportedPrincipals}}'.trim()}" />
         </property>
     </bean>
 
@@ -34,6 +34,4 @@
     <bean id="shibboleth.DuoOIDCAuthnController"
         class="net.shibboleth.idp.plugin.authn.duo.impl.DuoOIDCAuthnController" />
 
-
-
 </beans>
\ No newline at end of file
diff --git a/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml b/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
index 4c027bb..e952ca9 100644
--- a/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
+++ b/idp-duo-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/authn/DuoOIDC/duo-oidc-authn-beans.xml
@@ -16,51 +16,49 @@
     <bean class="net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor" />
     <bean class="net.shibboleth.idp.profile.impl.ProfileActionBeanPostProcessor" />
 
-    <bean id="shibboleth.authn.duo.OIDC.externalAuthnPath" class="java.lang.String"
-        c:_0="servletRelative:%{idp.authn.duo.OIDC.externalAuthnPath:/Authn/Duo/2FA/}" />
+    <bean id="shibboleth.authn.DuoOIDC.externalAuthnPath" class="java.lang.String"
+        c:_0="servletRelative:%{idp.authn.DuoOIDC.externalAuthnPath:/Authn/Duo/2FA/}" />
 
     <!-- Default strategy function to obtain the external path. -->
-    <bean id="shibboleth.authn.duo.OIDC.externalAuthnPathStrategy" parent="shibboleth.Functions.Constant"
-        c:target-ref="shibboleth.authn.duo.OIDC.externalAuthnPath" />
+    <bean id="shibboleth.authn.DuoOIDC.externalAuthnPathStrategy" parent="shibboleth.Functions.Constant"
+        c:target-ref="shibboleth.authn.DuoOIDC.externalAuthnPath" />
 
     <!-- Default Duo Integration -->
-    <bean id="shibboleth.authn.duo.OIDC.DuoIntegration"
+    <bean id="shibboleth.authn.DuoOIDC.DuoIntegration"
         class="net.shibboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration" p:APIHost="%{idp.duo.oidc.apiHost:none}"
         p:clientId="%{idp.duo.oidc.clientId:none}" p:secretKey="%{idp.duo.oidc.secretKey:none}"
-        p:redirectURI="%{idp.duo.oidc.redirectUri:none}" 
+        p:redirectURI="%{idp.duo.oidc.redirectURL:none}" 
         p:healthCheckEndpoint="%{idp.duo.oidc.endpoint.health:/oauth/v1/health_check}"
         p:tokenEndpoint="%{idp.duo.oidc.endpoint.token:/oauth/v1/token}"
         p:authorizeEndpoint="%{idp.duo.oidc.endpoint.authorize:/oauth/v1/authorize}"
         />
-    <bean id="shibboleth.authn.duo.OIDC.DuoIntegrationStrategy" parent="shibboleth.Functions.Constant"
-        c:target-ref="shibboleth.authn.duo.OIDC.DuoIntegration" />
+    <bean id="shibboleth.authn.DuoOIDC.DuoIntegrationStrategy" parent="shibboleth.Functions.Constant"
+        c:target-ref="shibboleth.authn.DuoOIDC.DuoIntegration" />
 
     <!-- Default username comes from previous c14n or session. -->
-    <bean id="shibboleth.authn.duo.OIDC.UsernameLookupStrategy"
+    <bean id="shibboleth.authn.DuoOIDC.UsernameLookupStrategy"
         class="net.shibboleth.idp.session.context.navigate.CanonicalUsernameLookupStrategy" />
 
     <!-- Duo Client factory and bean registry -->
-    <bean id="shibboleth.authn.duo.OIDC.clientRegistry" scope="singleton"
+    <bean id="shibboleth.authn.DuoOIDC.clientRegistry" scope="singleton"
         class="net.shibboleth.idp.plugin.authn.duo.impl.DefaultDuoOIDCClientRegistry"
-        p:clientFactory-ref="%{idp.duo.oidc.clientFactoryBean:shibboleth.authn.duo.OIDC.native.sdk.clientFactory}" />
+        p:clientFactory-ref="%{idp.duo.oidc.clientFactoryBean:shibboleth.authn.DuoOIDC.native.sdk.clientFactory}" />
 
     <!-- Load all (or none) factory bean definitions from the classpath. The actual factory bean to use is defined in the
     client registry and overridable by the property idp.duo.oidc.clientFactoryBean -->
-    <import resource="classpath*:duo-client-factory-bean.xml" />
+    <import resource="classpath*:/net/shibboleth/idp/plugin/authn/duo/duo-client-factory-bean.xml" />
 
     <!-- Can override one or more of the beans above. Note, the property override is mostly to allow tests
     to change the location of the user config file. -->
     <!--  FIXME: Add this back in as conditional import-->
-    <import resource="conditional:%{idp.home}%{idp.duo.oidc.user.config.home:/conf/authn/duo-authn-config.xml}" />
-
-    
+    <import resource="conditional:%{idp.home}%{idp.duo.oidc.user.config.home:/conf/authn/duo-oidc-authn-config.xml}" />
 
     <!-- Prototype per conversation beans -->
     <bean id="PopulateDuoAuthenticationContext" scope="prototype"
         class="net.shibboleth.idp.plugin.authn.duo.impl.PopulateDuoAuthenticationContext"
-        p:duoIntegrationLookupStrategy-ref="shibboleth.authn.duo.OIDC.DuoIntegrationStrategy"
-        p:usernameLookupStrategy-ref="shibboleth.authn.duo.OIDC.UsernameLookupStrategy"
-        p:clientRegistry-ref="shibboleth.authn.duo.OIDC.clientRegistry" />
+        p:duoIntegrationLookupStrategy-ref="shibboleth.authn.DuoOIDC.DuoIntegrationStrategy"
+        p:usernameLookupStrategy-ref="shibboleth.authn.DuoOIDC.UsernameLookupStrategy"
+        p:clientRegistry-ref="shibboleth.authn.DuoOIDC.clientRegistry" />
 
     <bean id="HealthCheckDuoOIDCAuthAPI" scope="prototype"
         class="net.shibboleth.idp.plugin.authn.duo.impl.HealthCheckDuoOIDCAuthAPI" />
@@ -74,21 +72,20 @@
     <bean id="ValidateTokenClaims" scope="prototype"
         class="net.shibboleth.idp.plugin.authn.duo.impl.ValidateTokenClaims" />
 
-
     <bean id="ExchangeCodeForDuoToken" scope="prototype"
         class="net.shibboleth.idp.plugin.authn.duo.impl.ExchangeCodeForDuoToken" />
 
     <bean id="ValidateDuoTokenAuthenticationResult" scope="prototype"
         class="net.shibboleth.idp.plugin.authn.duo.impl.ValidateDuoTokenAuthenticationResult"        
-        p:classifiedMessages="#{getObject('shibboleth.authn.duo.OIDC.ClassifiedMessageMap') ?: getObject('shibboleth.authn.duo.OIDC.DefaultClassifiedMessageMap')}"
-        p:resultCachingPredicate="#{getObject('shibboleth.authn.duo.OIDC.resultCachingPredicate')}"
-        p:cleanupHook="#{getObject('shibboleth.authn.duo.OIDC.CleanUpHook')}"
-        p:contextToPrincipalMappingStrategy="#{getObject('shibboleth.authn.duo.OIDC.ContextToPrincipalMappingStrategy')}" 
-        p:addDefaultPrincipals="#{getObject('shibboleth.authn.duo.OIDC.ContextToPrincipalMappingStrategy') == null}"/>
+        p:classifiedMessages="#{getObject('shibboleth.authn.DuoOIDC.ClassifiedMessageMap') ?: getObject('shibboleth.authn.DuoOIDC.DefaultClassifiedMessageMap')}"
+        p:resultCachingPredicate="#{getObject('shibboleth.authn.DuoOIDC.resultCachingPredicate')}"
+        p:cleanupHook="#{getObject('shibboleth.authn.DuoOIDC.CleanUpHook')}"
+        p:contextToPrincipalMappingStrategy="#{getObject('shibboleth.authn.DuoOIDC.ContextToPrincipalMappingStrategy')}" 
+        p:addDefaultPrincipals="#{getObject('shibboleth.authn.DuoOIDC.ContextToPrincipalMappingStrategy') == null}"/>
 
 
     <!-- TODO may not be the correct values for the new API -->
-    <util:map id="shibboleth.authn.duo.OIDC.DefaultClassifiedMessageMap">
+    <util:map id="shibboleth.authn.DuoOIDC.DefaultClassifiedMessageMap">
         <entry key="AccountLocked">
             <list>
                 <value>locked_out</value>
diff --git a/idp-duo-impl/src/main/resources/META-INF/services/net.shibboleth.idp.module.IdPModule b/idp-duo-impl/src/main/resources/META-INF/services/net.shibboleth.idp.module.IdPModule
new file mode 100644
index 0000000..1bd79be
--- /dev/null
+++ b/idp-duo-impl/src/main/resources/META-INF/services/net.shibboleth.idp.module.IdPModule
@@ -0,0 +1 @@
+net.shibboleth.idp.plugin.authn.duo.DuoOIDCModule
diff --git a/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module.properties b/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module.properties
new file mode 100644
index 0000000..a8d3a2a
--- /dev/null
+++ b/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module.properties
@@ -0,0 +1,12 @@
+# Properties defining plugin module(s)
+
+# Class to Module ID mappings
+net.shibboleth.idp.plugin.authn.duo.DuoOIDCModule = idp.authn.DuoOIDC
+
+idp.authn.Duo.name = Duo "Universal Prompt" OIDC-based Authentication
+idp.authn.Duo.desc = Login flow for Duo Security's second-factor authentication service using the OIDC-based Universal Prompt
+idp.authn.Duo.url = /DuoOIDCAuthnConfiguration
+idp.authn.Duo.1.src = /net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc-authn-config.xml
+idp.authn.Duo.1.dest = conf/authn/duo-oidc-authn-config.xml
+idp.authn.Duo.2.src = /net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc.properties
+idp.authn.Duo.2.dest = conf/authn/duo-oidc.properties
diff --git a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-custom-factory.xml b/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc-authn-config.xml
similarity index 50%
copy from idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-custom-factory.xml
copy to idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc-authn-config.xml
index 4a2969f..5aa4f3e 100644
--- a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-custom-factory.xml
+++ b/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc-authn-config.xml
@@ -7,12 +7,22 @@
                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
 
     default-init-method="initialize" default-destroy-method="destroy">
-    
-    <!-- Add a custom Duo client factory in the same way a user would-->
-    
-    <bean id="shibboleth.authn.duo.OIDC.test.clientFactory"
-        class="net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClientFactory_OK_Client" scope="singleton">
-    </bean>
 
+    <!--
+    By default, the DuoOIDC flow will use statically-defined integrations defined via
+    properties. If you need more flexibility, you can define a function bean
+    called "shibboleth.authn.DuoOIDC.DuoIntegrationStrategy" to return an instance of
+    net.shibboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration based on the state
+    of the request.
+
+    The Duo flow is designed to operate in conjunction with some other login flow,
+    usually orchestrated by the MFA login flow. It obtains the username to send to
+    Duo based on the output of the other login flow or a previous session with the
+    user. You can override that approach using a function bean called
+    "shibboleth.authn.DuoOIDC.UsernameLookupStrategy" to supply the username from a
+    different source.
+    
+    Various other beans are supported, per the documentation.
+    -->
 
 </beans>
diff --git a/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc.properties b/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc.properties
new file mode 100644
index 0000000..e7eea13
--- /dev/null
+++ b/idp-duo-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/module/conf/authn/duo-oidc.properties
@@ -0,0 +1,13 @@
+## DuoOIDC default integration settings
+
+#idp.duo.oidc.endpoint.health = /oauth/v1/health_check
+#idp.duo.oidc.endpoint.token = /oauth/v1/token
+#idp.duo.oidc.endpoint.authorize = /oauth/v1/authorize
+
+idp.duo.oidc.apiHost = hostname
+idp.duo.oidc.clientId = clientid
+idp.duo.oidc.redirectURL = https://something
+idp.duo.oidc.integrationKey = key
+
+# We suggest defining this in credentials/secrets.properties
+#idp.duo.oidc.secretKey = key
diff --git a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-custom-factory.xml b/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-custom-factory.xml
index 4a2969f..dfd19e7 100644
--- a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-custom-factory.xml
+++ b/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-custom-factory.xml
@@ -10,7 +10,7 @@
     
     <!-- Add a custom Duo client factory in the same way a user would-->
     
-    <bean id="shibboleth.authn.duo.OIDC.test.clientFactory"
+    <bean id="shibboleth.authn.DuoOIDC.test.clientFactory"
         class="net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClientFactory_OK_Client" scope="singleton">
     </bean>
 
diff --git a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-multiple-integrations.xml b/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-multiple-integrations.xml
index 751c539..96aa1b4 100644
--- a/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-multiple-integrations.xml
+++ b/idp-duo-impl/src/test/resources/conf/authn/duo-oidc-authn-config-multiple-integrations.xml
@@ -8,7 +8,7 @@
 
     default-init-method="initialize" default-destroy-method="destroy">
 
-    <bean id="shibboleth.authn.duo.OIDC.DuoIntegrationStrategy" 
+    <bean id="shibboleth.authn.DuoOIDC.DuoIntegrationStrategy" 
         class="net.shibboleth.idp.plugin.authn.duo.impl.DualDuoIntegrationStrategy" />
 
 </beans>
diff --git a/idp-duo-native-client-impl/.classpath b/idp-duo-native-client-impl/.classpath
index 4559ca0..9efc6d8 100644
--- a/idp-duo-native-client-impl/.classpath
+++ b/idp-duo-native-client-impl/.classpath
@@ -6,15 +6,17 @@
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src/main/resources"/>
 	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
+			<attribute name="test" value="true"/>
 			<attribute name="optional" value="true"/>
 			<attribute name="maven.pomderived" value="true"/>
-			<attribute name="test" value="true"/>
 		</attributes>
 	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
 		<attributes>
+			<attribute name="module" value="true"/>
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
diff --git a/idp-duo-native-client-impl/src/main/resources/duo-client-factory-bean.xml b/idp-duo-native-client-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/duo-client-factory-bean.xml
similarity index 85%
rename from idp-duo-native-client-impl/src/main/resources/duo-client-factory-bean.xml
rename to idp-duo-native-client-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/duo-client-factory-bean.xml
index 6aa4760..724fe05 100644
--- a/idp-duo-native-client-impl/src/main/resources/duo-client-factory-bean.xml
+++ b/idp-duo-native-client-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/duo-client-factory-bean.xml
@@ -10,14 +10,14 @@
     default-init-method="initialize" default-destroy-method="destroy">
 
 
-    <bean id="shibboleth.authn.duo.OIDC.native.sdk.clientFactory"
+    <bean id="shibboleth.authn.DuoOIDC.native.sdk.clientFactory"
         class="net.shibboleth.idp.plugin.authn.duo.sdk.impl.DuoSDKClientFactory" scope="singleton"
-        p:caCerts="#{getObject('shibboleth.authn.duo.OIDC.native.sdk.caCerts') ?: getObject('shibboleth.authn.duo.OIDC.native.sdk.defaultCaCerts')}">
+        p:caCerts="#{getObject('shibboleth.authn.DuoOIDC.native.sdk.caCerts') ?: getObject('shibboleth.authn.DuoOIDC.native.sdk.defaultCaCerts')}">
 
     </bean>
 
     <!-- The Default set of CA Certificate Pins used by the Duo SDK -->
-    <util:list id="shibboleth.authn.duo.OIDC.native.sdk.defaultCaCerts" value-type="java.lang.String"
+    <util:list id="shibboleth.authn.DuoOIDC.native.sdk.defaultCaCerts" value-type="java.lang.String"
         list-class="java.util.ArrayList">
         <value>sha256/I/Lt/z7ekCWanjD0Cvj5EqXls2lOaThEA0H2Bg4BT/o=</value>
         <value>sha256/r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E=</value>
diff --git a/idp-duo-native-client-impl/.classpath b/idp-duo-nimbus-client-impl/.classpath
similarity index 84%
copy from idp-duo-native-client-impl/.classpath
copy to idp-duo-nimbus-client-impl/.classpath
index 4559ca0..234db15 100644
--- a/idp-duo-native-client-impl/.classpath
+++ b/idp-duo-nimbus-client-impl/.classpath
@@ -6,6 +6,11 @@
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
diff --git a/idp-duo-nimbus-client-impl/.project b/idp-duo-nimbus-client-impl/.project
new file mode 100644
index 0000000..7f43b14
--- /dev/null
+++ b/idp-duo-nimbus-client-impl/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>idp-plugin-duo-nimbus-client-impl</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/idp-duo-nimbus-client-impl/.settings/org.eclipse.core.resources.prefs b/idp-duo-nimbus-client-impl/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..839d647
--- /dev/null
+++ b/idp-duo-nimbus-client-impl/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8
diff --git a/idp-duo-nimbus-client-impl/.settings/org.eclipse.jdt.core.prefs b/idp-duo-nimbus-client-impl/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b5490a0
--- /dev/null
+++ b/idp-duo-nimbus-client-impl/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/idp-duo-nimbus-client-impl/.settings/org.eclipse.m2e.core.prefs b/idp-duo-nimbus-client-impl/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/idp-duo-nimbus-client-impl/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/idp-duo-nimbus-client-impl/src/main/resources/duo-client-factory-bean.xml b/idp-duo-nimbus-client-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/duo-client-factory-bean.xml
similarity index 73%
rename from idp-duo-nimbus-client-impl/src/main/resources/duo-client-factory-bean.xml
rename to idp-duo-nimbus-client-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/duo-client-factory-bean.xml
index 1496ca4..a499b15 100644
--- a/idp-duo-nimbus-client-impl/src/main/resources/duo-client-factory-bean.xml
+++ b/idp-duo-nimbus-client-impl/src/main/resources/net/shibboleth/idp/plugin/authn/duo/duo-client-factory-bean.xml
@@ -9,16 +9,16 @@
 
     default-init-method="initialize" default-destroy-method="destroy">
 
-    <bean id="shibboleth.authn.duo.OIDC.nimbus.clientFactory"
+    <bean id="shibboleth.authn.DuoOIDC.nimbus.clientFactory"
         class="net.shibboleth.idp.plugin.authn.duo.nimbus.NimbusClientFactory" scope="singleton"
-        p:httpClient="#{getObject('shibboleth.authn.Duo.OIDC.HttpClient') ?: getObject('shibboleth.authn.Duo.OIDC.InternalHttpClient')}"
+        p:httpClient="#{getObject('shibboleth.authn.DuoOIDC.HttpClient') ?: getObject('shibboleth.authn.DuoOIDC.InternalHttpClient')}"
         p:objectMapper-ref="shibboleth.authn.duo.OIDC.JSONObjectMapper">
 
     </bean>
     
     <!-- Create a default HTTP Client using the global http settings overrides -->
-    <bean id="shibboleth.authn.Duo.OIDC.InternalHttpClient" class="net.shibboleth.idp.plugin.authn.duo.nimbus.DuoHttpClientFactoryBean" lazy-init="true"
-        p:tLSSocketFactory="#{ %{idp.httpclient.useTrustEngineTLSSocketFactory:false} or %{idp.httpclient.useSecurityEnhancedTLSSocketFactory:false} ? @'shibboleth.SecurityEnhancedTLSSocketFactory' : null }"
+    <bean id="shibboleth.authn.DuoOIDC.InternalHttpClient" class="net.shibboleth.idp.plugin.authn.duo.nimbus.DuoHttpClientFactoryBean" lazy-init="true"
+        p:tLSSocketFactory-ref="shibboleth.SecurityEnhancedTLSSocketFactory"
         p:connectionDisregardTLSCertificate="%{idp.httpclient.connectionDisregardTLSCertificate:false}"
         p:connectionTimeout="%{idp.httpclient.connectionTimeout:PT1M}"
         p:connectionRequestTimeout="%{idp.httpclient.connectionRequestTimeout:PT1M}"
@@ -27,10 +27,10 @@
         p:maxConnectionsPerRoute="%{idp.httpclient.maxConnectionsPerRoute:100}" />
     
     <!-- Create a default object mapper. Setup should not change once injected -->
-    <bean id="shibboleth.authn.duo.OIDC.JSONObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />
+    <bean id="shibboleth.authn.DuoOIDC.JSONObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />
     
     <bean class="org.springframework.beans.factory.config.MethodInvokingBean"
-            p:targetObject-ref="shibboleth.authn.duo.OIDC.JSONObjectMapper"
+            p:targetObject-ref="shibboleth.authn.DuoOIDC.JSONObjectMapper"
             p:targetMethod="setSerializationInclusion">
         <property name="arguments">
             <util:constant static-field="com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL" />
@@ -38,7 +38,7 @@
     </bean>
     
     <bean class="org.springframework.beans.factory.config.MethodInvokingBean"
-            p:targetObject-ref="shibboleth.authn.duo.OIDC.JSONObjectMapper"
+            p:targetObject-ref="shibboleth.authn.DuoOIDC.JSONObjectMapper"
             p:targetMethod="registerModule">
         <property name="arguments">
             <bean class="com.fasterxml.jackson.datatype.jsr310.JavaTimeModule" />
@@ -46,7 +46,7 @@
     </bean>
 
     <bean class="org.springframework.beans.factory.config.MethodInvokingBean"
-            p:targetObject-ref="shibboleth.authn.duo.OIDC.JSONObjectMapper"
+            p:targetObject-ref="shibboleth.authn.DuoOIDC.JSONObjectMapper"
             p:targetMethod="setDateFormat">
         <property name="arguments">
             <bean class="java.text.SimpleDateFormat" c:_0="YYYY-MM-dd'T'HH:mm:ss.SSSZZ" />

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


More information about the commits mailing list