KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > portal > core > servlet > LoginServlet


1 /*****************************************
2  * *
3  * JBoss Portal: The OpenSource Portal *
4  * *
5  * Distributable under LGPL license. *
6  * See terms of license at gnu.org. *
7  * *
8  *****************************************/

9 package org.jboss.portal.core.servlet;
10
11 import java.io.IOException JavaDoc;
12
13 import javax.servlet.ServletException JavaDoc;
14 import javax.servlet.http.HttpServlet JavaDoc;
15 import javax.servlet.http.HttpServletRequest JavaDoc;
16 import javax.servlet.http.HttpServletResponse JavaDoc;
17
18 import org.jboss.portal.common.util.Tools;
19 import org.jboss.portal.common.util.UUIDGenerator;
20 import org.jboss.portal.core.CoreConstants;
21 import org.jboss.portal.core.security.jaas.CacheLoginModule;
22
23 /**
24  * Perform the first pass of the sign in protocol.
25  *
26  * @author <a HREF="mailto:julien@jboss.org">Julien Viet</a>
27  * @version $Revision: 1.6 $
28  */

29 public class LoginServlet extends HttpServlet JavaDoc
30 {
31
32    private UUIDGenerator generator = new UUIDGenerator();
33    
34    protected void doGet(HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc resp) throws ServletException JavaDoc, IOException JavaDoc
35    {
36       doPost(req, resp);
37    }
38
39    protected void doPost(HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc resp) throws ServletException JavaDoc, IOException JavaDoc
40    {
41       // Get data from request
42
String JavaDoc username = (String JavaDoc)req.getAttribute("username");
43       String JavaDoc password = (String JavaDoc)req.getAttribute("password");
44       String JavaDoc redirect = (String JavaDoc)req.getAttribute("redirect");
45
46       // Or as parameters
47
if (username == null || password == null)
48       {
49          username = req.getParameter("username");
50          password = req.getParameter("password");
51          redirect = req.getParameter("redirect");
52       }
53
54       // Need non null username/password to try authentication
55
if (username == null)
56       {
57          throw new ServletException JavaDoc("No username specified");
58       }
59       if (password == null)
60       {
61          throw new ServletException JavaDoc("No password specified");
62       }
63
64       String JavaDoc hash = Tools.md5AsHexString(generator.generateKey());
65       CacheLoginModule.Handle handle = CacheLoginModule.cache(hash, username, password);
66
67       // Store in the session so it will not be removed from the weak map right now
68
req.getSession().setAttribute(CoreConstants.SES_SECURITY_HANDLE, handle);
69
70       // Compute the redirect string
71
StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
72       buffer.append(req.getContextPath()).
73       append("/authentication?username=").
74       append(Tools.createXWWWFormURLEncoded(username)).
75       append("&password=").
76       append(Tools.createXWWWFormURLEncoded(hash));
77       if (redirect != null)
78       {
79          buffer.append("&redirect=").
80                 append(Tools.createXWWWFormURLEncoded(redirect));
81       }
82
83       // Perform redirect
84
String JavaDoc url = buffer.toString();
85       resp.sendRedirect(url);
86    }
87 }
88
Popular Tags