搭建CAS服务器,并实现一个简单的单点登录的demo

官网:http://jasig.github.io/cas/
Cas Server下载:http://developer.jasig.org/cas/
Cas Client下载:http://developer.jasig.org/cas-clients/
测试环境:
  jdk:java version "1.8.0_60"
  tomcat:apache-tomcat-7.0.65
  CAS Server:cas-server-4.0.0-release.zip
  CAS Client:cas-client-3.1.12-release.zip


首先安装jdk、Tomcat ,这里安装不做介绍。

进入正题:

一、使用java keytool工具为系统生成https证书,并为系统注册

1、生成证书文件
keytool -genkey -alias asq -keyalg RSA -keystore g:/keys/asq

 


2、导出证书文件
keytool -export -file g:/keys/asq.crt -alias asq -keystore g:/keys/asq

 


生成到指定目录下的两个文件

 




3、将证书导入到客户端JRE中(注意、是导入JRE中),如果security中已经存在cacerts,需要先将其删除。
keytool -import -keystore "C:\Program Files\Java\jdk1.8.0_131\jre\lib\security\cacerts" -file g:/keys/asq.crt -alias asq

 


二、配置服务器端 (单独放到一个Tomcat中 ,端口号8080,并进行如下配置)
 1、从http://developer.jasig.org/cas/上下载cas服务器端cas-server-4.0.0-release.zip,在modules目录下找到cas-server-webapp-4.0.0.war,
将其复制到%TOMCAT_HOME%\webapps下,并将名称改为cas.war

 


 2、修改%TOMCAT_HOME%\conf\server.xml文件,添加以下代码

<!--keystoreFile  生成的证书文件  keystorePass  秘钥库密码  -->
<Connector SSLEnabled="true" clientAuth="false" 
           keystoreFile="F:/keys/castest" keystorePass="123456" 
   maxThreads="150" port="8443" 
   protocol="org.apache.coyote.http11.Http11Protocol" 
   scheme="https" secure="true" sslProtocol="TLS"/>



3、启动Tomcat,测试:https://localhost:8443/

 



如果可以正常访问,说明证书安装成功

 




4.访问https://localhost:8443/cas/login,出现以下画面:

 



输入账号和密码
  casuser
  Mellon
登录之后:

 



此时说明服务器端已经配置成功。可通过https://localhost:8443/cas/logout退出登录


三、配置cas client 客户端(单独一个Tomcat服务器,注意与cas server 的服务器端口号不要冲突,这里默认改成18080)

1、创建maven web项目 cas-client1。(之前已经创建一个,要部署多个client ,所以创建cas-client2)

 



创建出简单的一个web项目,只有一个index.jsp页面 ,以下是client2的目录结构

 



2、在pom.xml文件中添加cas-client 的依赖(可以手动添加,将从http://developer.jasig.org/cas-clients/上下载cas-client-3.1.12-release.zip,
在modules目录下找到cas-client-core-3.1.12.jar、commons-collections-3.2.jar、commons-logging-1.1.jar复制到项目WEB-INF/lib下)

pom.xml添加以下代码:

    <dependency>
      <groupId>org.jasig.cas</groupId>
      <version>3.1.1</version>
      <artifactId>cas-client-core</artifactId>
    </dependency>



3、在cas-client2项目的web.xml中配置cas 的过滤器

 <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>/CasClient/*</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>
      <!--这里是搭建的 cas server 服务端的IP-->
      <param-value>https://sso.castest.com:8443/cas/login</param-value>
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <param-value>http://localhost:18080</param-value>
    </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>https://sso.castest.com:8443/cas</param-value><!-- 此处必须为登录url/cas/,带有任何其它路径都会报错,如“https://sso.castest.com:8443/cas/login”,这样也会报错。 -->
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <!--这里注意url 的路径,sso.client1.com 在host文件中配置对应的127.0.0.1
           端口号一定要与启动Tomcat服务器的端口一致,一般cas server 服务器单独部署,
           -->
      <param-value>http://sso.client1.com:18080</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>

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

  <!-- session超时定义,单位为分钟 -->
  <session-config>
    <session-timeout>2</session-timeout>
  </session-config>



4、在index.jsp中添加随意标识,用于区分不同的应用程序

 



5、利用maven打包工具,将项目打压成一个war包,在这里注意:jar包的名称就是对应访问的端口号后面的项目名
在这里使用IDEA的maven工具,点击 package生成war包

 


在target目录中生成了我们需要的war包

 



6、将该war包放到cas client Tomcat中的webapps中

 




7、修改Tomcat目录下的conf中server.xml ,将端口号改为18080 ,具体修改如下:

 <Server port="18005" shutdown="SHUTDOWN">

 <Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 <Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />
 <!---注意redirectPort 重定向端口号,必须跟cas server的端口号一致-->




8、启动cas-client 的Tomcat 服务器



9、先访问 url1 :localhost:18080/cas-client1/index.jsp 

     然后访问url2: localhost:18080/cas-client2/index.jsp
当访问url1的时候,成功跳转到cas server服务器上

 


登录验证之后 ,成功跳转到client1的index.jsp页面

 



当访问url1 并且登录成功后 ,然后访问url2 ,就不需要再次验证身份,直接跳转到client2的index.jsp页面

 



一个最简单的单点登录至此全部完成












转载于:https://www.cnblogs.com/aima1013/p/8066504.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
server 地址: http://www.jasig.org/cas/download client 地址: http://www.ja-sig.org/downloads/cas-clients/ 当前最新版本 cas-server-3.4.2 , cas-client-3.1.10 2. 安装 server l 解压 cas-server-3.4.2 ,将 cas-server-3.4.2\modules\cas-server-webapp-3.4.2.war 拷贝到 tomcat 的 webapps 下。 3. 配置 server 3.1. 添加 cas server 依赖的 jar n cas-server-3.4.2\modules\cas-server-support-jdbc-3.4.2.jar 、 cas-server-integration-restlet-3.4.2.jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下。 n 数据库驱动 jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下。 n 到 apache 网站下载下面三个 cas server 依赖 jar 包拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下 Ø http://apache.freelamp.com/commons/collections/binaries/commons-collections-3.2.1-bin.zip Ø http://apache.etoak.com/commons/dbcp/binaries/commons-dbcp-1.4-bin.zip Ø http://apache.etoak.com/commons/pool/binaries/commons-pool-1.5.4-bin.zip n 下载 restlet 相关 http://www.restlet.org/downloads/ , 解压后将下面 jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib: ( 它奶奶地这一步骤很折腾 ) com.noelios.restlet.ext.servlet_2.5.jar com.noelios.restlet.ext.spring_2.5.jar com.noelios.restlet.jar org.restlet.ext.spring_2.5.jar org.restlet.jar n 下载 CGlib http://sourceforge.net/projects/cglib/files/ 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 。 n 下载 ASM/OW2 http://forge.ow2.org/projects/asm/ 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 。 3.2. 添加数据源
CAS(Central Authentication Service)是一种单点登录协议,可以实现在多个应用系统中,用户只需要登录一次就可以访问所有应用系统。 要实现CAS单点登录,需要以下步骤: 1. 部署CAS服务器CAS服务器一个独立的单点登录服务器,可以独立部署或者和其他应用部署在同一台服务器上。 2. 配置CAS服务器CAS服务器需要配置认证方式、用户信息源等信息。可以使用LDAP、数据库等多种方式来存储用户信息。 3. 集成应用系统:在每个需要单点登录的应用系统中,需要添加CAS客户端组件,与CAS服务器进行通信,实现单点登录功能。 4. 用户认证流程:当用户访问一个需要认证的应用系统时,应用系统会重定向到CAS服务器进行认证;如果用户已经登录过其他应用系统,则CAS服务器会返回认证成功的信息,并重定向回应用系统,同时在用户浏览器中设置一个CAS票据;如果用户没有登录过,则CAS服务器会要求用户进行认证,并在认证成功后返回CAS票据。 5. 应用系统认证流程:当用户访问其他应用系统时,应用系统会检查用户浏览器中是否存在CAS票据,如果存在,则向CAS服务器发送请求,验证票据是否有效;如果有效,则认为用户已经通过认证,允许用户访问应用系统;如果无效,则要求用户重新进行认证。 以上是CAS单点登录的基本实现步骤,具体实现细节会因为不同的应用场景和技术栈而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值