cas 单点登陆

来源:互联网 发布:复旦大学有网络教育 编辑:程序博客网 时间:2024/05/18 13:12

1下载cas-server-3.5.2-release.tar.gz
cas-client-3.2.1-release.jar
2,ssl证书
(1)创建证书
这里使用JDK生成的证书,正式环境需购买专业提供商的证书
 用JDK自带的keytool工具生成证书:
keytool -genkey -alias xiaokaceng -keyalg RSA -keystore d=:/cas/xiaokaceng
注意:您的名字与姓氏是什么? 一定要输入服务器域名

(2)导出证书
keytool -export -file d:/cas/xiaokaceng.crt -alias xiaokaceng -keystore d:/cas/xiaokaceng


(3)JVM导入证书
keytool -import -keystore D:\JavaDev\jdk1.7\jre\lib\security\cacerts -file d:\cas\xiaokaceng.crt -alias xiaokaceng
特别提示:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
那么请输入密码:changeit


3,tomcat 配置
conf server.xml
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="/home/lwq/zs/newzs"  //密钥文件,第一步创建的密钥文件
               keystorePass="123456"    //第一步创建文件时设置的密码
                />    注:该部分在server.xml被注释掉了,去掉注释,加入最后两行
   


    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
4,把cas-server-3.5.2-release.tar.gz解压,把解压文件夹下 modules/cas-server-webapp-3.5.2.war 拷贝到
tomcat/webapps下并改名为cas(改名为方便访问)
5,启动tomcat
访问https://localhost:8443如果成功,则ssl证书成功
访问
https://localhost:8443/cas成功,说明cas 服务端配置成功
7cas客户端配置
以tomcat自带的examples为例子
cas-client-3.2.1-release.jar 解压,把modules/cas-client-core-3.2.1.jar 以及 commons-logging-1.1.jar拷贝到
examples/WEB-INF/lib 下
并更改
WEB-INF/web.xml 配置
<!-- ======================== 单点登录开始 ======================== -->


    <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->


    <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>CAS Filter</filter-name>


      <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>


      <init-param>


        <param-name>casServerLoginUrl</param-name>


        <param-value>https://aohua:8443/cas/login</param-value>


      </init-param>


      <init-param>


        <param-name>serverName</param-name>


        <param-value>http://aohua:8080</param-value>


      </init-param>


    </filter>


    <filter-mapping>


      <filter-name>CAS Filter</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>https://aohua:8443/cas</param-value>


      </init-param>


      <init-param>


        <param-name>serverName</param-name>


        <param-value>http://aohua:8080</param-value>


      </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>


 


    <!-- ======================== 单点登录结束 ======================== -->










0 0