您的位置:首页 > 其它

非SSL协议 CAS服务端部署及客户端配置

2017-04-02 15:05 459 查看
1.下载CAS server与CAS client

下载地址:

http://downloads.jasig.org/cas/cas-server-4.0.0-release.zip

http://downloads.jasig.org/cas-clients/cas-client-3.2.1-release.zip

2.部署CAS server

a.将下载的cas-server-4.0.0-release.zip解压,把cas-server-4.0.0/modules/cas-server-webapp-4.0.0.war拷贝到 tomcat的webapps目录,并更名为cas.war。

b.修改cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml文件,将属性p:cookieSecure="true"
变成 p:cookieSecure="false"(这个设置主要是让CAS不走SSL协议)

c.启动tomcat,然后访问:http://localhost:8888/cas,如果能出现如下图所示的CAS登录页面,则说明CAS Server 已经部署成功。



3.配置客户端

这里的例子是从零配置客户端,如果是将已有项目改造为client,也是类似操作。

a.首先新建一个web project,项目名为cas_client

b.将cas-client-3.2.1/modules/cas-client-core-3.2.1.jar拷贝到项目的lib目录下

c.将下面的内容新增到web.xml文件中

[html]
view plain
copy





<!-- ======================== 单点登录结束 ======================== -->    
   <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->    
   <listener>    
       <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>    
   </listener>    
       
   <!-- 该过滤器用于实现单点登出功能,可选配置。 -->    
   <filter>    
       <filter-name>CAS Single Sign Out Filter</filter-name>    
       <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>    
   </filter>    
   
   <filter-mapping>    
       <filter-name>CAS Single Sign Out Filter</filter-name>    
       <url-pattern>/*</url-pattern>    
   </filter-mapping>    
   
   <!-- 该过滤器负责用户的认证工作,必须启用它 -->    
   <filter>    
       <filter-name>CASFilter</filter-name>    
       <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>    
       <init-param>    
           <param-name>casServerLoginUrl</param-name>    
           <param-value>http://localhost:8080/cas/login</param-value><!-- cas 服务器登录 地址  http://IP:PORT/CasWebProName/login -->    
       </init-param>    
       <init-param>    
           <!-- 这里的server是服务端的IP -->    
           <param-name>serverName</param-name>    
           <param-value>http://localhost:8080</param-value><!-- 客户端服务器地址   http://IP:PORT -->    
       </init-param>    
   </filter>    
   
   <filter-mapping>    
       <filter-name>CASFilter</filter-name>    
       <url-pattern>/*</url-pattern>    
   </filter-mapping>    
       
   <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->    
   <filter>    
       <filter-name>CAS Validation Filter</filter-name>    
       <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>    
       <init-param>    
           <param-name>casServerUrlPrefix</param-name>    
           <param-value>http://localhost:8080/cas</param-value><!-- cas 服务器地址  http://IP:PORT/CasWebProName -->    
       </init-param>    
       <init-param>    
           <param-name>serverName</param-name>    
           <param-value>http://localhost:8080</param-value><!-- 客户端服务器地址   http://IP:PORT -->    
       </init-param>    
   </filter>    
   <filter-mapping>    
       <filter-name>CAS Validation Filter</filter-name>    
       <url-pattern>/*</url-pattern>    
   </filter-mapping>    
       
   <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->    
   <filter>    
       <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>    
       <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>    
   </filter>    
   <filter-mapping>    
       <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>    
       <url-pattern>/*</url-pattern>    
   </filter-mapping>    
       
   <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->    
   <filter>    
       <filter-name>CAS Assertion Thread Local Filter</filter-name>    
       <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>    
   </filter>    
   <filter-mapping>    
       <filter-name>CAS Assertion Thread Local Filter</filter-name>    
       <url-pattern>/*</url-pattern>    
   </filter-mapping>    
   <!-- ======================== 单点登录结束 ======================== -->    

d.将index.jsp按如下修改,通过AttributePrincipal获取用户名(默认情况下,登陆成功后CAS server只会讲用户名传给客户端)

[plain]
view plain
copy





<%@ page language="java" import="java.util.*,org.jasig.cas.client.authentication.AttributePrincipal" pageEncoding="UTF-8"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();   
String username = principal.getName();  
%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
    <base href="<%=basePath%>">  
  </head>  
    
  <body>  
   welcome <%=username %> <br>  
  </body>  
</html>  

e.启动tomcat,如果报异常,可能是缺少commons-logging-xx.jar ,将对应的jar包添加到lib下,xx代表版本号,我的为1.1.1
f.正常运行后,浏览器输入localhost:8080/cas_client,如果页面重定向到上面的cas登陆页面,则表示客户端配置成功,且地址栏里的地址为:



正如上一篇文章所说,service后指向的路径为登陆成功后页面的跳转地址

g.用户名密码分别输入:casuser与Mellon。

   在CAS server中,用户名密码默认是写死的,在webapps\cas\WEB-INF下的deployerConfigContext.xml中进行了设置。

h.登录成功后,页面会跳转到index.jsp页面,并显示用户名。

i.此时再访问localhost:8080/cas
会出现如下页面:



----------------------------------------------------------------------------------------------------

这样就实现了简单的服务端部署与客户端配置,后续还需要进行服务端登录页的改造,将固定的用户名密码改为从数据库查询等操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: