转自:http://www.open-open.com/lib/view/open1359286846414.html

此文的目的是为了加深自己的理解,做一个备份与分享

过程全为自己的实际操作步骤

第一步:准备的环境

win7 64位的系统

jdk1.6.0_37

apache-tomcat-6.0.14

cas-server-3.4.8-release

cas-client-3.2.0-release

这里用到的是tomcat自带作为测试的程序

首先,找到系统的hosts文件( C:\Windows\System32\drivers\etc\hosts )增加

在本机映射三个域名

127.0.0.1   cas.baishi.com

127.0.0.1   app1.baishi.com

127.0.0.1   app2.baishi.com

解释,其中,cas.baishi.com对应部署cas server的tomcat ,这个域名对应证书的生成

app1.baishi.com对应部署app1应用的tomcat

app2.baishi.com对应部署app2应用的tomcat

第二步:部署cas的服务

(1)首先,我在D盘下建一个文件夹,如D:/baishikeys 接着用jdk自带的keytool生成证书,即在cmd命令中键入

keytool -genkey -alias baishi -keyalg RSA -keystore “D:/baishikeys/baishikey” 该命令生成keys证书

baishi为证书的别名,执行结果如下图,注意其中姓氏要写之前cas server对应的域名
(2)导出证书

keytool -export -file d:/baishikeys/baishi.crt -alias baishi -keystore d:/baishikeys/baishikey

执行结果如图(其中密码和上面证书密码一致)

(3)把证书导入JDK中

先找到你安装的jdk目录中cacerts文件删掉,如D:\Program Files\Java\jdk1.6.0_37\jre\lib\security\cacerts

这样的目的是避免后面报错

执行keytool -import -keystore "D:\Program Files\Java\jdk1.6.0_37\jre\lib\security\cacerts" -file D:/baishikeys/baishi.crt -alias baishi

执行结果如图(其中密码和上面一致就行)

第三步:配置cas的服务端

解压apache-tomcat-6.0.14重命名为apache-tomcat-cas

把下载的cas-server-3.4.8-release包解压,在文件modules中,找到cas-server-webapps-3.4.8.war

复制到apache-tomcat-cas的webapps文件夹下,重命名为 cas.war,打开apache-tomcat-cas的

conf/server.xml文件,

找到64到72中间的注释打开,改为

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="D:/baishikeys/baishikey"

keystorePass="123456"

/>

其中keystoreFile是创建证书的路径,keystorePass是创建证书的密码,到此cas服务的配置完成

启动cas服务的apache-tomcat-cas,访问https://cas.baishi.com:8443/cas

执行图:点击继续浏览此网站

执行后图

用户名和密码输入相同的字符串就可以通过了

到此cas服务端的配置成功了

第四步:配置cas的客户端

(1) 安装配置 apache-tomcat-app1

解压apache-tomcat-6.0.14 .tar,改名为apache-tomcat-app1对应应用app1的服务

修改apache-tomcat-app1的启动端口,在文件conf/server.xml文件找到如下内容:

<Connector port="8080" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443" />
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

改成

<Connector port="18080" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="18443" />
4 <Connector port="18009" protocol="AJP/1.3" redirectPort="18443" />

为了避免多个tomcat冲突,把<Server port="8005" shutdown="SHUTDOWN">也改成 <Server port="8085" shutdown="SHUTDOWN">

启动apache-tomcat-app1 ,浏览器输入 http://app 1 .baishi.com: 1 8080/examples/servlets/ 回车:

则tomcat配置成功

接下来复制 client的lib包cas-client-core-3.2.0.jar到 apache-tomcat-app1\webapps\examples\WEB-INF\lib\目录下, 在apache-tomcat-app1\webapps\examples\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://cas.baishi.com:8443/cas/login</param-value>
              </init-param>
              <init-param>
                  <param-name>serverName</param-name>
                  <param-value>http://app1.baishi.com:18080</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://cas.baishi.com:8443/cas</param-value>
              </init-param>
             <init-param>
                  <param-name>serverName</param-name>
                  <param-value>http://app1.baishi.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>
   
          <!-- ======================== 单点登录结束 ======================== -->

(2) 安装配置 apache-tomcat-app2

解压apache-tomcat-6.0.14 .tar,改名为apache-tomcat-app2对应应用app2的服务

修改apache-tomcat-app2的启动端口,在文件conf/server.xml文件找到如下内容:

<Connector port="8080" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443" />
  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

改成

<Connector port="28080" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="28443" />
4 <Connector port="28009" protocol="AJP/1.3" redirectPort="28443" />

为了避免多个tomcat冲突,把<Server port="8005" shutdown="SHUTDOWN">也改成<Server port="8095" shutdown="SHUTDOWN">

启动apache-tomcat-app2 ,浏览器输入 http://app 2 .baishi.com: 2 8080/examples/servlets/ 回车:

按照上述(1)中的方法验证是否成功。

接下来复制 client的lib包cas-client-core-3.2.0.jar到 apache-tomcat-app2\webapps\examples\WEB-INF\lib\目录下, 在apache-tomcat-app2\webapps\examples\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://cas.baishi.com:8443/cas/login</param-value>
              </init-param>
              <init-param>
                  <param-name>serverName</param-name>
                  <param-value>http://app2.baishi.com:18080</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://cas.baishi.com:8443/cas</param-value>
              </init-param>
             <init-param>
                  <param-name>serverName</param-name>
                  <param-value>http://app2.baishi.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>
   
          <!-- ======================== 单点登录结束 ======================== -->

