String receivingURL = receivingURL();
Map<String, Object> params = new HashMap<String, Object>();
for (Map.Entry<String, String[]> entry : request().queryString().entrySet())
params.put(entry.getKey(), entry.getValue());
OpenIDLoginInformation info = (OpenIDLoginInformation) Cache.get(Constants.Cache.OPENID_LOGIN_KEY_PREFIX + sessionId);
String purpose = info.takeLoginPurpose();
try {
if ("login".equals(purpose))
return verifyOpenIDForLogin(receivingURL, params, info.getDiscoveryInformation());
if ("connect".equals(purpose))
return verifyOpenIDForConnection(receivingURL, params, info.getDiscoveryInformation());
return renderInvalid(UserErrorCode.INVALID_OPENID_PURPOSE);
} catch (OpenIDException e) {
return renderError(ServerErrorCode.OPENID_ERROR, e);
}