单点登录服务器端部署方案

面向读者

部署CAS服务器端供应商、单点登录方案实施者。

cas单点登录简介

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

  1. 开源的企业级单点登录解决方案。
  1. CAS Server 为需要独立部署的 Web 应用。
  2. CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

CAS 原理和协议

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

CAS 最基本的协议过程
详细协议参考: https://apereo.github.io/cas/4.2.x/protocol/CAS-Protocol-Specification.html

第一次登陆APP1应用


登陆APP1后登陆app2



CAS 基础协议CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。
在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。
另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。

cas-server部署(以数据库用户名密码认证为例)

下载源代码:
https://github.com/apereo/cas/releases/tag/v4.0.0

增加数据库认证maven依赖

找到cas-server-webapp\pom.xml,增加


 org.jasig.cas
cas-server-support-jdbc
  ${project.version}
  compile



  org.jasig.cas
  cas-server-webapp-support
  ${project.version}
  compile



mysql
mysql-connector-java
5.1.6

修改数据源配置

找到
\cas-server-4.0.0\cas-server-webapp\src\main\webapp\WEB-INF\deployerConfigContext.xml
文件添加一个数据源


    
    
    
    

找到bean id="authenticationManager"结点,增加自己的密码校验处理规则MyQueryDatabaseAuthenticationHandler,实现个性化实现密码校验规则,修改这个配置。

   
    
       
          
          
            
        
    
    
        
    

去除https校验(如有需要)

修改 cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml 配置文件,将 p:cookieSecure="true” 改为 p:cookieSecure="false"


修改 cas\WEB-INF\spring-configuration\warnCookieGenerator.xml 配置文件,将 p:cookieSecure="true” 改为 p:cookieSecure="false" ,改完后如下:


修改 deployerConfigContext.xml: 找到"HttpBasedServiceCredentialsAuthenticationHandler" bean 添加:p:requireSecure="false", 改完后如下:


打成war包###

对cas-server-webapp执行 clean package maven命令

你可能感兴趣的:(单点登录服务器端部署方案)