Author: prabath
Date: Thu Feb 14 03:28:06 2008
New Revision: 13753

Log:

added logging

Modified:
   
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDProvider.java
   
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDServerManager.java
   
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/OpenIDTokenIssuer.java

Modified: 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDProvider.java
==============================================================================
--- 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDProvider.java
     (original)
+++ 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDProvider.java
     Thu Feb 14 03:28:06 2008
@@ -11,6 +11,8 @@
 import javax.servlet.http.HttpSession;
 
 import org.wso2.solutions.identity.UserStore;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.openid4java.message.AuthFailure;
 import org.openid4java.message.AuthRequest;
 import org.openid4java.message.DirectError;
@@ -30,350 +32,359 @@
 
 public class OpenIDProvider {
 
-    // Instantiate a ServerManager object.
-    public static ServerManager manager = new OpenIDServerManager();
-    private String authPage;
-
-    private static String opAddress = null;
-
-    /**
-     * Configure the OpenID Provider's end-point URL.
-     */
-    static {
-
-        ServerConfiguration serverConfig = null;
-        String openIDServerUrl = null;
-
-        serverConfig = ServerConfiguration.getInstance();
-        openIDServerUrl = serverConfig.getFirstProperty("OpenIDServerUrl");
-
-        // This is the OpenID provider server URL
-        opAddress = openIDServerUrl + "/server/";
-        manager.setOPEndpointUrl(opAddress);
-    }
-
-    /**
-     * Process the Relying Party request at the OpenID Provider end.
-     * 
-     * @param httpReq
-     *                HttpServletRequest
-     * @param httpResp
-     *                HttpServletResponse
-     * @return The Url to be redirected
-     * @throws Exception
-     */
-    public String processRequest(HttpServletRequest httpReq,
-            HttpServletResponse httpResp) throws IdentityProviderException {
-
-        ParameterList request = null;
-        Message message = null;
-        String responseText = null;
-        HttpSession session = null;
-
-        try {
-
-            session = httpReq.getSession();
-
-            if (IdentityConstants.OpenId.COMPLETE.equals(httpReq
-                    .getParameter(IdentityConstants.OpenId.ACTION))
-                    || IdentityConstants.OpenId.CANCEL.equals(httpReq
-                            .getParameter(IdentityConstants.OpenId.ACTION))) {
-                // Authentication completed.
-                request = (ParameterList) session
-                        
.getAttribute(IdentityProviderConstants.OpenId.PARAM_LIST);
-            } else {
-                // Extract the parameters from the request.
-                // Authentication not completed.
-                request = new ParameterList(httpReq.getParameterMap());
-            }
-
-            String mode = request
-                    .hasParameter(IdentityConstants.OpenId.ATTR_MODE) ? request
-                    .getParameterValue(IdentityConstants.OpenId.ATTR_MODE)
-                    : null;
-
-            if (IdentityConstants.OpenId.ASSOCIATE.equals(mode)) {
-                // Process an association request made by RP.
-                message = manager.associationResponse(request);
-                responseText = message.keyValueFormEncoding();
-            } else if (IdentityConstants.OpenId.CHECKID_SETUP.equals(mode)
-                    || 
IdentityConstants.OpenId.CHECKID_IMMEDIATE.equals(mode)) {
-
-                boolean authenticatedAndApproved = false;
-                String userSelectedClaimedId = null;
-                String openId = null;
-                String userId = null;
-
-                openId = request
-                        .hasParameter(IdentityConstants.OpenId.ATTR_IDENTITY) 
? request
-                        
.getParameterValue(IdentityConstants.OpenId.ATTR_IDENTITY)
-                        : null;
-
-                if (openId == null)
-                    throw new IdentityProviderException(
-                            
IdentityConstants.ErrorCodes.REQUIRED_ATTRIBUTE_MISSING);
-
-                userId = getUserName(openId);
-
-                if (httpReq.getParameter("authenticatedAndApproved") != null
-                        && httpReq.getParameter("authenticatedAndApproved")
-                                .equals("true")) {
-                    authenticatedAndApproved = true;
-                }
-
-                if (IdentityConstants.OpenId.CANCEL.equals(httpReq
-                        .getParameter(IdentityConstants.OpenId.ACTION))) {
-
-                    authenticatedAndApproved = false;
-
-                } else if (!authenticatedAndApproved) {
-
-                    // Not authenticated, redirect to the authentication
-                    // page.
-                    session.setAttribute(
-                            IdentityProviderConstants.OpenId.PARAM_LIST,
-                            request);
-                    return authPage;
-
-                }
-
-                // Process an authentication request.
-                AuthRequest authReq = AuthRequest.createAuthRequest(request,
-                        manager.getRealmVerifier());
-
-                String opLocalId = null;
-
-                message = manager.authResponse(request, opLocalId,
-                        userSelectedClaimedId, authenticatedAndApproved);
-
-                if (message instanceof DirectError
-                        || message instanceof AuthFailure)
-                    return message.getDestinationUrl(true);
-                else {
-                    if (authReq
-                            
.hasExtension(IdentityConstants.OpenId.ExchangeAttributes.NS_AX)) {
-
-                        MessageExtension extensions = authReq
-                                
.getExtension(IdentityConstants.OpenId.ExchangeAttributes.NS_AX);
-
-                        if (extensions instanceof FetchRequest) {
-
-                            Map required = null;
-                            Map userDataExt = null;
-                            FetchRequest fetchReq = null;
-                            FetchResponse fetchResp = null;
-                            OpenIDProviderData openIDData = null;
-                            Map claimValues = null;
-
-                            fetchReq = (FetchRequest) extensions;
-
-                            // Get the required attributes as requested by the
-                            // RP.
-                            required = fetchReq.getAttributes(true);
-
-                            userDataExt = new HashMap();
-                            openIDData = new OpenIDProviderData();
-
-                            fetchResp = FetchResponse.createFetchResponse(
-                                    fetchReq, userDataExt);
-
-                            claimValues = openIDData.populateAttributeValues(
-                                    required, userId);
-
-                            openIDData.setAttributeExchangeValues(fetchResp,
-                                    claimValues);
-                            message.addExtension(fetchResp);
-
-                        } else {
-                            throw new UnsupportedOperationException("TODO");
-                        }
-                    }
-                    if (authReq
-                            
.hasExtension(IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG)) {
-
-                        MessageExtension extension = authReq
-                                
.getExtension(IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG);
-
-                        if (extension instanceof SRegRequest) {
-
-                            SRegRequest sregReq = null;
-                            List required = null;
-                            Map userDataSReg = null;
-                            Map claimValues = null;
-                            SRegResponse response = null;
-                            OpenIDProviderData openIDData = null;
-
-                            sregReq = (SRegRequest) extension;
-
-                            // Get the required attributes as requested by the
-                            // RP.
-                            required = sregReq.getAttributes(true);
-
-                            userDataSReg = new HashMap();
-                            openIDData = new OpenIDProviderData();
-
-                            response = SRegResponse.createSRegResponse(sregReq,
-                                    userDataSReg);
-
-                            claimValues = openIDData.populateAttributeValues(
-                                    required, userId);
-
-                            openIDData.setSimpleAttributeRegistrationValues(
-                                    response, claimValues);
-
-                            message.addExtension(response);
-
-                        } else {
-                            throw new UnsupportedOperationException("TODO");
-                        }
-                    }
-
-                    return message.getDestinationUrl(true);
-                }
-            } else if (IdentityConstants.OpenId.CHECK_AUTHENTICATION
-                    .equals(mode)) {
-                // Processing a verification request.
-                message = manager.verify(request);
-                responseText = message.keyValueFormEncoding();
-            } else {
-                // Error response.
-                message = DirectError.createDirectError("Unknown request");
-                responseText = message.keyValueFormEncoding();
-            }
-        } catch (Exception e) {
-            // Error response.
-            message = DirectError.createDirectError(e.getMessage());
-            responseText = message.keyValueFormEncoding();
-        }
-
-        try {
-            // Return the result to the user.
-            return directResponse(httpResp, responseText);
-        } catch (IOException e) {
-            throw new IdentityProviderException(
-                    IdentityConstants.ErrorCodes.OPENID_DIRECT_RESP_FAILED);
-        }
-    }
-
-    /**
-     * Find the user name corresponding to the given OpenID.
-     * 
-     * @param openId
-     *                User's OpenID
-     * @return User name corresponding the given OpenID.
-     * @throws ServerException
-     * @throws IdentityProviderException
-     */
-    private String getUserName(String openId) throws ServerException,
-            IdentityProviderException {
-
-        UserStore userStore = null;
-        List users = null;
-
-        userStore = UserStore.getInstance();
-        users = userStore.getAllUserNames();
-
-        if (users == null)
-            throw new IdentityProviderException("No users found");
-
-        Map mapValues = null;
-        Iterator iterator = null;
-
-        iterator = users.iterator();
-
-        while (iterator.hasNext()) {
-
-            String user = (String) iterator.next();
-            mapValues = userStore.getClaimValues(user, null);
-
-            if (mapValues != null && !mapValues.isEmpty()) {
-
-                // User has defined claims!
-                String claimId = (String) mapValues
-                        .get(IdentityConstants.CLAIM_OPENID);
-
-                if (claimId != null) {
-                    if (openId.indexOf(claimId) >= 0
-                            && openId.endsWith(claimId.substring(claimId
-                                    .length() - 1))) {
-                        return user;
-                    }
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Generate OpenID for a given user.
-     * 
-     * @param user
-     *                User
-     * @return
-     */
-    public static String generateOpenID(String user) {
-
-        ServerConfiguration serverConfig = null;
-        String openIDServerUrl = null;
-
-        serverConfig = ServerConfiguration.getInstance();
-        openIDServerUrl = serverConfig.getFirstProperty("OpenIDServerUrl");
-
-        return openIDServerUrl + "/user/" + user;
-    }
-
-    /**
-     * 
-     * @param authPage
-     *                Authentication page
-     */
-    public void setAuthPage(String authPage) {
-
-        ServerConfiguration serverConfig = null;
-        String host = null;
-        String httpsPort = null;
-
-        serverConfig = ServerConfiguration.getInstance();
-        host = serverConfig.getFirstProperty("HostName");
-        httpsPort = serverConfig.getFirstProperty("Ports.HTTPS");
-
-        this.authPage = "https://"; + host + ":" + httpsPort + "/" + authPage;
-    }
-
-    /**
-     * 
-     * @return OpenID Provider server URL.
-     */
-    public static String getOpAddress() {
-        return opAddress;
-    }
-
-    public static ServerManager getManager() {
-        return manager;
-    }
-
-    /**
-     * Send a direct response to the RP.
-     * 
-     * @param httpResp
-     *                HttpServletResponse
-     * @param response
-     *                Response message
-     * @return
-     * @throws IOException
-     */
-    private String directResponse(HttpServletResponse httpResp, String 
response)
-            throws IOException {
-        ServletOutputStream stream = null;
-        try {
-            stream = httpResp.getOutputStream();
-            stream.write(response.getBytes());
-        } finally {
-            if (stream != null)
-                stream.close();
-        }
-        return null;
-    }
+       // Instantiate a ServerManager object.
+       public static ServerManager manager = new OpenIDServerManager();
+       private String authPage;
+
+       private static Log log = LogFactory.getLog(OpenIDProvider.class);
+
+       private static String opAddress = null;
+
+       /**
+        * Configure the OpenID Provider's end-point URL.
+        */
+       static {
+
+               ServerConfiguration serverConfig = null;
+               String openIDServerUrl = null;
+
+               serverConfig = ServerConfiguration.getInstance();
+               openIDServerUrl = 
serverConfig.getFirstProperty("OpenIDServerUrl");
+
+               // This is the OpenID provider server URL
+               opAddress = openIDServerUrl + "/server/";
+               manager.setOPEndpointUrl(opAddress);
+       }
+
+       /**
+        * Process the Relying Party request at the OpenID Provider end.
+        * 
+        * @param httpReq
+        *                HttpServletRequest
+        * @param httpResp
+        *                HttpServletResponse
+        * @return The Url to be redirected
+        * @throws Exception
+        */
+       public String processRequest(HttpServletRequest httpReq,
+                       HttpServletResponse httpResp) throws 
IdentityProviderException {
+
+               ParameterList request = null;
+               Message message = null;
+               String responseText = null;
+               HttpSession session = null;
+
+               try {
+
+                       session = httpReq.getSession();
+
+                       if (IdentityConstants.OpenId.COMPLETE.equals(httpReq
+                                       
.getParameter(IdentityConstants.OpenId.ACTION))
+                                       || 
IdentityConstants.OpenId.CANCEL.equals(httpReq
+                                                       
.getParameter(IdentityConstants.OpenId.ACTION))) {
+                               // Authentication completed.
+                               request = (ParameterList) session
+                                               
.getAttribute(IdentityProviderConstants.OpenId.PARAM_LIST);
+                       } else {
+                               // Extract the parameters from the request.
+                               // Authentication not completed.
+                               request = new 
ParameterList(httpReq.getParameterMap());
+                       }
+
+                       String mode = request
+                                       
.hasParameter(IdentityConstants.OpenId.ATTR_MODE) ? request
+                                       
.getParameterValue(IdentityConstants.OpenId.ATTR_MODE)
+                                       : null;
+
+                       if (IdentityConstants.OpenId.ASSOCIATE.equals(mode)) {
+                               // Process an association request made by RP.
+                               message = manager.associationResponse(request);
+                               responseText = message.keyValueFormEncoding();
+                       } else if 
(IdentityConstants.OpenId.CHECKID_SETUP.equals(mode)
+                                       || 
IdentityConstants.OpenId.CHECKID_IMMEDIATE.equals(mode)) {
+
+                               boolean authenticatedAndApproved = false;
+                               String userSelectedClaimedId = null;
+                               String openId = null;
+                               String userId = null;
+
+                               openId = request
+                                               
.hasParameter(IdentityConstants.OpenId.ATTR_IDENTITY) ? request
+                                               
.getParameterValue(IdentityConstants.OpenId.ATTR_IDENTITY)
+                                               : null;
+
+                               if (openId == null)
+                                       throw new IdentityProviderException(
+                                                       
IdentityConstants.ErrorCodes.REQUIRED_ATTRIBUTE_MISSING);
+
+                               userId = getUserName(openId);
+
+                               if 
(httpReq.getParameter("authenticatedAndApproved") != null
+                                               && 
httpReq.getParameter("authenticatedAndApproved")
+                                                               
.equals("true")) {
+                                       authenticatedAndApproved = true;
+                               }
+
+                               if 
(IdentityConstants.OpenId.CANCEL.equals(httpReq
+                                               
.getParameter(IdentityConstants.OpenId.ACTION))) {
+
+                                       authenticatedAndApproved = false;
+
+                               } else if (!authenticatedAndApproved) {
+
+                                       // Not authenticated, redirect to the 
authentication
+                                       // page.
+                                       session.setAttribute(
+                                                       
IdentityProviderConstants.OpenId.PARAM_LIST,
+                                                       request);
+                                       return authPage;
+
+                               }
+
+                               // Process an authentication request.
+                               AuthRequest authReq = 
AuthRequest.createAuthRequest(request,
+                                               manager.getRealmVerifier());
+
+                               String opLocalId = null;
+
+                               message = manager.authResponse(request, 
opLocalId,
+                                               userSelectedClaimedId, 
authenticatedAndApproved);
+
+                               if (message instanceof DirectError
+                                               || message instanceof 
AuthFailure)
+                                       return message.getDestinationUrl(true);
+                               else {
+                                       if (authReq
+                                                       
.hasExtension(IdentityConstants.OpenId.ExchangeAttributes.NS_AX)) {
+
+                                               MessageExtension extensions = 
authReq
+                                                               
.getExtension(IdentityConstants.OpenId.ExchangeAttributes.NS_AX);
+
+                                               if (extensions instanceof 
FetchRequest) {
+
+                                                       Map required = null;
+                                                       Map userDataExt = null;
+                                                       FetchRequest fetchReq = 
null;
+                                                       FetchResponse fetchResp 
= null;
+                                                       OpenIDProviderData 
openIDData = null;
+                                                       Map claimValues = null;
+
+                                                       fetchReq = 
(FetchRequest) extensions;
+
+                                                       // Get the required 
attributes as requested by the
+                                                       // RP.
+                                                       required = 
fetchReq.getAttributes(true);
+
+                                                       userDataExt = new 
HashMap();
+                                                       openIDData = new 
OpenIDProviderData();
+
+                                                       fetchResp = 
FetchResponse.createFetchResponse(
+                                                                       
fetchReq, userDataExt);
+
+                                                       claimValues = 
openIDData.populateAttributeValues(
+                                                                       
required, userId);
+
+                                                       
openIDData.setAttributeExchangeValues(fetchResp,
+                                                                       
claimValues);
+                                                       
message.addExtension(fetchResp);
+
+                                               } else {
+                                                       log.error("Unsupported 
request type");
+                                                       throw new 
UnsupportedOperationException("TODO");
+                                               }
+                                       }
+                                       if (authReq
+                                                       
.hasExtension(IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG)) {
+
+                                               MessageExtension extension = 
authReq
+                                                               
.getExtension(IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG);
+
+                                               if (extension instanceof 
SRegRequest) {
+
+                                                       SRegRequest sregReq = 
null;
+                                                       List required = null;
+                                                       Map userDataSReg = null;
+                                                       Map claimValues = null;
+                                                       SRegResponse response = 
null;
+                                                       OpenIDProviderData 
openIDData = null;
+
+                                                       sregReq = (SRegRequest) 
extension;
+
+                                                       // Get the required 
attributes as requested by the
+                                                       // RP.
+                                                       required = 
sregReq.getAttributes(true);
+
+                                                       userDataSReg = new 
HashMap();
+                                                       openIDData = new 
OpenIDProviderData();
+
+                                                       response = 
SRegResponse.createSRegResponse(sregReq,
+                                                                       
userDataSReg);
+
+                                                       claimValues = 
openIDData.populateAttributeValues(
+                                                                       
required, userId);
+
+                                                       
openIDData.setSimpleAttributeRegistrationValues(
+                                                                       
response, claimValues);
+
+                                                       
message.addExtension(response);
+
+                                               } else {
+                                                       log.error("Unsupported 
request type");
+                                                       throw new 
UnsupportedOperationException("TODO");
+                                               }
+                                       }
+
+                                       return message.getDestinationUrl(true);
+                               }
+                       } else if (IdentityConstants.OpenId.CHECK_AUTHENTICATION
+                                       .equals(mode)) {
+                               // Processing a verification request.
+                               message = manager.verify(request);
+                               responseText = message.keyValueFormEncoding();
+                       } else {
+                               // Error response.
+                               message = 
DirectError.createDirectError("Unknown request");
+                               responseText = message.keyValueFormEncoding();
+                       }
+               } catch (Exception e) {
+                       // Error response.
+                       message = DirectError.createDirectError(e.getMessage());
+                       responseText = message.keyValueFormEncoding();
+               }
+
+               try {
+                       // Return the result to the user.
+                       return directResponse(httpResp, responseText);
+               } catch (IOException e) {
+                       throw new IdentityProviderException(
+                                       
IdentityConstants.ErrorCodes.OPENID_DIRECT_RESP_FAILED);
+               }
+       }
+
+       /**
+        * Find the user name corresponding to the given OpenID.
+        * 
+        * @param openId
+        *                User's OpenID
+        * @return User name corresponding the given OpenID.
+        * @throws ServerException
+        * @throws IdentityProviderException
+        */
+       private String getUserName(String openId) throws ServerException,
+                       IdentityProviderException {
+
+               UserStore userStore = null;
+               List users = null;
+
+               userStore = UserStore.getInstance();
+               users = userStore.getAllUserNames();
+
+               if (users == null)
+                       throw new IdentityProviderException("No users found");
+
+               Map mapValues = null;
+               Iterator iterator = null;
+
+               iterator = users.iterator();
+
+               while (iterator.hasNext()) {
+
+                       String user = (String) iterator.next();
+                       mapValues = userStore.getClaimValues(user, null);
+
+                       if (mapValues != null && !mapValues.isEmpty()) {
+
+                               // User has defined claims!
+                               String claimId = (String) mapValues
+                                               
.get(IdentityConstants.CLAIM_OPENID);
+
+                               if (claimId != null) {
+                                       if (openId.indexOf(claimId) >= 0
+                                                       && 
openId.endsWith(claimId.substring(claimId
+                                                                       
.length() - 1))) {
+                                               return user;
+                                       }
+                               }
+                       }
+               }
+
+               return null;
+       }
+
+       /**
+        * Generate OpenID for a given user.
+        * 
+        * @param user
+        *                User
+        * @return
+        */
+       public static String generateOpenID(String user) {
+
+               ServerConfiguration serverConfig = null;
+               String openIDServerUrl = null;
+               String openID = null;
+
+               serverConfig = ServerConfiguration.getInstance();
+               openIDServerUrl = 
serverConfig.getFirstProperty("OpenIDServerUrl");
+
+               openID = openIDServerUrl + "/user/" + user;
+
+               log.info("OpenID generated : " + openID);
+
+               return openID;
+       }
+
+       /**
+        * 
+        * @param authPage
+        *                Authentication page
+        */
+       public void setAuthPage(String authPage) {
+
+               ServerConfiguration serverConfig = null;
+               String host = null;
+               String httpsPort = null;
+
+               serverConfig = ServerConfiguration.getInstance();
+               host = serverConfig.getFirstProperty("HostName");
+               httpsPort = serverConfig.getFirstProperty("Ports.HTTPS");
+
+               this.authPage = "https://"; + host + ":" + httpsPort + "/" + 
authPage;
+       }
+
+       /**
+        * 
+        * @return OpenID Provider server URL.
+        */
+       public static String getOpAddress() {
+               return opAddress;
+       }
+
+       public static ServerManager getManager() {
+               return manager;
+       }
+
+       /**
+        * Send a direct response to the RP.
+        * 
+        * @param httpResp
+        *                HttpServletResponse
+        * @param response
+        *                Response message
+        * @return
+        * @throws IOException
+        */
+       private String directResponse(HttpServletResponse httpResp, String 
response)
+                       throws IOException {
+               ServletOutputStream stream = null;
+               try {
+                       stream = httpResp.getOutputStream();
+                       stream.write(response.getBytes());
+               } finally {
+                       if (stream != null)
+                               stream.close();
+               }
+               return null;
+       }
 
 }
\ No newline at end of file

Modified: 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDServerManager.java
==============================================================================
--- 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDServerManager.java
        (original)
+++ 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/openid/OpenIDServerManager.java
        Thu Feb 14 03:28:06 2008
@@ -16,78 +16,78 @@
 
 public class OpenIDServerManager extends ServerManager {
 
-    private static Log _log = LogFactory.getLog(OpenIDServerManager.class);
+       private static Log log = LogFactory.getLog(OpenIDServerManager.class);
 
-    /**
-     * 
-     */
-    public Message associationResponse(ParameterList requestParams) {
-        boolean isVersion2 = requestParams.hasParameter("openid.ns");
-
-        _log.info("Processing association request...");
-
-        try {
-            // build request message from response params (+ integrity check)
-            AssociationRequest assocReq = AssociationRequest
-                    .createAssociationRequest(requestParams);
-
-            isVersion2 = assocReq.isVersion2();
-
-            AssociationSessionType type = assocReq.getType();
-
-            // is supported / allowed ?
-            if (!Association.isHmacSupported(type.getAssociationType())
-                    || !DiffieHellmanSession.isDhSupported(type)
-                    || getMinAssocSessEnc().isBetter(type)) {
-                throw new AssociationException(
-                        "Unable create association for: "
-                                + type.getSessionType() + " / "
-                                + type.getAssociationType());
-            } else // all ok, go ahead
-            {
-                Association assoc = getPrivateAssociations().generate(
-                        type.getAssociationType(), getExpireIn());
-
-                _log.info("Returning private association; handle: "
-                        + assoc.getHandle());
-
-                return AssociationResponse.createAssociationResponse(assocReq,
-                        assoc);
-            }
-        } catch (OpenIDException e) {
-            // association failed, respond accordingly
-            if (isVersion2) {
-                _log.warn("Cannot establish association, "
-                        + "responding with an OpenID2 association error.", e);
-
-                return AssociationError.createAssociationError(e.getMessage(),
-                        getPrefAssocSessEnc());
-            } else {
-                _log.warn("Error processing an OpenID1 association request: "
-                        + e.getMessage()
-                        + " Responding with a dummy association.", e);
-                try {
-                    // generate dummy association & no-encryption response
-                    // for compatibility mode
-                    Association dummyAssoc = getPrivateAssociations().generate(
-                            Association.TYPE_HMAC_SHA1, 0);
-
-                    AssociationRequest dummyRequest = AssociationRequest
-                            
.createAssociationRequest(AssociationSessionType.NO_ENCRYPTION_COMPAT_SHA1MAC);
-
-                    return AssociationResponse.createAssociationResponse(
-                            dummyRequest, dummyAssoc);
-                } catch (OpenIDException ee) {
-                    _log
-                            .error(
-                                    "Error creating negative OpenID1 
association response.",
-                                    e);
-                    return null;
-                }
+       /**
+        * 
+        */
+       public Message associationResponse(ParameterList requestParams) {
+               boolean isVersion2 = requestParams.hasParameter("openid.ns");
+
+               log.info("Processing association request...");
+
+               try {
+                       // build request message from response params (+ 
integrity check)
+                       AssociationRequest assocReq = AssociationRequest
+                                       
.createAssociationRequest(requestParams);
+
+                       isVersion2 = assocReq.isVersion2();
+
+                       AssociationSessionType type = assocReq.getType();
+
+                       // is supported / allowed ?
+                       if 
(!Association.isHmacSupported(type.getAssociationType())
+                                       || 
!DiffieHellmanSession.isDhSupported(type)
+                                       || getMinAssocSessEnc().isBetter(type)) 
{
+                               throw new AssociationException(
+                                               "Unable create association for: 
"
+                                                               + 
type.getSessionType() + " / "
+                                                               + 
type.getAssociationType());
+                       } else // all ok, go ahead
+                       {
+                               Association assoc = 
getPrivateAssociations().generate(
+                                               type.getAssociationType(), 
getExpireIn());
+
+                               log.info("Returning private association; 
handle: "
+                                               + assoc.getHandle());
+
+                               return 
AssociationResponse.createAssociationResponse(assocReq,
+                                               assoc);
+                       }
+               } catch (OpenIDException e) {
+                       // association failed, respond accordingly
+                       if (isVersion2) {
+                               log.warn("Cannot establish association, "
+                                               + "responding with an OpenID2 
association error.", e);
+
+                               return 
AssociationError.createAssociationError(e.getMessage(),
+                                               getPrefAssocSessEnc());
+                       } else {
+                               log.warn("Error processing an OpenID1 
association request: "
+                                               + e.getMessage()
+                                               + " Responding with a dummy 
association.", e);
+                               try {
+                                       // generate dummy association & 
no-encryption response
+                                       // for compatibility mode
+                                       Association dummyAssoc = 
getPrivateAssociations().generate(
+                                                       
Association.TYPE_HMAC_SHA1, 0);
+
+                                       AssociationRequest dummyRequest = 
AssociationRequest
+                                                       
.createAssociationRequest(AssociationSessionType.NO_ENCRYPTION_COMPAT_SHA1MAC);
+
+                                       return 
AssociationResponse.createAssociationResponse(
+                                                       dummyRequest, 
dummyAssoc);
+                               } catch (OpenIDException ee) {
+                                       log
+                                                       .error(
+                                                                       "Error 
creating negative OpenID1 association response.",
+                                                                       e);
+                                       return null;
+                               }
 
-            }
+                       }
 
-        }
-    }
+               }
+       }
 
 }

Modified: 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/OpenIDTokenIssuer.java
==============================================================================
--- 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/OpenIDTokenIssuer.java
     (original)
+++ 
trunk/solutions/identity/modules/identity-provider/src/main/java/org/wso2/solutions/identity/sts/OpenIDTokenIssuer.java
     Thu Feb 14 03:28:06 2008
@@ -11,6 +11,8 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.context.MessageContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.rahas.RahasConstants;
 import org.apache.rahas.RahasData;
 import org.apache.rahas.TrustException;
@@ -39,215 +41,233 @@
 
 public class OpenIDTokenIssuer extends IdentityTokenIssuer {
 
-    private String appliesTo;
+       private String appliesTo;
 
-    /**
-     * Overrides the base functionality to cater OpenID related functionality.
-     */
-    public SOAPEnvelope issue(RahasData data) throws TrustException {
-
-        appliesTo = data.getAppliesToAddress();
-
-        return super.issue(data);
-    }
-    
-    /**
-     * Override this method from the base class : we don't need SAML :)
-     */
-    protected Element createSAMLAssertionAsDOM(IdentityProviderData ipData,
-            RahasData rahasData, DateTime notBefore, DateTime notAfter,
-            String assertionId) throws IdentityProviderException {
-        return null;
-    }
-
-    /**
-     * Overrides the base functionality to cater OpenID related functionality.
-     */
-    protected OMElement createRSTR(RahasData data, Date notBefore,
-            Date notAfter, SOAPEnvelope env, Document doc, Node assertionElem,
-            String assertionId, WSSecEncryptedKey encryptedKey)
-            throws TrustException, SAMLException, IdentityProviderException {
-        
-        int wstVersion = data.getVersion();
-        MessageContext inMsgCtx = data.getInMessageContext();
-
-        OMElement rstrElem = TrustUtil
-                .createRequestSecurityTokenResponseElement(wstVersion, env
-                        .getBody());
-        TrustUtil.createTokenTypeElement(wstVersion, rstrElem).setText(
-                data.getTokenType());
-
-        createDisplayToken(rstrElem, ipData);
-
-        OMElement appliesToEpr = null;
-        if (encryptedKey != null) {
-            int keysize = data.getKeysize();
-            if (keysize == -1) {
-                keysize = encryptedKey.getEphemeralKey().length * 8;
-            }
-
-            TrustUtil.createKeySizeElement(wstVersion, rstrElem, keysize);
-
-            OMElement incomingAppliesToEpr = data.getAppliesToEpr();
-            try {
-                Document eprDoc = DocumentBuilderFactory.newInstance()
-                        .newDocumentBuilder().parse(
-                                new ByteArrayInputStream(incomingAppliesToEpr
-                                        .toString().getBytes()));
-                appliesToEpr = (OMElement) doc.importNode(eprDoc
-                        .getDocumentElement(), true);
-            } catch (Exception e) {
-                new TrustException(TrustException.REQUEST_FAILED, e);
-            }
-
-            OMElement appliesToElem = rstrElem
-                    .getOMFactory()
-                    .createOMElement(
-                            new QName(
-                                    RahasConstants.WSP_NS,
-                                    
RahasConstants.IssuanceBindingLocalNames.APPLIES_TO,
-                                    RahasConstants.WSP_PREFIX), rstrElem);
-            appliesToElem.addChild(appliesToEpr);
-        }
-
-        // Use GMT time in milliseconds
-        DateFormat zulu = new XmlSchemaDateFormat();
-
-        // Add the Lifetime element
-        TrustUtil.createLifetimeElement(wstVersion, rstrElem, zulu
-                .format(notBefore), zulu.format(notAfter));
-
-        OMElement reqSecTokenElem = TrustUtil
-                .createRequestedSecurityTokenElement(wstVersion, rstrElem);
-
-        createOpenIdToken(reqSecTokenElem);
-
-        createAttachedRef(rstrElem, assertionId);
-        createUnattachedRef(rstrElem, assertionId);
-
-        return rstrElem;
-    }
-
-    /**
-     * Creates an OpenID token.
-     * 
-     * @param rstrElem
-     *                RSTR token
-     * @return OpenID token
-     * @throws MessageException
-     */
-    protected OMElement createOpenIdToken(OMElement rstrElem)
-            throws IdentityProviderException {
-        OMElement rdt = IdentityProviderUtil
-                .createOpenIdToken(rstrElem, ipData);
-
-        OpenIDInfoCardToken token = null;
-        Message message = null;
-        ParameterList params = null;
-        String claimID = null;
-        OpenIDInfoCardHeader header = null;
-
-        header = new OpenIDInfoCardHeader(OpenIDProvider.getManager());
-
-        claimID = ((RequestedClaimData) ipData.requestedClaims
-                .get(IdentityConstants.CLAIM_OPENID)).value;
-
-        params = header.buildHeader(claimID, OpenIDProvider.getOpAddress(),
-                appliesTo);
-
-        setSimpleAttributeParams(params);
-
-        try {
-            message = Message.createMessage(params);
-        } catch (MessageException e) {
-            throw new IdentityProviderException(
-                    IdentityConstants.ErrorCodes.OPENID_TOKEN_CREATION_FAILED);
-
-        }
-
-        token = new OpenIDInfoCardToken(message);
-
-        rdt.setText(token.getToken());
-
-        return rdt;
-    }
-
-    /**
-     * Set the attributes in the structure required by the Attribute Exchange.
-     * 
-     * @param params
-     *                Parameter list
-     */
-    protected void setAttributeExchangeParams(ParameterList params) {
-
-        Iterator iterator = null;
-        String key = null;
-        OpenIDRequestedClaimData claim = null;
-
-        params.set(new Parameter(
-                IdentityConstants.OpenId.ExchangeAttributes.EXT,
-                IdentityConstants.OpenId.ExchangeAttributes.NS_AX));
-
-        params.set(new Parameter(
-                IdentityConstants.OpenId.ExchangeAttributes.MODE,
-                IdentityConstants.OpenId.ExchangeAttributes.FETCH_RESPONSE));
-
-        params.set(new Parameter(
-                IdentityConstants.OpenId.SimpleRegAttributes.OP_SREG,
-                IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG));
-
-        iterator = ipData.requestedClaims.keySet().iterator();
-
-        while (iterator.hasNext()) {
-            key = (String) iterator.next();
-            claim = (OpenIDRequestedClaimData) ipData.requestedClaims.get(key);
-
-            if (claim.openIDTag != null) {
-                params.set(new Parameter(
-                        IdentityConstants.OpenId.ExchangeAttributes.TYPE
-                                + claim.openIDTag, claim.uri));
-                params.set(new Parameter(
-                        IdentityConstants.OpenId.ExchangeAttributes.VALUE
-                                + claim.openIDTag, claim.value));
-            }
-        }
-    }
-
-    /**
-     * Set the attributes in the structure required by the Simple Registration.
-     * 
-     * @param params
-     *                Parameter list
-     */
-    protected void setSimpleAttributeParams(ParameterList params) {
-
-        Iterator iterator = null;
-        String key = null;
-        OpenIDRequestedClaimData claim = null;
-
-        params.set(new Parameter(
-                IdentityConstants.OpenId.SimpleRegAttributes.OP_SREG,
-                IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG));
-
-        iterator = ipData.requestedClaims.keySet().iterator();
-
-        while (iterator.hasNext()) {
-            key = (String) iterator.next();
-            claim = (OpenIDRequestedClaimData) ipData.requestedClaims.get(key);
-
-            if (claim.openIDTag != null)
-                params.set(new Parameter(
-                        IdentityConstants.OpenId.SimpleRegAttributes.SREG
-                                + claim.openIDTag, claim.value));
-        }
-    }
-
-    /**
-     * Overrides the base functionality to cater OpenID related functionality.
-     */
-    protected IdentityProviderData getIdentityProviderData(RahasData rahasData)
-            throws Exception {
-        return new OpenIDInfoCardProviderData(rahasData);
-    }
+       private static Log log = LogFactory.getLog(OpenIDTokenIssuer.class);
+
+       /**
+        * Overrides the base functionality to cater OpenID related 
functionality.
+        */
+       public SOAPEnvelope issue(RahasData data) throws TrustException {
+
+               appliesTo = data.getAppliesToAddress();
+
+               return super.issue(data);
+       }
+
+       /**
+        * Override this method from the base class : we don't need SAML :)
+        */
+       protected Element createSAMLAssertionAsDOM(IdentityProviderData ipData,
+                       RahasData rahasData, DateTime notBefore, DateTime 
notAfter,
+                       String assertionId) throws IdentityProviderException {
+               return null;
+       }
+
+       /**
+        * Overrides the base functionality to cater OpenID related 
functionality.
+        */
+       protected OMElement createRSTR(RahasData data, Date notBefore,
+                       Date notAfter, SOAPEnvelope env, Document doc, Node 
assertionElem,
+                       String assertionId, WSSecEncryptedKey encryptedKey)
+                       throws TrustException, SAMLException, 
IdentityProviderException {
+
+               int wstVersion = data.getVersion();
+               MessageContext inMsgCtx = data.getInMessageContext();
+
+               OMElement rstrElem = TrustUtil
+                               
.createRequestSecurityTokenResponseElement(wstVersion, env
+                                               .getBody());
+               TrustUtil.createTokenTypeElement(wstVersion, rstrElem).setText(
+                               data.getTokenType());
+
+               createDisplayToken(rstrElem, ipData);
+
+               if (log.isDebugEnabled())
+                       log.debug("Display token for OpenID Information card, 
created successfully");
+
+               OMElement appliesToEpr = null;
+               if (encryptedKey != null) {
+                       int keysize = data.getKeysize();
+                       if (keysize == -1) {
+                               keysize = encryptedKey.getEphemeralKey().length 
* 8;
+                       }
+
+                       TrustUtil.createKeySizeElement(wstVersion, rstrElem, 
keysize);
+
+                       OMElement incomingAppliesToEpr = data.getAppliesToEpr();
+                       try {
+                               Document eprDoc = 
DocumentBuilderFactory.newInstance()
+                                               .newDocumentBuilder().parse(
+                                                               new 
ByteArrayInputStream(incomingAppliesToEpr
+                                                                               
.toString().getBytes()));
+                               appliesToEpr = (OMElement) doc.importNode(eprDoc
+                                               .getDocumentElement(), true);
+                       } catch (Exception e) {
+                               new 
TrustException(TrustException.REQUEST_FAILED, e);
+                       }
+
+                       OMElement appliesToElem = rstrElem
+                                       .getOMFactory()
+                                       .createOMElement(
+                                                       new QName(
+                                                                       
RahasConstants.WSP_NS,
+                                                                       
RahasConstants.IssuanceBindingLocalNames.APPLIES_TO,
+                                                                       
RahasConstants.WSP_PREFIX), rstrElem);
+                       appliesToElem.addChild(appliesToEpr);
+               }
+
+               // Use GMT time in milliseconds
+               DateFormat zulu = new XmlSchemaDateFormat();
+
+               // Add the Lifetime element
+               TrustUtil.createLifetimeElement(wstVersion, rstrElem, zulu
+                               .format(notBefore), zulu.format(notAfter));
+
+               OMElement reqSecTokenElem = TrustUtil
+                               
.createRequestedSecurityTokenElement(wstVersion, rstrElem);
+
+               createOpenIdToken(reqSecTokenElem);
+
+               createAttachedRef(rstrElem, assertionId);
+               createUnattachedRef(rstrElem, assertionId);
+
+               if (log.isDebugEnabled())
+                       log.debug("RSTR for OpenID Information card, created 
successfully");
+
+               return rstrElem;
+       }
+
+       /**
+        * Creates an OpenID token.
+        * 
+        * @param rstrElem
+        *            RSTR token
+        * @return OpenID token
+        * @throws MessageException
+        */
+       protected OMElement createOpenIdToken(OMElement rstrElem)
+                       throws IdentityProviderException {
+               OMElement rdt = IdentityProviderUtil
+                               .createOpenIdToken(rstrElem, ipData);
+
+               OpenIDInfoCardToken token = null;
+               Message message = null;
+               ParameterList params = null;
+               String claimID = null;
+               OpenIDInfoCardHeader header = null;
+
+               header = new OpenIDInfoCardHeader(OpenIDProvider.getManager());
+
+               claimID = ((RequestedClaimData) ipData.requestedClaims
+                               .get(IdentityConstants.CLAIM_OPENID)).value;
+
+               params = header.buildHeader(claimID, 
OpenIDProvider.getOpAddress(),
+                               appliesTo);
+
+               setSimpleAttributeParams(params);
+
+               try {
+                       message = Message.createMessage(params);
+               } catch (MessageException e) {
+                       log.error(e.getMessage());
+                       throw new IdentityProviderException(
+                                       
IdentityConstants.ErrorCodes.OPENID_TOKEN_CREATION_FAILED);
+
+               }
+
+               token = new OpenIDInfoCardToken(message);
+
+               rdt.setText(token.getToken());
+
+               if (log.isDebugEnabled())
+                       log.debug("OpenID token created successfully");
+
+               return rdt;
+       }
+
+       /**
+        * Set the attributes in the structure required by the Attribute 
Exchange.
+        * 
+        * @param params
+        *            Parameter list
+        */
+       protected void setAttributeExchangeParams(ParameterList params) {
+
+               Iterator iterator = null;
+               String key = null;
+               OpenIDRequestedClaimData claim = null;
+
+               params.set(new Parameter(
+                               IdentityConstants.OpenId.ExchangeAttributes.EXT,
+                               
IdentityConstants.OpenId.ExchangeAttributes.NS_AX));
+
+               params.set(new Parameter(
+                               
IdentityConstants.OpenId.ExchangeAttributes.MODE,
+                               
IdentityConstants.OpenId.ExchangeAttributes.FETCH_RESPONSE));
+
+               params.set(new Parameter(
+                               
IdentityConstants.OpenId.SimpleRegAttributes.OP_SREG,
+                               
IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG));
+
+               iterator = ipData.requestedClaims.keySet().iterator();
+
+               while (iterator.hasNext()) {
+                       key = (String) iterator.next();
+                       claim = (OpenIDRequestedClaimData) 
ipData.requestedClaims.get(key);
+
+                       if (claim.openIDTag != null) {
+                               params.set(new Parameter(
+                                               
IdentityConstants.OpenId.ExchangeAttributes.TYPE
+                                                               + 
claim.openIDTag, claim.uri));
+                               params.set(new Parameter(
+                                               
IdentityConstants.OpenId.ExchangeAttributes.VALUE
+                                                               + 
claim.openIDTag, claim.value));
+                       }
+               }
+
+               if (log.isDebugEnabled())
+                       log.debug("OpenID Ax parameters set successfully");
+       }
+
+       /**
+        * Set the attributes in the structure required by the Simple 
Registration.
+        * 
+        * @param params
+        *            Parameter list
+        */
+       protected void setSimpleAttributeParams(ParameterList params) {
+
+               Iterator iterator = null;
+               String key = null;
+               OpenIDRequestedClaimData claim = null;
+
+               params.set(new Parameter(
+                               
IdentityConstants.OpenId.SimpleRegAttributes.OP_SREG,
+                               
IdentityConstants.OpenId.SimpleRegAttributes.NS_SREG));
+
+               iterator = ipData.requestedClaims.keySet().iterator();
+
+               while (iterator.hasNext()) {
+                       key = (String) iterator.next();
+                       claim = (OpenIDRequestedClaimData) 
ipData.requestedClaims.get(key);
+
+                       if (claim.openIDTag != null)
+                               params.set(new Parameter(
+                                               
IdentityConstants.OpenId.SimpleRegAttributes.SREG
+                                                               + 
claim.openIDTag, claim.value));
+               }
+
+               if (log.isDebugEnabled())
+                       log.debug("OpenID simple attribute parameters set 
successfully");
+       }
+
+       /**
+        * Overrides the base functionality to cater OpenID related 
functionality.
+        */
+       protected IdentityProviderData getIdentityProviderData(RahasData 
rahasData)
+                       throws Exception {
+               return new OpenIDInfoCardProviderData(rahasData);
+       }
 
 }

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

Reply via email to