KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > security > servlets > RunAsServlet


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.test.security.servlets;
23
24 import java.io.IOException JavaDoc;
25 import java.io.PrintWriter JavaDoc;
26 import java.io.InputStream JavaDoc;
27 import java.io.ObjectInputStream JavaDoc;
28 import java.security.Principal JavaDoc;
29 import java.util.HashSet JavaDoc;
30 import java.lang.reflect.Method JavaDoc;
31 import javax.servlet.http.HttpServlet JavaDoc;
32 import javax.servlet.http.HttpServletRequest JavaDoc;
33 import javax.servlet.http.HttpServletResponse JavaDoc;
34 import javax.servlet.ServletException JavaDoc;
35 import javax.naming.InitialContext JavaDoc;
36 import javax.rmi.PortableRemoteObject JavaDoc;
37 import org.jboss.test.security.interfaces.RunAsServiceRemoteHome;
38 import org.jboss.test.security.interfaces.RunAsServiceRemote;
39 import org.jboss.test.security.interfaces.CallerInfo;
40 import org.jboss.security.SimplePrincipal;
41
42 /**
43  * The target of the web constraints security tests
44  *
45  * @author Scott.Stark@jboss.org
46  * @version $Revision: 40169 $
47  */

48 public class RunAsServlet extends HttpServlet JavaDoc
49 {
50    protected void doRequest(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
51       throws ServletException JavaDoc, IOException JavaDoc
52    {
53       Principal JavaDoc caller = request.getUserPrincipal();
54
55       InputStream JavaDoc is = request.getInputStream();
56       ObjectInputStream JavaDoc ois = new ObjectInputStream JavaDoc(is);
57       try
58       {
59          String JavaDoc method = (String JavaDoc) ois.readObject();
60          if( method == null )
61             throw new ServletException JavaDoc("No method parameter given");
62          CallerInfo info = (CallerInfo) ois.readObject();
63          InitialContext JavaDoc ctx = new InitialContext JavaDoc();
64          Object JavaDoc obj = ctx.lookup("jacc/RunAs");
65          obj = PortableRemoteObject.narrow(obj, RunAsServiceRemoteHome.class);
66          RunAsServiceRemoteHome home = (RunAsServiceRemoteHome) obj;
67          System.out.println("Found RunAsServiceRemoteHome");
68          RunAsServiceRemote bean = home.create();
69          System.out.println("Created RunAsServiceRemote");
70          Class JavaDoc[] sig = {CallerInfo.class};
71          Method JavaDoc methodCall = bean.getClass().getMethod(method, sig);
72          Object JavaDoc[] args = {info};
73          methodCall.invoke(bean, args);
74          bean.remove();
75       }
76       catch(Exception JavaDoc e)
77       {
78          e.printStackTrace();
79          throw new ServletException JavaDoc(e);
80       }
81
82       PrintWriter JavaDoc pw = response.getWriter();
83       pw.write("<html>\n");
84       pw.write("<br>Saw UserPrincipal: "+caller);
85       pw.write("<br>PathInfo: "+request.getPathInfo());
86       pw.write("</html>\n");
87    }
88
89    protected void doPost(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
90       throws ServletException JavaDoc, IOException JavaDoc
91    {
92       doRequest(request, response);
93    }
94
95    protected void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
96       throws ServletException JavaDoc, IOException JavaDoc
97    {
98       doRequest(request, response);
99    }
100 }
101
Popular Tags