[java-identity-provider] branch master updated: OSJ-292 - Mishandling of ProxyRestriction content

Scott Cantor cantor.2 at osu.edu
Wed Nov 20 19:49:41 EST 2019


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

scantor pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=943590b97ed4e88665058bdb0b286e84e23e8421

The following commit(s) were added to refs/heads/master by this push:
       new  943590b   OSJ-292 - Mishandling of ProxyRestriction content
943590b is described below

commit 943590b97ed4e88665058bdb0b286e84e23e8421
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Nov 20 19:49:38 2019 -0500

    OSJ-292 - Mishandling of ProxyRestriction content
    
    https://issues.shibboleth.net/jira/browse/OSJ-292
    
    Fix related bug, converting proxy count config to @Nullable Integer.
---
 .../system/conf/relying-party-mddriven.xml         |  7 +-----
 .../config/navigate/ProxyCountLookupFunction.java  |  4 ++--
 .../config/AbstractSAML2ProfileConfiguration.java  | 26 +++++++++++-----------
 .../config/BrowserSSOProfileConfiguration.java     |  3 ++-
 .../profile/config/SAML2ProfileConfiguration.java  |  2 +-
 .../AbstractSAML2ProfileConfigurationTest.java     |  9 ++++----
 6 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/idp-conf/src/main/resources/system/conf/relying-party-mddriven.xml b/idp-conf/src/main/resources/system/conf/relying-party-mddriven.xml
index c28d587..bb06b8e 100644
--- a/idp-conf/src/main/resources/system/conf/relying-party-mddriven.xml
+++ b/idp-conf/src/main/resources/system/conf/relying-party-mddriven.xml
@@ -197,12 +197,7 @@
             </bean>
         </property>
         <property name="proxyCountLookupStrategy">
-            <bean parent="shibboleth.MDDrivenLongProperty" p:propertyName="proxyCount">
-                <property name="defaultValue">
-                    <util:constant
-                        static-field="net.shibboleth.idp.saml.saml2.profile.config.AbstractSAML2ProfileConfiguration.DEFAULT_PROXY_COUNT" />
-                </property>
-            </bean>
+            <bean parent="shibboleth.MDDrivenIntProperty" p:propertyName="proxyCount" />
         </property>
         <property name="proxyAudiencesLookupStrategy">
             <bean parent="shibboleth.MDDrivenSetProperty" p:propertyName="proxyAudiences" />
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/navigate/ProxyCountLookupFunction.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/navigate/ProxyCountLookupFunction.java
index 248d922..4091e68 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/navigate/ProxyCountLookupFunction.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/navigate/ProxyCountLookupFunction.java
@@ -34,10 +34,10 @@ import org.opensaml.profile.context.ProfileRequestContext;
  * 
  * <p>If a specific setting is unavailable, a null is returned.</p>
  */
