[java-identity-provider COMMIT] in /trunk: idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relying...

noreply at shibboleth.net noreply at shibboleth.net
Fri Oct 16 19:42:58 EDT 2015


Author: putmanb
Date: Fri Oct 16 19:42:57 2015
New Revision: 7832

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7832&view=rev
Log:
IDP-671: Create Action(s) and supporting code to issue SAML 2 Assertions decorated for delegation

Add new 'allowDelegation' Predicate to SAML 2 BrowserSSOProfileConfiguration.
Update Spring config parser to handle.
Update dependent code to use.

Added:
    trunk/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/logic/DummyPredicate.java   (with props)
    trunk/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/saml/saml2SSOAllowDelegationPredicate.xml   (with props)
Modified:
    trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/saml/impl/SAML2BrowserSSOProfileParser.java
    trunk/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/saml/SAML2BrowserSSOProfileTest.java
    trunk/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/beans.xml
    trunk/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/saml/saml2SSOValues.xml
    trunk/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/BrowserSSOProfileConfiguration.java
    trunk/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/BrowserSSOProfileConfigurationTest.java
    trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/delegation/impl/PopulateDelegationContext.java
    trunk/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/delegation/impl/PopulateDelegationContextTest.java
    trunk/idp-schema/src/main/resources/schema/shibboleth-relying-party-saml.xsd

Modified: trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/saml/impl/SAML2BrowserSSOProfileParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/saml/impl/SAML2BrowserSSOProfileParser.java?rev=7832&r1=7831&r2=7832&view=diff
==============================================================================
--- trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/saml/impl/SAML2BrowserSSOProfileParser.java	(original)
+++ trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/saml/impl/SAML2BrowserSSOProfileParser.java	Fri Oct 16 19:42:57 2015
@@ -26,6 +26,7 @@
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.xml.AttributeSupport;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,6 +39,9 @@
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
 
 /**
  * Parser to generate {@link BrowserSSOProfileConfiguration} from a <code>saml:SAML2SSOProfile</code>.
@@ -140,10 +144,31 @@
             builder.addPropertyValue("skipEndpointValidationWhenSigned",
                     StringSupport.trimOrNull(element.getAttributeNS(null, "skipEndpointValidationWhenSigned")));
         }
-
+        
         if (element.hasAttributeNS(null, "allowDelegation")) {
-            builder.addPropertyValue("allowingDelegation",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "allowDelegation")));
+            if (element.hasAttributeNS(null, "allowDelegationPredicateRef")) {
+                log.warn("Attribute 'allowDelegation' is being ignored in favor of 'allowDelegationPredicateRef'");
+            } else {
+                Boolean value = AttributeSupport.getAttributeValueAsBoolean(
+                        element.getAttributeNodeNS(null, "allowDelegation"));
+                if (value != null) {
+                    if (value) {
+                        builder.addPropertyValue("allowDelegation", Predicates.alwaysTrue());
+                    } else {
+                        builder.addPropertyValue("allowDelegation", Predicates.alwaysFalse());
+                    }
+                } else {
+                    log.error("Attribute 'allowDelegation' is being ignored because it's not a legal xs:boolean value");
+                    throw new BeanDefinitionParsingException(new Problem(
+                            "Attribute 'allowDelegation' is being ignored because it's not a legal xs:boolean value",
+                            new Location(parserContext.getReaderContext().getResource())));
+                }
+            }
+        }
+        
+        if (element.hasAttributeNS(null, "allowDelegationPredicateRef")) {
+            builder.addPropertyReference("allowDelegation", 
+                    StringSupport.trimOrNull(element.getAttributeNS(null, "allowDelegationPredicateRef")));
         }
 

[... 385 lines stripped ...]


More information about the commits mailing list