Author: coheigea
Date: Tue Jun 14 14:25:20 2011
New Revision: 1135604

URL: http://svn.apache.org/viewvc?rev=1135604&view=rev
Log:
Added support to create an AudienceRestrictionConditions element to a SAML 1.1 
assertion

Modified:
    
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/builder/SAML1ComponentBuilder.java

Modified: 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/builder/SAML1ComponentBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/builder/SAML1ComponentBuilder.java?rev=1135604&r1=1135603&r2=1135604&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/builder/SAML1ComponentBuilder.java
 (original)
+++ 
webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/builder/SAML1ComponentBuilder.java
 Tue Jun 14 14:25:20 2011
@@ -41,6 +41,8 @@ import org.opensaml.saml1.core.Assertion
 import org.opensaml.saml1.core.Attribute;
 import org.opensaml.saml1.core.AttributeStatement;
 import org.opensaml.saml1.core.AttributeValue;
+import org.opensaml.saml1.core.Audience;
+import org.opensaml.saml1.core.AudienceRestrictionCondition;
 import org.opensaml.saml1.core.AuthenticationStatement;
 import org.opensaml.saml1.core.AuthorizationDecisionStatement;
 import org.opensaml.saml1.core.Conditions;
@@ -73,6 +75,10 @@ public class SAML1ComponentBuilder {
     
     private static SAMLObjectBuilder<Conditions> conditionsV1Builder;
     
+    private static SAMLObjectBuilder<AudienceRestrictionCondition> 
audienceRestrictionV1Builder;
+    
+    private static SAMLObjectBuilder<Audience> audienceV1Builder;
+    
     private static SAMLObjectBuilder<AuthenticationStatement> 
authenticationStatementV1Builder;
     
     private static SAMLObjectBuilder<Subject> subjectV1Builder;
@@ -260,8 +266,41 @@ public class SAML1ComponentBuilder {
             conditions.setNotBefore(newNotBefore);
             
conditions.setNotOnOrAfter(newNotBefore.plusMinutes(tokenPeriodMinutes));
         }
+        
+        if (conditionsBean.getAudienceURI() != null) {
+            AudienceRestrictionCondition audienceRestriction = 
+                
createSamlv1AudienceRestriction(conditionsBean.getAudienceURI());
+            
conditions.getAudienceRestrictionConditions().add(audienceRestriction);
+        }
+        
         return conditions;
     }
+    
+    /**
+     * Create an AudienceRestrictionCondition object
+     *
+     * @param audienceURI of type String
+     * @return an AudienceRestrictionCondition object
+     */
+    @SuppressWarnings("unchecked")
+    public static AudienceRestrictionCondition 
+    createSamlv1AudienceRestriction(String audienceURI) {
+        if (audienceRestrictionV1Builder == null) {
+            audienceRestrictionV1Builder = 
(SAMLObjectBuilder<AudienceRestrictionCondition>) 
+                
builderFactory.getBuilder(AudienceRestrictionCondition.DEFAULT_ELEMENT_NAME);
+        }
+        if (audienceV1Builder == null) {
+            audienceV1Builder = (SAMLObjectBuilder<Audience>) 
+                builderFactory.getBuilder(Audience.DEFAULT_ELEMENT_NAME);
+        }
+       
+        AudienceRestrictionCondition audienceRestriction = 
+            audienceRestrictionV1Builder.buildObject();
+        Audience audience = audienceV1Builder.buildObject();
+        audience.setUri(audienceURI);
+        audienceRestriction.getAudiences().add(audience);
+        return audienceRestriction;
+    }
 
     /**
      * Create SAML 1.1 authentication statement(s)


Reply via email to