-public class ProxyCountLookupFunction extends AbstractRelyingPartyLookupFunction<Long> {
+public class ProxyCountLookupFunction extends AbstractRelyingPartyLookupFunction<Integer> {
 
     /** {@inheritDoc} */
-    @Nullable public Long apply(@Nullable final ProfileRequestContext input) {
+    @Nullable public Integer apply(@Nullable final ProfileRequestContext input) {
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
         if (rpc != null) {
             final ProfileConfiguration pc = rpc.getProfileConfig();
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfiguration.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfiguration.java
index eb2a955..16cc380 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfiguration.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfiguration.java
@@ -44,9 +44,6 @@ import com.google.common.base.Predicates;
 /** Base class for SAML 2 profile configurations. */
 public abstract class AbstractSAML2ProfileConfiguration extends AbstractSAMLProfileConfiguration implements
         SAML2ProfileConfiguration {
-    
-    /** Default proxy count. */
-    @Nonnull public static final Long DEFAULT_PROXY_COUNT = 0L;
 
     /** Whether to ignore signatures in requests. */
     @Nonnull private Predicate<ProfileRequestContext> ignoreRequestSignaturesPredicate;
@@ -64,7 +61,7 @@ public abstract class AbstractSAML2ProfileConfiguration extends AbstractSAMLProf
     @Nonnull private Predicate<ProfileRequestContext> encryptAttributesPredicate;
 
     /** Lookup function to supply proxyCount property. */
-    @Nonnull private Function<ProfileRequestContext,Long> proxyCountLookupStrategy;
+    @Nonnull private Function<ProfileRequestContext,Integer> proxyCountLookupStrategy;
 
     /** Lookup function to supply proxy audiences. */
     @Nonnull private Function<ProfileRequestContext,Collection<String>> proxyAudiencesLookupStrategy;
@@ -82,15 +79,16 @@ public abstract class AbstractSAML2ProfileConfiguration extends AbstractSAMLProf
         encryptAssertionsPredicate = Predicates.alwaysFalse();
         encryptNameIDsPredicate = Predicates.alwaysFalse();
         encryptAttributesPredicate = Predicates.alwaysFalse();
-        proxyCountLookupStrategy = FunctionSupport.constant(DEFAULT_PROXY_COUNT);
+        proxyCountLookupStrategy = FunctionSupport.constant(null);
         proxyAudiencesLookupStrategy = FunctionSupport.constant(null);
     }
 
     /** {@inheritDoc} */
-    public long getProxyCount(@Nullable final ProfileRequestContext profileRequestContext) {
-        final Long count = proxyCountLookupStrategy.apply(profileRequestContext);
-        Constraint.isNotNull(count, "Proxy count cannot be null");
-        Constraint.isGreaterThanOrEqual(0, count, "Proxy count must be greater than or equal to 0");
+    @Nullable public Integer getProxyCount(@Nullable final ProfileRequestContext profileRequestContext) {
+        final Integer count = proxyCountLookupStrategy.apply(profileRequestContext);
+        if (count != null) {
+            Constraint.isGreaterThanOrEqual(0, count, "Proxy count must be greater than or equal to 0");
+        }
         return count;
     }
 
@@ -99,9 +97,11 @@ public abstract class AbstractSAML2ProfileConfiguration extends AbstractSAMLProf
      * 
      * @param count maximum number of times an assertion may be proxied
      */
-    public void setProxyCount(@NonNegative final long count) {
-        proxyCountLookupStrategy = FunctionSupport.constant(
-                Constraint.isGreaterThanOrEqual(0, count, "Proxy count must be greater than or equal to 0"));
+    public void setProxyCount(@Nullable @NonNegative final Integer count) {
+        if (count != null) {
+            Constraint.isGreaterThanOrEqual(0, count, "Proxy count must be greater than or equal to 0");
+        }
+        proxyCountLookupStrategy = FunctionSupport.constant(count);
     }
 
     /**
@@ -111,7 +111,7 @@ public abstract class AbstractSAML2ProfileConfiguration extends AbstractSAMLProf
      * 
      * @since 3.3.0
      */
-    public void setProxyCountLookupStrategy(@Nonnull final Function<ProfileRequestContext,Long> strategy) {
+    public void setProxyCountLookupStrategy(@Nonnull final Function<ProfileRequestContext,Integer> strategy) {
         proxyCountLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
     }
 
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/BrowserSSOProfileConfiguration.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/BrowserSSOProfileConfiguration.java
index f9d7824..5f2f49d 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/BrowserSSOProfileConfiguration.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/BrowserSSOProfileConfiguration.java
@@ -529,7 +529,8 @@ public class BrowserSSOProfileConfiguration extends AbstractSAML2ArtifactAwarePr
      * 
      * @since 4.0.0
      */
-    public void setAuthnContextTranslationStrategy(@Nullable final Function<AuthnContext,Collection<Principal>> strategy) {
+    public void setAuthnContextTranslationStrategy(
+            @Nullable final Function<AuthnContext,Collection<Principal>> strategy) {
         authnContextTranslationStrategyLookupStrategy = FunctionSupport.constant(strategy);
     }
 
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/SAML2ProfileConfiguration.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/SAML2ProfileConfiguration.java
index 122fd81..fed1d7f 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/SAML2ProfileConfiguration.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/SAML2ProfileConfiguration.java
@@ -41,7 +41,7 @@ public interface SAML2ProfileConfiguration {
      * 
      * @return maximum number of times an assertion may be proxied
      */
-    @NonNegative long getProxyCount(@Nullable final ProfileRequestContext profileRequestContext);
+    @NonNegative @Nullable Integer getProxyCount(@Nullable final ProfileRequestContext profileRequestContext);
 
     /**
      * Gets the unmodifiable collection of audiences for a proxied assertion.
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java b/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java
index 61ec6ca..cd431a4 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java
+++ b/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java
@@ -17,7 +17,6 @@
 
 package net.shibboleth.idp.saml.saml2.profile.config;
 
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -94,17 +93,17 @@ public class AbstractSAML2ProfileConfigurationTest {
     
     @Test public void testProxyCount() {
         final MockSAML2ProfileConfiguration config = new MockSAML2ProfileConfiguration();
-        Assert.assertEquals(config.getProxyCount(null), 0);
+        Assert.assertNull(config.getProxyCount(null));
 
         config.setProxyCount(1);
-        Assert.assertEquals(config.getProxyCount(null), 1);
+        Assert.assertEquals(config.getProxyCount(null), Integer.valueOf(1));
     }
 
     @Test public void testIndirectProxyCount() {
         final MockSAML2ProfileConfiguration config = new MockSAML2ProfileConfiguration();
 
-        config.setProxyCountLookupStrategy(FunctionSupport.constant(1L));
-        Assert.assertEquals(config.getProxyCount(null), 1);
+        config.setProxyCountLookupStrategy(FunctionSupport.constant(1));
+        Assert.assertEquals(config.getProxyCount(null), Integer.valueOf(1));
     }
 
     @Test public void testProxyAudiences() {

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


More information about the commits mailing list