第五步:测试

启动之前配置好的三个tomcat分别为:apache-tomcat-cas、apache-tomcat-app1、apache-tomcat-app2.

打开浏览器地址栏中输入:http://app1.baishi.com:18080/examples/servlets/servlet/HelloWorldExample

输入账户和密码之后会出现Hello World

之浏览器地址中输入http://app2.baishi.com:28080/examples/servlets/servlet/HelloWorldExample

就不用输入账户和密码了,直接进入Hello World

最后地址栏中输入:https://cas.baishi.com:8443/cas/logout会注销这个流程,重新开始认证

以上就是整个cas单点登录的简单配置

如果有cas服务的tomcat报错java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR

只需把

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="D:/baishikeys/baishikey"

keystorePass="123456"

/>

改成

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="D:/baishikeys/baishikey"

keystorePass="123456"

/>

即可

转载于:https://www.cnblogs.com/summer520/p/3595809.html

CAS服务下单点登录(服务端与客户端)相关推荐

  1. WEB服务在单点登录系统中的应用研究

    WEB服务在单点登录系统中的应用研究 转载于:https://blog.51cto.com/hnoas/105573

  2. CAS+SSO配置单点登录完整案例

    CAS+SSO配置单点登录完整案例 目录 CAS+SSO配置单点登录完整案例 部署环境 环境说明 安全证书配置 1.打开cmd命令窗口(管理员身份打开) 2.生成证书,在cmd窗口输入以下命令: 3. ...

  3. xxl-sso kisso cas三个单点登录系统分析

    xxl-sso kisso cas三个单点登录系统分析 xxl-sso 统一在一个地方登录 客户端和服务端同时连接一个redis 登录成功后将用户信息写入redis. 登录成功返回 sessionId ...

  4. 多维系统下单点登录深入详解

    多维系统下单点登录深入详解 1. 从淘宝天猫的单点登录说起 1.1 SSO单点登录 1.2 淘宝天猫登录场景解析 2. 单点登录之整体解决方案 2.1 设计方案-Cookie 2.2 设计方案-分布式 ...

  5. SSO系列之——同域下单点登录系统介绍

    Single-Sign-On即单点登录,从一个页面登录,就可以访问其他互信系统,避免用户重新登录,例如登录了百度,则百度云等其他百度旗下其他网站均可免登录访问.在整个业务服务群中起到了辅助.集成的作用 ...

  6. 学习CAS实现SSO单点登录

    学习CAS实现SSO单点登录 网上找了几篇比较详细的教程,在这记录一下: 原理: CAS实现SSO单点登录原理 教程: 1.CAS实现单点登录(SSO)经典完整教程 2.SSO之CAS单点登录实例演示 ...

  7. CAS 实现的单点登录

    --任何的成功都不是一蹴而就,经验需要慢慢积累.沉淀! 项目里面用到了CAS单点登录,最近也简单的从应用层面简单研究了下CAS这个开源架构. 1. 基本概念:cookie, session, 会话co ...

  8. [精华][推荐]CAS SSO单点登录服务端客户端学习

    1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用(多 ...

  9. SSO单点登录教程(四)自己动手写SSO单点登录服务端和客户端

    作者:蓝雄威,叩丁狼教育高级讲师.原创文章,转载请注明出处. 一.前言 我们自己动手写单点登录的服务端目的是为了加深对单点登录的理解.如果你们公司想实现单点登录/单点注销功能,推荐使用开源的单点登录框 ...

最新文章

  1. topcoder srm 691 div1 -3
  2. 云供应商安全评估:小心落入陷阱
  3. 查询Linux系统最后重启时间的三个方法
  4. ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
  5. yum安装openoffice
  6. nuxt解决首屏加载慢问题_一个 Node 脚本让你的前端项目加载速度飞起来
  7. (35)Verilog HDL算术运算:取模、指数、对数
  8. 区块链+”来了,区块链金融将如何颠覆传统金融
  9. CentOS 7.4 安装网易云音乐
  10. 黑客老王:一个人的黑客史
  11. win10系统从旧固态迁移到新固态,win10系统迁移到固态硬盘ssd
  12. 计算机图形学2-Liang-Barsky直线裁剪算法
  13. 解决雷电模拟器一直出现安全证书有问题
  14. 怎么进行PDF合并?PDF合并方法
  15. java 用0部补位_java 用0部补位
  16. 软件测试高薪“骗局”软件测试入门就月薪过万,还包就业。别再上当受骗了、清醒点吧
  17. 百度地图API入门1-申请百度API key
  18. 编译原理晦涩难懂-2-正则表达式
  19. 如何处理json数据
  20. cad移动时捕捉不到基点_CAD2012 怎么捕捉不到点了? 对象捕捉也开了。

热门文章

  1. CentOS安装 Go 环境
  2. 1037:计算2的幂
  3. Ubuntu18.04安装ROS Melodic(亲测有效)
  4. 【Tools】XMind8安装教程详解
  5. angular路由笔记_Angular2学习笔记——路由器模型(Router)
  6. pandas python2.7_python-2.7 – Pandas Seaborn安装
  7. 计算机图形学画圆和直线代码,计算机图形学作业(中点法画直线和八分画圆法).doc...
  8. 每天一道LeetCode-----后缀表达式求值
  9. css 样式三元运算_CSS扩展语言——Sass入门指南
  10. Hbase(1)——基础语句(1)