[Yanel-commits] rev 30794 -
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl
michi at wyona.com
michi at wyona.com
Sat Jan 26 16:04:19 CET 2008
Author: michi
Date: 2008-01-26 16:04:19 +0100 (Sat, 26 Jan 2008)
New Revision: 30794
Modified:
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java
Log:
create user with openid as user id and add to identity map
Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java 2008-01-26 07:31:07 UTC (rev 30793)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/security/impl/DefaultWebAuthenticatorImpl.java 2008-01-26 15:04:19 UTC (rev 30794)
@@ -10,6 +10,7 @@
import org.wyona.security.core.ExpiredIdentityException;
import org.wyona.security.core.api.Identity;
import org.wyona.security.core.api.User;
+import org.wyona.security.core.api.UserManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -125,17 +126,26 @@
} else if (openIDSignature != null) {
log.debug("Verify OpenID provider response ...");
if (verifyOpenIDProviderResponse(request)) {
- getXHTMLAuthenticationForm(request, response, realm, "OpenID verification successful, but OpenID session implementation is not finished yet!", reservedPrefix, xsltLoginScreenDefault, servletContextRealPath, sslPort, map);
- // TODO: Add verified OpenID user to the session
-/*
- log.info("Authentication successful: " + username);
- IdentityMap identityMap = (IdentityMap)session.getAttribute(YanelServlet.IDENTITY_MAP_KEY);
+ UserManager uManager = realm.getIdentityManager().getUserManager();
+ String openIdentity = request.getParameter("openid.identity");
+ if (openIdentity != null) {
+ if (!uManager.existsUser(openIdentity)) {
+ uManager.createUser(openIdentity, null, null, null);
+ log.warn("An OpenID user has been created: " + openIdentity);
+ }
+ User user = uManager.getUser(openIdentity);
+ IdentityMap identityMap = (IdentityMap)request.getSession(true).getAttribute(YanelServlet.IDENTITY_MAP_KEY);
if (identityMap == null) {
identityMap = new IdentityMap();
- session.setAttribute(YanelServlet.IDENTITY_MAP_KEY, identityMap);
+ request.getSession().setAttribute(YanelServlet.IDENTITY_MAP_KEY, identityMap);
}
identityMap.put(realm.getID(), new Identity(user));
-*/
+ // OpenID authentication successful, hence return null instead an "exceptional" response
+ return null;
+ } else {
+ log.error("No openid.identity!");
+ getXHTMLAuthenticationForm(request, response, realm, "OpenID verification successful, but no openid.identity!", reservedPrefix, xsltLoginScreenDefault, servletContextRealPath, sslPort, map);
+ }
} else {
getXHTMLAuthenticationForm(request, response, realm, "Login failed: OpenID response from provider could not be verified!", reservedPrefix, xsltLoginScreenDefault, servletContextRealPath, sslPort, map);
}
More information about the Yanel-commits
mailing list