Author: prabath
Date: Tue Mar 25 01:41:49 2008
New Revision: 15069

Log:

added new API where RP component users will be able to set optional attributes 
in the OpenID authentication request

Modified:
   
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDAuthenticationRequest.java
   
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDAttributeExchange.java
   
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDSimpleReg.java
   
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/resources.properties

Modified: 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDAuthenticationRequest.java
==============================================================================
--- 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDAuthenticationRequest.java
 (original)
+++ 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDAuthenticationRequest.java
 Tue Mar 25 01:41:49 2008
@@ -5,6 +5,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.wso2.solutions.identity.relyingparty.RelyingPartyException;
+
 public class OpenIDAuthenticationRequest {
 
     private String returnUrl;
@@ -16,7 +18,9 @@
     private String openIDUrl;
 
     private ArrayList requiredClaims = new ArrayList();
-    
+
+    private ArrayList optionalClaims = new ArrayList();
+
     private ArrayList<OpenIDRequestType> requestTypes = new 
ArrayList<OpenIDRequestType>();
 
     private ArrayList<AuthPolicyType> authTypes = new 
ArrayList<AuthPolicyType>();
@@ -42,10 +46,6 @@
         return requestTypes;
     }
 
-    public void addRequestType(OpenIDRequestType requestType) {
-       requestTypes.add(requestType);
-    }
-
     public HttpServletResponse getReponse() {
         return reponse;
     }
@@ -74,16 +74,6 @@
         return requiredClaims;
     }
 
-    public void addRequiredClaims(String attribute) {
-        requiredClaims.add(attribute);
-    }
-
-    public void addRequiredClaims(String attribute, String namespace) {
-        OpenIDAxAttribute axAttributes = null;
-        axAttributes = new OpenIDAxAttribute(attribute, namespace);
-        requiredClaims.add(axAttributes);
-    }
-
     public int getMaxAuthAge() {
         return maxAuthAge;
     }
@@ -92,11 +82,137 @@
         this.maxAuthAge = maxAuthAge;
     }
 
+    public ArrayList<AuthPolicyType> getAuthTypes() {
+        return authTypes;
+    }
+
+    public ArrayList getOptionalClaims() {
+        return optionalClaims;
+    }
+
+    /**
+     * Add requested authentication policies
+     * @param policyType Requested policy type
+     */
     public void addAuthPolicy(AuthPolicyType policyType) {
-        authTypes.add(policyType);
+        if (!authTypes.contains(policyType)) {
+            authTypes.add(policyType);
+        }
     }
 
-    public ArrayList<AuthPolicyType> getAuthTypes() {
-        return authTypes;
+    /**
+     * Indicate what sort of attributes being requested.
+     * @param requestType OpenIDRequestType
+     */
+    public void addRequestType(OpenIDRequestType requestType) {
+        if (!requestTypes.contains(requestType)) {
+            requestTypes.add(requestType);
+        }
+    }
+
+    /**
+     * Add required attributes for Simple Registration. Make sure you have
+     * already set SIMPLE_REGISTRATION as an RequestType before calling this
+     * method.
+     * @param attribute SReg required attribute
+     * @throws RelyingPartyException
+     */
+    public void addRequiredClaims(String attribute)
+            throws RelyingPartyException {
+        addClaims(attribute, requiredClaims);
+    }
+
+    /**
+     * Add optional attributes for Simple Registration. Make sure you have
+     * already set SIMPLE_REGISTRATION as an RequestType before calling this
+     * method.
+     * @param attribute SReg optional attribute
+     * @throws RelyingPartyException
+     */
+    public void addOptionalClaims(String attribute)
+            throws RelyingPartyException {
+        addClaims(attribute, optionalClaims);
+    }
+
+    /**
+     * Add required attributes for Attribute Exchange. Make sure you have
+     * already set ATTRIBUTE_EXCHANGE as an RequestType before calling this
+     * method.
+     * @param attribute Name of the attribute
+     * @param namespace Namespace of the attribute
+     * @throws RelyingPartyException
+     */
+    public void addRequiredClaims(String attribute, String namespace)
+            throws RelyingPartyException {
+        addClaims(attribute, namespace, requiredClaims);
+    }
+
+    /**
+     * Add optional attributes for Attribute Exchange. Make sure you have
+     * already set ATTRIBUTE_EXCHANGE as an RequestType before calling this
+     * method.
+     * @param attribute Name of the attribute
+     * @param namespace Namespace of the attribute
+     * @throws RelyingPartyException
+     */
+    public void addOptionalClaims(String attribute, String namespace)
+            throws RelyingPartyException {
+        addClaims(attribute, namespace, optionalClaims);
+    }
+
+    /**
+     * @param attribute
+     * @param namespace
+     * @param claims
+     * @throws RelyingPartyException
+     */
+    private void addClaims(String attribute, String namespace, ArrayList 
claims)
+            throws RelyingPartyException {
+
+        OpenIDAxAttribute axAttribute = null;
+
+        if (attribute == null || attribute.trim().length() == 0
+                || namespace == null || namespace.trim().length() == 0) {
+            throw new RelyingPartyException("invalidInputParams");
+        }
+
+        axAttribute = new OpenIDAxAttribute(attribute, namespace);
+
+        for (Object element : claims) {
+            if (element instanceof OpenIDAxAttribute) {
+                OpenIDAxAttribute attr = (OpenIDAxAttribute) element;
+                if (attr.getAttributeName().equalsIgnoreCase(attribute)
+                        || attr.getNamespace().equalsIgnoreCase(namespace)) {
+                    throw new RelyingPartyException("duplicatedAttributes");
+                }
+            }
+        }
+
+        if (!requestTypes.contains(OpenIDRequestType.ATTRIBUTE_EXCHANGE)) {
+            requestTypes.add(OpenIDRequestType.ATTRIBUTE_EXCHANGE);
+        }
+
+        claims.add(axAttribute);
+    }
+
+    /**
+     * @param attribute
+     * @param claims
+     * @throws RelyingPartyException
+     */
+    public void addClaims(String attribute, ArrayList claims)
+            throws RelyingPartyException {
+
+        if (attribute == null || attribute.trim().length() == 0) {
+            throw new RelyingPartyException("invalidInputParams");
+        }
+        if (claims.contains(attribute)) {
+            throw new RelyingPartyException("duplicatedAttributes");
+        }
+        if (!requestTypes.contains(OpenIDRequestType.SIMPLE_REGISTRATION)) {
+            requestTypes.add(OpenIDRequestType.SIMPLE_REGISTRATION);
+        }
+
+        claims.add(attribute);
     }
 }
