zoukankan      html  css  js  c++  java
  • cas认证机制

    1、什么事CAS?

      CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法。CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

    2、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 验证的过程对于用户是透明的。
    3、工作流程
      当访问某一个请求时,客户端会拦截,并经过AuthenticationFilter认证过滤器(在cas client 的web.xml中配置),如果用户没有登录会重定向到SSO认证中心。
    <filter>
    <filter-name>CAS Authentication Filter</filter-name>
      #用于拦截请求,判断是否登录
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
    <param-name>casServerLoginUrl</param-name>
        #认证系统地址
    <param-value>http://127.0.0.1:8080/cas/login
    </param-value>
    </init-param>
    <init-param>
    <param-name>serverName</param-name>
        #认证完成后重定向回来的地址
    <param-value>http://127.0.0.1:8181</param-value>
    </init-param>
    </filter>
    • 用户输入用户名和密码提交至SSO认证中心
    • SSO认证中心校验用户信息,创建用户与SSO认证中心之间的会话,称为全局会话,同时创建授权令牌
    • SSO认证中心带着令牌跳转会最初的请求地址(app.example.com)
    • app.example.com拿到令牌,去SSO认证中心校验令牌是否有效
    • SSO认证中心校验令牌,如果有效返回,并注册改地址
    • app.example.com 使用该令牌创建与用户的会话,称为局部会话
    • 当同一个用户访问其他系统时,其他系统发现用户没登陆,还会跳转到认证中心,认证中心发现该用户已经有登陆信息,会带上令牌返回到其他系统
    • 其他系统拿到令牌,去SSO认证中心校验令牌是否有效
    • SSO认证中心校验令牌,返回有效,注册系统地址

     注:部分资源文字来自网络

  • 相关阅读:
    Centos7 禁止firewalld并使用iptables 作默认防火墙
    在Kibana上格式化字段,更好的在dashboard上展示
    利用 ELK系统分析Nginx日志并对数据进行可视化展示
    Nginx 服务器开启status页面检测服务状态
    Linux 上通过binlog文件 恢复mysql 数据库详细步骤
    Linux 为FTP 服务器添加iptables规则--案例分析
    NUMA架构的CPU -- 你真的用好了么?
    Linux 上利用Nginx代理uWSGI处理Flask web应用
    Linux 之不同运维人员共用root 账户权限审计
    Strategy
  • 原文地址:https://www.cnblogs.com/handongxue/p/12307057.html
Copyright © 2011-2022 走看看