[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