[java-identity-provider COMMIT] in /trunk: idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegrati...
noreply at shibboleth.net
noreply at shibboleth.net
Fri Sep 30 22:30:10 EDT 2016
Author: scantor
Date: Fri Sep 30 22:30:10 2016
New Revision: 8442
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=8442&view=rev
Log:
IDP-1013 - Login flow for Duo iframe-based authentication
https://issues.shibboleth.net/jira/browse/IDP-1013
Add support for per-integration principal sets.
Modified:
trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java
trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/DuoIntegration.java
trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/duo/impl/ValidateDuoWebResponse.java
Modified: trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java?rev=8442&r1=8441&r2=8442&view=diff
==============================================================================
--- trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java (original)
+++ trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java Fri Sep 30 22:30:10 2016
@@ -17,18 +17,31 @@
package net.shibboleth.idp.authn.duo;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
+import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import java.security.Principal;
+import java.util.Collection;
+import java.util.Set;
+
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import javax.security.auth.Subject;
+
+import com.google.common.base.Predicates;
+import com.google.common.collect.Collections2;
/**
* Wrapper for use of Duo.
*
* @since 3.3.0
*/
-public class BasicDuoIntegration implements DuoIntegration {
+public class BasicDuoIntegration extends AbstractInitializableComponent implements DuoIntegration {
/** API host. */
@Nonnull @NotEmpty private String apiHost;
@@ -41,6 +54,9 @@
/** Secret key. */
@Nonnull @NotEmpty private String secretKey;
+
+ /** Container for supported principals. */
+ @Nonnull private final Subject supportedPrincipals;
/**
* Constructor.
@@ -56,6 +72,7 @@
setApplicationKey(akey);
setIntegrationKey(ikey);
setSecretKey(skey);
+ supportedPrincipals = new Subject();
}
/** {@inheritDoc} */
@@ -69,6 +86,8 @@
* @param host API host
*/
public void setAPIHost(@Nonnull @NotEmpty final String host) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
apiHost = Constraint.isNotNull(StringSupport.trimOrNull(host), "API host cannot be null or empty");
}
@@ -83,6 +102,8 @@
* @param key application key
*/
public void setApplicationKey(@Nonnull @NotEmpty final String key) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
applicationKey = Constraint.isNotNull(StringSupport.trimOrNull(key), "Application key cannot be null or empty");
}
@@ -97,6 +118,8 @@
* @param key integration key
*/
public void setIntegrationKey(@Nonnull @NotEmpty final String key) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
integrationKey = Constraint.isNotNull(StringSupport.trimOrNull(key), "Integration key cannot be null or empty");
}
@@ -111,7 +134,35 @@
* @param key secret key
*/
public void setSecretKey(@Nonnull @NotEmpty final String key) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
secretKey = Constraint.isNotNull(StringSupport.trimOrNull(key), "Secret key cannot be null or empty");
}
+
+ /** {@inheritDoc} */
+ @Nonnull @NonnullElements @Unmodifiable
+ public <T extends Principal> Set<T> getSupportedPrincipals(@Nonnull final Class<T> c) {
+ return supportedPrincipals.getPrincipals(c);
+ }
+ /**
+ * Set supported non-user-specific principals that the action will include in the subjects
+ * it generates, in place of any default principals from the flow.
+ *
+ * <p>Setting to a null or empty collection will maintain the default behavior of relying on the flow.</p>
+ *
+ * @param <T> a type of principal to add, if not generic
+ * @param principals supported principals to include
+ */
+ public <T extends Principal> void setSupportedPrincipals(
+ @Nullable @NonnullElements final Collection<T> principals) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
[... 54 lines stripped ...]
More information about the commits
mailing list