Author: prabath Date: Thu Jun 5 03:06:52 2008 New Revision: 17990 URL: http://wso2.org/svn/browse/wso2?view=rev&revision=17990
Log: do the host/port mapping for the OpenID returning url - this is required when the RP hosted Tomcat is behind an Apache front-end Modified: trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDConsumer.java trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDUtil.java Modified: trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDConsumer.java URL: http://wso2.org/svn/browse/wso2/trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDConsumer.java?rev=17990&r1=17989&r2=17990&view=diff ============================================================================== --- trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDConsumer.java (original) +++ trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDConsumer.java Thu Jun 5 03:06:52 2008 @@ -178,6 +178,7 @@ VerificationResult verification = null; Identifier verified = null; HttpSession session = null; + String recUrl = null; session = request.getSession(); @@ -191,9 +192,10 @@ if (queryString != null && queryString.length() > 0) receivingURL.append("?").append(request.getQueryString()); + recUrl = OpenIDUtil.getMappedReturningUrl(receivingURL.toString()); + // Verify the response - verification = manager.verify(receivingURL.toString(), openidResp, - discovered); + verification = manager.verify(recUrl, openidResp, discovered); // Examine the verification result and extract the verified // identifier @@ -258,4 +260,5 @@ IdentityConstants.ErrorCodes.INVALID_OPENID, e); } } -} + +} \ No newline at end of file Modified: trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDUtil.java URL: http://wso2.org/svn/browse/wso2/trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDUtil.java?rev=17990&r1=17989&r2=17990&view=diff ============================================================================== --- trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDUtil.java (original) +++ trunk/solutions/identity/modules/token-verifier-core/src/main/java/org/wso2/solutions/identity/relyingparty/openid/OpenIDUtil.java Thu Jun 5 03:06:52 2008 @@ -24,9 +24,12 @@ import org.openid4java.infocard.OpenIDToken; import org.openid4java.message.ParameterList; import org.wso2.solutions.identity.IdentityConstants; +import org.wso2.solutions.identity.relyingparty.servletfilter.RelyingPartyData; public class OpenIDUtil { + private static RelyingPartyData rpData; + /** * Validates whether the given XMLToken corresponding to an OpenID * information card. @@ -47,6 +50,40 @@ } /** + * When the RP hosted Tomcat is behind an Apache serever, OpenID + * verification fails since return_to url mismatches with the returning url. + * To avoid that - only when the Tomcat is behind an Apache frontend we need + * to provide a host/port mapping in the web.xml. + * @param returnUrl + * @return mapped returing irl + */ + public static String getMappedReturningUrl(String returnUrl) { + + if (rpData != null) { + if (rpData.getMappedHostName() != null + && rpData.getMappingHostName() != null) { + if (returnUrl.contains(rpData.getMappingHostName())) { + returnUrl = returnUrl.replace(rpData.getMappingHostName(), + rpData.getMappedHostName()); + } + + } + + if (rpData.getMappedPortNumber() != null + && rpData.getMappingPortNumber() != null) { + if (returnUrl.contains(rpData.getMappingPortNumber())) { + returnUrl = returnUrl.replace( + rpData.getMappingPortNumber(), rpData + .getMappedPortNumber()); + } + + } + } + + return returnUrl; + } + + /** * Validates whether the provided request is an OpenID authentication * request. * @param request HttpServletRequest @@ -84,4 +121,12 @@ return false; } } + + public static RelyingPartyData getRpData() { + return rpData; + } + + public static void setRpData(RelyingPartyData rpData) { + OpenIDUtil.rpData = rpData; + } } _______________________________________________ Identity-dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/identity-dev
