SSO介绍

什么是SSO认证

单点登录(Single-Sign-OnSSO),即用户的一次性鉴别登录。当用户在身份认证中心登录一次以后,即可获得访问单点登录系统中,其他关联系统和应用软件的权限。这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个拥有着不同的认证与授权模式应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统,不再需要记忆多个不同的用户名与密码。

单点登录协议

本系统提供以下类型的单点登录协议。

CAS

CAS全称为Central Authentication Service,即中央认证服务,是为应用提供可信身份认证的单点登录系统,CAS本身没有授权,也没有权限控制功能。

CAS包含两部分:

OAuth2.1

OAuth2.1是一个为第三方应用提供统一授权的开放标准协议。在OAuth2.1协议中,根据不同的授权场景分为两种不同的授权模式,客户端凭证模式和授权码模式。

客户端凭证模式适用于受保护资源本身属于客户端的场景,客户端使用客户端ID和客户端凭证获取访问令牌,此模式客户端与资源所有者不属于一个实体,因此不适用于统一身份认证服务的业务场景。授权码模式广泛应用于Web应用等需要资源所有者参与的授权场景中,是一身份认证服务的业务场景。

授权码模式的基本流程是客户端首先向授权服务器请求一个授权码,并使用授权码获取访问令牌。为了避免攻击者伪装成客户端获取访问令牌,在OAuth2.1协议中授权码模式基于交换码证明密钥(PKCEproof key for code exchange)设计。客户端请求授权时,PKCE随机创建一个code_verifier,该code_verifier经过t_m加密变换后生成t_mcode_verifier),客户端请求授权码时,将t_mcode_verifier)和t_m发送到授权服务器;请求访问令牌时将code_verifier发送到授权服务器,授权服务器通过t_m计算出t_m'code_verifier),与之前收到的t_mcode_verifier)进行比较,以确保客户端在本次授权过程中未被仿冒。授权码模式中加入PKCE后,攻击者即使拦截到授权码也无法获得code_verifier,从而无法仿冒客户端获取到访问令牌,因此PKCE可以有效防御授权码拦截攻击,提升OAuth协议的安全性。