什么是单点登录?单点登录的三种实现方式

什么是单点登录(Single Sign-On,SSO)?

单点登录(SSO) 是指用户只需要登录一次,就可以在多个相互关联的系统、应用或网站中自动获得访问权限,无需在每个系统重复输入用户名和密码。

通俗解释
就像你用同一个微信账号可以直接登录微信小程序、微信支付、微信读书、视频号等多个服务,而不需要每次都重新登录。

核心价值

  • 用户体验好:一次登录,到处通行
  • 安全性高:减少密码重复输入,降低泄露风险
  • 管理方便:统一账号管理,注销时可一次性失效所有权限

单点登录的三种主流实现方式

以下是目前最常见的三种 SSO 实现方案,对比清晰明了:

实现方式核心协议/技术适用场景优点缺点/注意事项典型产品/框架
1. CAS(Central Authentication Service)CAS 协议(开源)企业内部系统、校园网、开源项目简单、成熟、支持多种语言部署稍复杂,需要自己搭建 CAS ServerCAS Server、Apereo CAS
2. OAuth 2.0 + OpenID ConnectOAuth 2.0 + OIDC(现代主流)互联网应用、第三方登录、移动端安全、灵活、支持移动端和 API实现复杂,需要理解授权流程Google、微信、GitHub、Keycloak、Auth0
3. SAML(Security Assertion Markup Language)SAML 2.0(XML 格式)大型企业、跨组织联邦身份认证安全性极高、企业级标准配置复杂、XML 冗长、移动端支持差Okta、Ping Identity、Azure AD、OneLogin

三种方式详细说明

1. CAS(最传统的企业内部 SSO)

  • 工作流程:
  1. 用户访问系统 A → 被重定向到 CAS Server 登录
  2. 登录成功后,CAS Server 返回 Ticket(ST/TGT)
  3. 系统 A 拿着 Ticket 去 CAS Server 验证
  4. 访问系统 B 时直接携带 Ticket,无需再次登录
  • 典型场景:大学校园网(学生一次登录,可访问教务系统、图书馆、邮箱等)
  • 优点:部署简单、开源免费、支持 Java、PHP、.NET 等多种语言

2. OAuth 2.0 + OpenID Connect(目前互联网最主流)

  • 工作流程(以“微信登录”为例):
  1. 用户点击“微信登录” → 跳转到微信授权页面
  2. 用户同意授权 → 微信返回授权码(code)
  3. 你的服务器用 code 换取 access_token + id_token
  4. 用 id_token 获取用户信息(openid、昵称等)
  5. 以后访问其他关联系统时,直接用 token 认证
  • 典型场景:用微信/QQ/微博/钉钉/企业微信登录各种 App
  • 优点:支持移动端、API 友好、全球通用标准
  • 关键扩展:OpenID Connect(OIDC)在 OAuth 2.0 基础上增加了身份认证功能

3. SAML(企业级联邦身份认证)

  • 工作流程:
  1. 用户访问系统 A → 被重定向到 IdP(身份提供商,如公司统一登录门户)
  2. 用户在 IdP 登录 → IdP 返回 SAML Assertion(XML 断言)
  3. 系统 A 验证 Assertion,确认身份
  4. 访问系统 B 时,IdP 再次生成 Assertion,无需重新输入密码
  • 典型场景:跨公司合作、大型集团内部(如阿里云、AWS 企业版登录)
  • 优点:安全性最高、支持单点注销(SLO)、企业级标准
  • 缺点:配置复杂、XML 格式冗长

快速对比总结(一句话记住)

场景推荐方案
企业内部系统CAS 或 SAML
互联网产品、第三方登录OAuth 2.0 + OIDC
大型企业、跨组织认证SAML
移动端 + API 优先OAuth 2.0 + OIDC

实际项目中最常用的组合

  • 企业内部:Keycloak(支持 CAS + OAuth + SAML,一站式解决)
  • 互联网应用:OAuth 2.0 + OIDC(微信登录、GitHub 登录等)
  • 混合场景:Spring Security + OAuth2Shiro + CAS

掌握了这三种方式,你就能应对 99% 的单点登录需求。如果你要具体代码实现(Java/Spring、Node.js、PHP 等),或者某个方案的详细配置步骤,随时告诉我!

文章已创建 3707

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部