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