\ No newline at end of file

Modified: 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDAttributeExchange.java
==============================================================================
--- 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDAttributeExchange.java
  (original)
+++ 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDAttributeExchange.java
  Tue Mar 25 01:41:49 2008
@@ -54,9 +54,21 @@
             if (request.getRequiredClaims() != null
                     && request.getRequiredClaims().size() > 0) {
                 for (Object requiredClaim : request.getRequiredClaims()) {
-                    attr = (OpenIDAxAttribute) requiredClaim;
-                    fetchReq.addAttribute(attr.getAttributeName(), attr
-                            .getNamespace(), true);
+                    if (requiredClaim instanceof OpenIDAxAttribute) {
+                        attr = (OpenIDAxAttribute) requiredClaim;
+                        fetchReq.addAttribute(attr.getAttributeName(), attr
+                                .getNamespace(), true);
+                    }
+                }
+            }
+            if (request.getOptionalClaims() != null
+                    && request.getOptionalClaims().size() > 0) {
+                for (Object optionalClaim : request.getOptionalClaims()) {
+                    if (optionalClaim instanceof OpenIDAxAttribute) {
+                        attr = (OpenIDAxAttribute) optionalClaim;
+                        fetchReq.addAttribute(attr.getAttributeName(), attr
+                                .getNamespace(), false);
+                    }
                 }
             }
         } catch (MessageException e) {

Modified: 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDSimpleReg.java
==============================================================================
--- 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDSimpleReg.java
  (original)
+++ 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/extensions/OpenIDSimpleReg.java
  Tue Mar 25 01:41:49 2008
@@ -51,12 +51,19 @@
         if (request.getRequiredClaims() != null
                 && request.getRequiredClaims().size() > 0) {
             for (Object requiredClaim : request.getRequiredClaims()) {
-                sregReq.addAttribute((String) requiredClaim, true);
+                if (requiredClaim instanceof String) {
+                    sregReq.addAttribute((String) requiredClaim, true);
+                }
+            }
+        }
+
+        if (request.getOptionalClaims() != null
+                && request.getOptionalClaims().size() > 0) {
+            for (Object optionalClaim : request.getOptionalClaims()) {
+                if (optionalClaim instanceof String) {
+                    sregReq.addAttribute((String) optionalClaim, false);
+                }
             }
-        } else {
-            // When RP does not set any required parameters we stick to
-            // the default parameter set.
-            //setDefaultRequestParams(sregReq);
         }
 
         return sregReq;

Modified: 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/resources.properties
==============================================================================
--- 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/resources.properties
    (original)
+++ 
trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/resources.properties
    Tue Mar 25 01:41:49 2008
@@ -49,4 +49,6 @@
 profileRetrievalError=Error occurred while retrieving user profiles
 errorExtractingCertFromTrustStore = Error extracting certificate : {0} from 
trust store
 SAMLTokenConsumerBootstrapFailure = SAMLTokenConsumer bootstrap failure
-invalidTokenType = Invalid token type : {0}
\ No newline at end of file
+invalidTokenType = Invalid token type : {0}
+invalidInputParams= Invalid input parameters - cannot be null or empty
+duplicatedAttributes= Required attributes cannot be duplicated
\ No newline at end of file

_______________________________________________
Identity-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/identity-dev

Reply via email to