ae2a044cced9475b66430f72d27ad8b80290ab1d
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / aa / AAServlet.java
1 package edu.internet2.middleware.shibboleth.aa;
2
3 import java.io.*;
4 import java.util.*;
5 import javax.servlet.*;
6 import javax.servlet.http.*;
7 import javax.naming.*;
8 import javax.naming.directory.*;
9 import org.opensaml.*;
10 import org.w3c.dom.*;
11 import edu.internet2.middleware.shibboleth.*;
12 import edu.internet2.middleware.eduPerson.*;
13
14
15
16
17 public class AAServlet extends HttpServlet {
18
19     String myName;
20     String dirUrl;
21     String uidSyntax;
22     String arpFactoryMethod;
23     String arpFactoryData;
24     String ctxFactory;
25     AAResponder responder;
26     //HandleRepositoryFactory hrf;
27     ArpFactory arpFactory;
28     
29     
30     public void init(ServletConfig conf)
31         throws ServletException{
32         
33         try{
34             super.init(conf);
35             myName = getInitParameter("domain");
36             dirUrl = getInitParameter("dirUrl");
37             uidSyntax = getInitParameter("ldapUserDnPhrase");
38             ctxFactory = getInitParameter("ctxFactoryClass");
39             if(ctxFactory == null)
40                 ctxFactory = "com.sun.jndi.ldap.LdapCtxFactory";
41             arpFactoryMethod = getInitParameter("arpFactoryMethod");
42             arpFactoryData = getInitParameter("arpFactoryData");
43
44             //hrf = HandleRepositoryFactory.getInstance(Constants.POLICY_CLUBSHIB, this);
45             arpFactory = ArpRepository.getInstance(arpFactoryMethod, arpFactoryData);
46
47             Hashtable env = new Hashtable(11);
48             env.put(Context.INITIAL_CONTEXT_FACTORY, ctxFactory);
49
50             env.put(Context.PROVIDER_URL, dirUrl);
51             DirContext ctx = new InitialDirContext(env);
52             
53             responder = new AAResponder(/*hrf*/ null, arpFactory, ctx, myName);
54             //  }catch(HandleException he){
55             //      throw new ServletException("Init failed: "+he);
56         }catch(NamingException ne){
57             throw new ServletException("Init failed: "+ne);
58         }catch(AAException ae){
59             throw new ServletException("Init failed: "+ae);
60         }
61     }
62
63     public void doGet(HttpServletRequest req, HttpServletResponse resp)
64             throws ServletException, IOException {
65         resp.setContentType("text/html");
66         PrintWriter out = resp.getWriter();
67         out.println("<HTML><BODY> Sorry! GET is not supported. </BODY></HTML>");
68         return;
69     }
70         
71     public void doPost(HttpServletRequest req, HttpServletResponse resp)
72         throws ServletException, IOException {
73
74         SAMLAttribute[] attrs = null;
75         SAMLException ourSE = null;
76         AASaml saml = null;
77
78         try{
79             saml = new AASaml(req, myName);
80             String resource = saml.getResource();
81             String handle = saml.getHandle();
82             String shar = saml.getShar();
83             String issuedBy = saml.getIssuer();
84             System.err.println("AA debug: handle:"+handle);
85             System.err.println("AA debug: issuer:"+issuedBy);
86             System.err.println("AA debug: shar:"+shar);
87
88             attrs = responder.getReleaseAttributes(uidSyntax, handle, shar, resource);
89             System.err.println("AA debug: got attributes");
90
91         }catch (org.opensaml.SAMLException se) {
92             ourSE = se;
93             //  }catch (HandleException he) {
94             //      ourSE = new org.opensaml.SAMLException(org.opensaml.SAMLException.RESPONDER,"Bad Handle or Handle Service Problem: "+he);
95         }catch (Exception e) {
96             ourSE = new org.opensaml.SAMLException(org.opensaml.SAMLException.RESPONDER,"AA Failed with: "+e);
97         }finally{
98
99             if(saml == null)
100                 throw new ServletException("AA failed to build a request: "+ourSE);
101             saml.respond(resp, attrs, ourSE);
102         }
103     }
104
105 }