Interesting, here is my entire servlet:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package edu.utah.acs.tek.casclient;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.security.Principal;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jasig.cas.client.util.AssertionHolder;
import org.jasig.cas.client.validation.Assertion;
/**
*
* @author dpbw
*/
public class casclient extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String ticketValue = (String)request.getParameter("ticket");
URL url = new
URL("https://testserver.acs.utah.edu:443/cas/validate?ticket="+ticketValue+"&service="+"https://othertestserver.acs.utah.edu/casringtest/casclient");
BufferedReader in = new BufferedReader(new
InputStreamReader(url.openStream()));
if (in==null){
System.out.println("no url input stream");
}
else{
String line1 = in.readLine();
String line2 = in.readLine();
System.out.println("line1; "+line1);
System.out.println("line2: "+line2);
}
HttpSession session = request.getSession();
System.out.println("remote user: " +request.getRemoteUser()); // ALWAYS
RETURNS NULL
// final Assertion assertion =
(Assertion)session.getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);
final Assertion assertion = AssertionHolder.getAssertion();
if (assertion == null) {
System.out.println("assertion null!"); //Always null, with or
without Assertion filter?
} else {
final Principal p = assertion.getPrincipal();
System.out.println("principal: " + p.getName());
}
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
System.out.println("session attr"+(String) e.nextElement());
}
e = request.getAttributeNames();
while (e.hasMoreElements()) {
System.out.println("request attr"+(String) e.nextElement());
}
e = request.getParameterNames();
while (e.hasMoreElements()) {
System.out.println("request pram" +(String) e.nextElement()); // I
get "ticket from the CAS Auth Filter
}
Cookie[] cookie = request.getCookies();
if (cookie != null) {
for (int i = 0; i < cookie.length; i++) {
System.out.println("cookie name"+cookie[i].getName());
System.out.println("cookie val"+cookie[i].getValue());
}
}
e = request.getHeaderNames();
while (e.hasMoreElements()) {
String hdrName = (String) e.nextElement();
System.out.println("header name"+hdrName);
System.out.println("header value: "+request.getHeader(hdrName));
}
String unid = "0000000";
if (assertion != null) {
unid = (String) assertion.getPrincipal().getAttributes().get("uid");
}
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet casclient</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet casclient at " + request.getContextPath()
+ "</h1>");
out.println("<h1>Unid " + unid + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click
on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Here is my web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://dev.acs.utah.edu:443/cas/login</param-value>
</init-param>
<init-param>
<param-name>service</param-name>
<param-value>https://guide.acs.utah.edu:9932/casringtest/casclient</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://guide.acs.utah.edu:9932</param-value>
</init-param>
<init-param>
<param-name>artifactParameterName</param-name>
<param-value>ticket</param-value>
</init-param>
</filter>
<filter>
<filter-name>CAS Wrapper Filter</filter-name>
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Authentication Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>casclient</servlet-name>
<servlet-class>edu.utah.acs.tek.casclient.casclient</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>casclient</servlet-name>
<url-pattern>/casclient</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
-----Original Message-----
From: Marvin Addison [mailto:[email protected]]
Sent: Friday, July 31, 2009 11:39 AM
To: [email protected]
Subject: Re: [cas-user] How do I get prinicpal from CASifyed client program?
> I have to assume that the Wrapper Filter is catching and eating all SSL
> errors since my certs aren't trusted.
That is not the case. Take a look at the source for that filter --
it's painfully simple.
SSL trust issues always show up at ticket validation time. What's
likely is that your _application_ swallowed the error formerly and
ticket validation failed, so there was no CAS principal to inject into
the request, which would explain your getting null.
M
--
You are currently subscribed to [email protected] as:
[email protected]
To unsubscribe, change settings or access archives, see
http://www.ja-sig.org/wiki/display/JSG/cas-user
--
You are currently subscribed to [email protected] as:
[email protected]
To unsubscribe, change settings or access archives, see
http://www.ja-sig.org/wiki/display/JSG/cas-user