cas实现单点登录

添加虚拟域名:  可以添加多个虚拟域名

      windows下修改文件:  

C:\Windows\System32\drivers\etc\hosts

添加内容如下:

127.0.0.1  www.caohaibing.com

生成证书

我的机器名称为“www.caohaibing.com”,我就把它作为我的host,那么对应的证书应该这样创建。

keytool -genkey -keyalg RSA -alias casfortest -dname "cn=www.caohaibing.com" -storepass <span style="background-color: rgb(255, 255, 51);">changeit</span>

其中 casfortest 为别名, changeit 为密码(即密钥库口令);

       该语句是对我们之前介绍的 keytool -genkey -alias casfortest -keyalg RSA 的精写,它已经通过相应的参数指定了对应的参数值,而不需要再与用户交互了。如果还用之前的语句生成证书的话,那么对应的值应该这样填:  姓 和 名字 都填   www.caohaibing.com

  


       之后会在用户的对应目录下(这里目录是  C:\Users\aaa)生成一个.keystore文件。之后需要将该文件导出为一个证书到%JAVA_HOME%/jre/lib/security目录下,对应指令为:

keytool -export -alias casfortest -file %JAVA_HOME%/jre/lib/security/casfortest.crt -storepass changeit

 之后需要将导出的casfortest.crt证书添加到运行时使用的JRE的受信任证书库中,此时如果出现异常可将原本%JAVA_HOME%/jre/lib/security目录下的cacerts删除后继续执行以下指令。

keytool -import -alias casfortest -file %JAVA_HOME%/jre/lib/security/casfortest.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit


配置CAS   服务器端  

Cas应用都需要有一个Cas Server。Cas Server是基于Java Servlet实现的,其要求部署在Servlet2.4以上版本的Web容器中。在此笔者将其部署到tomcat7中。Cas Server是要求使用https协议进行访问的,所以如果你的Web容器没有开启https通道,则需先开启。

参考博文:http://haohaoxuexi.iteye.com/blog/2128732

1.1     开启tomcat7的https通道

    打开tomcat安装目录conf/server.xml文件,将如下语句的注释打开,并加上属性keystorePass,密码为我们在建立keystore时设立的密码。这样我们就可以使用https来访问tomcat了。默认其会到${user.home}/.keystore寻找keystore文件,我们之前建立的keystore文件默认就在这个位置。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"  
           maxThreads="150" scheme="https" secure="true"  
           clientAuth="false" sslProtocol="TLS"  
                    keystorePass="changeit"/> 
如果更改过生成证书的位置:参考博文 http://blog.csdn.net/small_love/article/details/6664831

1.2     部署Cas Server

       从官网下载的cas server中会含有一个cas server对应的war包,对应路径为cas-server-3.5.2\modules\cas-server-webapp-3.5.2.war,我们可以把该war包重命名为cas.war,然后丢到tomcat的webapps目录下。之后我们就可以启动tomcat,然后访问https://localhost:8443/cas/login就可以看到Cas的登录页面了。

1.3     更改认证方式   http://blog.csdn.net/cenguocheng/article/details/12185815

http://blog.csdn.net/chbsrzf/article/details/50434560

http://haohaoxuexi.iteye.com/blog/2128869

http://haohaoxuexi.iteye.com/blog/2142616

CAS默认的认证方式是 用户名和密码一样。要更改为从数据库中查询。需要配置数据源 dataSource,参考以上博文。

建立使用Cas进行单点登录的应用
参考博文:http://haohaoxuexi.iteye.com/blog/2142631

新建普通的maven web-app项目,CasClientA,CasClientB,将index.jsp页面的欢迎显示更改一下。再lib目录中加入jar: cas-client-core-3.2.1.jar (直接在maven加依赖,一直加载不了这个包);  CasClientA和CasClientB项目更改相同

pom.xml中加依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.caohaibing</groupId>
  <artifactId>CasClientA</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>CasClientA Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.2-b01</version>
        </dependency>
        
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
  </dependencies>
  <build>
    <finalName>CasClientA</finalName>
  </build>
</project>
web.xml文件更改为:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
  
     
    <context-param>
      <param-name>serverName</param-name>
      <param-value>http://www.caohaibing.com:8080</param-value>
   </context-param>
    
    
    <filter>
      <filter-name>casAuthenticationFilter</filter-name>
   <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
      <init-param>
         <param-name>casServerLoginUrl</param-name>
         <param-value>https://www.caohaibing.com:8443/cas/login</param-value>
      </init-param>
   </filter>
   <filter-mapping>
      <filter-name>casAuthenticationFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   
   <filter>
        <filter-name>casTicketValidationFilter</filter-name>
        <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
        <init-param>
                <param-name>casServerUrlPrefix</param-name>
                <param-value>https://www.caohaibing.com:8443/cas</param-value>
        </init-param>
   </filter>
   <filter-mapping>
      <filter-name>casTicketValidationFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   
     <filter>
      <filter-name>casHttpServletRequestWrapperFilter</filter-name>
   <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>casHttpServletRequestWrapperFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   
   <filter>
      <filter-name>casAssertionThreadLocalFilter</filter-name>
     <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>casAssertionThreadLocalFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

      

    <display-name>Client A</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    
</web-app>

将 CasClientA 和 CasClientB 打成 war 包,放入 tomcat 的webapp目录下;

1. 在cmd进入对应的项目路径
2. mvn clean package -DskipTests -Pdev   生成对应的WAR包,在项目的target目录下,名字

测试Cas单点登录的部署:

tomcat的bin目录下运行 startup.bat 启动tomcat,



访问客户端CasClientA:  www.caohaibing.com:8080/CasClientA

页面会自动跳转到 Cas Server 的登录页面:https://www.caohaibing.com:8443/cas/login?service=http%3A%2F%2Fwww.caohaibing.com%3A8080%2FCasClientA%2F


输入用户名密码,根数据库表中的信息匹配:登录成功会重新跳转到CasClientA的index.jsp页面:


测试访问CasClientB项目: http://www.caohaibing.com:8080/CasClientB/


不再需要转到 Cas Server 的登录页面了;;



注意
在服务器端生成证书事如果密码用的不是 changit  时, 因为添加到运行时使用的JRE的受信任证书库中的密码 默认为 changeit , 这里的密码需要更改,不然会出现证书之类的错误。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值