CAS单点登入

背景

  1. 企业开始进行信息化建设,搭建了一套业务系统A。通过用户名密码就可以登录。
  2. 随着业务的发展,又搭建了业务系统B、业务系统C、业务系统D……,每套系统都需要登录、输入各自的用户名密码,记忆成本高。
  3. 通过打通数据层,共用底层用户数据,统一不同业务系统的鉴权机制,实现了登录所有系统用一套用户名密码即可。
  4. 但是每套系统都得登录一遍,操作起来还是麻烦,可以不可以只登录一次就行了?

     SSO单点登录应运而生,所有新技术的变革都是解决某项用户需求痛点。

CAS和SSO

单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

CAS全称为Central Authentication Service,即中央认证服务,是一个企业多语言单点登录的解决方案,并努力去成为一个身份验证和授权需求的综合平台。

CAS原理

流程图

用户首次登录时流程如下:

1.用户浏览器访问系统A需登录受限资源。

2.系统A发现该请求需要登录,将请求重定向到认证中心,进行登录。

3.认证中心呈现登录页面,用户登录,登录成功后,认证中心重定向请求到系统A,并附上认证通过令牌。

4.系统A与认证中心通信,验证令牌有效,证明用户已登录。

5.系统A将受限资源返给用户。

已登录用户首次访问应用群中系统B时:

  1. 浏览器访问另一应用B需登录受限资源。

  2. 系统B发现该请求需要登录,将请求重定向到认证中心,进行登录。

  3. 认证中心发现已经登录,即重定向请求响应到系统B,附带上认证令牌。

  4. 系统B与认证中心通信,验证令牌有效,证明用户已登录。

  5. 系统B将受限资源返回给客户端。

GItHub地址:https://github.com/apereo/cas-overlay-template

必要依赖

   
        
        
            org.apereo.cas
            cas-server-support-jdbc
            ${cas.version}
        
        
            org.apereo.cas
            cas-server-support-jdbc-drivers
            ${cas.version}
        
        
            mysql
            mysql-connector-java
            5.1.36
        
        
        
            org.apereo.cas
            cas-server-core-authentication-api
            ${cas.version}
        

        
        
            org.apereo.cas
            cas-server-core-configuration-api
            ${cas.version}
        

        
        
            org.apereo.cas
            cas-server-support-rest
            ${cas.version}
        

        
        
            org.apache.shiro
            shiro-core
            1.4.1
        

    

 

你可能感兴趣的:(CAS单点登入)