单点登录sso的技术原理是什么?

203人浏览 / 0人评论 / 添加收藏

单点登录(Single Sign-On, SSO)的核心目标是允许用户通过一次登录访问多个相互信任的系统,而无需重复输入凭证。其技术原理主要围绕统一的认证中心和令牌传递机制展开,以下是详细的技术实现原理:

一、核心角色
用户(User):需要访问多个应用系统的终端用户。

应用系统(Service Provider, SP):用户需要访问的各个子系统(例如:邮箱系统、CRM系统)。

认证中心(Identity Provider, IdP):负责统一认证用户身份的中央服务器(例如:OAuth2 授权服务器、SAML IdP)。

二、SSO 的核心流程
1. 用户首次访问应用系统(未登录)
用户访问系统A(SP1)。

SP1 发现用户未登录,将其重定向到**认证中心(IdP)**进行登录。

用户在认证中心完成登录(输入用户名/密码、多因素认证等)。

认证中心生成全局会话(Global Session)和令牌(Token)(如 JWT、Ticket)。

认证中心将令牌返回给用户浏览器(通常通过重定向 URL 参数或 Cookie)。

2. 用户访问其他应用系统(已登录)
用户访问系统B(SP2)。

SP2 发现用户未登录,将其重定向到认证中心。

认证中心检查用户是否已有全局会话(例如通过浏览器中的 Cookie)。

如果存在全局会话,认证中心直接返回令牌给 SP2,用户自动登录。

3. 令牌验证与信任
每个应用系统(SP)接收到令牌后,向认证中心验证令牌的有效性。

认证中心确认令牌合法后,返回用户身份信息(如用户ID、权限等)。

SP 根据用户身份信息创建局部会话(Local Session),用户无需重复登录。

三、关键技术实现机制
1. 跨域共享认证状态
Cookie 共享(同根域名):

例如,主域设置为 .example.com,子域 a.example.com 和 b.example.com 可共享 Cookie。

认证中心与所有应用系统使用同一根域名。

Token 传递(跨域场景):

通过 URL 参数、HTTP 重定向或前端跨域技术(如 CORS)传递令牌。

常见于 OAuth2、OpenID Connect 协议。

2. 令牌(Token)机制
短期令牌:用于传输用户身份(如 JWT、SAML Assertion)。

JWT(JSON Web Token):包含用户信息、签名和有效期,可自验证。

SAML Assertion:基于 XML 的断言,需通过认证中心验证。

长期令牌(Refresh Token):用于更新短期令牌,避免用户频繁登录。

3. 协议支持
OAuth2/OpenID Connect:

OAuth2 用于授权,OpenID Connect(基于 OAuth2)扩展了身份认证功能。

使用 authorization_code 流程实现 SSO(如 Google、GitHub 登录)。

SAML 2.0:

企业级 SSO 标准,基于 XML 交换认证信息。

认证中心生成 SAML Assertion,应用系统验证断言。

CAS(Central Authentication Service):

开源协议,通过 Ticket 实现 SSO(例如:重定向到 /cas/login)。

4. 会话管理
全局会话:认证中心维护用户的登录状态(如 Redis 存储会话)。

局部会话:每个应用系统独立维护用户会话(如本地 Cookie 或 Session)。

四、安全性保障
HTTPS:所有通信必须加密,防止令牌被截获。

Token 签名与加密:

JWT 使用 HMAC 或 RSA 签名防止篡改。

SAML 断言通过数字证书加密。

短时效令牌:限制令牌有效期(如 5 分钟),减少泄露风险。

单点登出(Single Logout):

用户退出时,认证中心通知所有应用系统销毁局部会话。

五、典型场景示例
企业内部系统:

多个子系统(如 OA、CRM)共享同一认证中心(例如 Microsoft Active Directory)。

第三方登录:

使用 Google、微信等作为认证中心,用户通过 OAuth2 登录第三方应用。

跨组织联盟:

基于 SAML 的跨企业 SSO(例如:学校联盟的资源共享)。

六、SSO 的挑战
跨域问题:不同域名下的 Cookie 无法共享,需依赖 Token 传递。

信任链建立:所有应用系统必须信任认证中心。

单点故障:认证中心宕机会导致所有系统不可用。

安全风险:全局会话泄露会威胁所有关联系统。

七、总结
SSO 的核心思想是集中认证,分散授权,通过统一的认证中心管理用户身份,依赖令牌机制实现跨系统的信任传递。其实现依赖于协议(如 OAuth2、SAML)、令牌技术(如 JWT)和会话管理机制。

全部评论