单点登录(SSO,Single Sign-On)

单点登录(SSO,Single Sign-On)是一种用户身份验证服务,允许用户使用一组登录凭据(如用户名和密码)访问多个应用程序或系统。SSO旨在提高用户体验和安全性,通过减少用户需要记住的密码数量,降低密码疲劳和重用的风险。以下是SSO工作原理的概述以及常见的实现技术。

工作原理

  1. 初始登录

    • 用户首次尝试访问SSO集成的任何应用时,会被重定向到SSO服务的登录页面。
    • 用户在这里输入一次用户名和密码。
  2. 身份验证

    • SSO服务验证用户的凭据。如果凭据有效,SSO服务会为用户创建一个会话,并发给用户一个令牌(Token)或票据(Ticket)。
  3. 令牌传递

    • 用户随后尝试访问另一个集成了SSO的应用时,SSO服务会利用已经建立的会话,不需要用户重新输入凭据,直接允许访问。
    • 用户的浏览器会向SSO服务发送令牌作为访问其他服务的凭据。
  4. 服务提供方验证

    • 每个应用或服务都会向SSO服务验证用户令牌的有效性。一旦验证通过,用户就可以访问该应用或服务。
  5. 会话结束

    • 用户登出时,SSO服务可以结束用户在所有应用中的会话,实现一处登出,处处登出的效果。

常见实现技术

  1. LDAP(轻量级目录访问协议)

    • LDAP常用于企业环境中,作为对用户身份信息进行存储和访问的目录服务。
  2. SAML(安全断言标记语言)

    • SAML是一种基于XML的开放标准,用于在安全域之间交换认证和授权数据。SAML广泛应用于企业级SSO解决方案中,特别是在Web应用和服务之间。
  3. OAuth和OpenID Connect

    • OAuth是一个授权框架,允许应用获取有限的访问权限。OpenID Connect建立在OAuth 2.0之上,添加了用户身份验证层,广泛应用于互联网服务的SSO。
  4. Kerberos

    • Kerberos是一种网络身份验证协议,使用密钥加密技术,允许节点在不安全网络上安全地证明其身份。

优点

  • 提高用户体验:用户只需记住和使用一组凭据,就可以访问所有集成的服务和应用。
  • 提高安全性:减少密码重用和疲劳,同时集中管理用户凭据和访问控制。
  • 简化管理:简化了对用户账户和访问权限的管理,尤其是在大型组织中。

缺点

  • 单点故障:SSO系统本身如果出现问题,可能会影响到所有依赖它的服务和应用。
  • 安全风险:如果SSO系统被攻破,攻击者可能获得对所有集成服务的访问权限。

SSO解决方案需要在提高用户体验和安全性之间找到平衡,同时确保对SSO系统本身的高度保护。


典型的单点登录(SSO)场景,其中包括多个应用或服务,用户在任何一个应用登录后,可以无需再次登录即可访问其他所有应用。以下是触发SSO流程的步骤:

步骤1:用户访问应用A

  • 假设用户首次尝试访问应用A的受保护资源,例如http://appA.com/protectedPage
  • 由于用户尚未登录,请求会被SSOFilter拦截。由于会话中没有用户信息(USER_INFO为空),且请求URL不是登录页面或处理登录的URL,SSOFilter会检查请求中是否包含票据(ticket)。

步骤2:重定向到SSO登录页面

  • 由于用户未登录且请求中没有票据,SSOFilter将用户重定向到SSO系统的登录页面,并附加原始请求的URL作为参数,例如http://sso.com/toLogin?url=http://appA.com/protectedPage

步骤3:用户在SSO系统中登录

  • 用户在SSO登录页面输入凭据并提交。SSO系统验证用户凭据,登录成功后,SSO系统生成一个唯一的票据(ticket),并将票据与用户信息关联存储在Redis中。

步骤4:重定向回原始应用

  • 登录成功后,SSO系统将用户重定向回原始请求的URL,并附加票据参数,例如http://appA.com/protectedPage?ticket=uniqueTicket123

步骤5:使用票据获取用户信息

  • SSOFilter再次拦截到用户请求,这次请求中包含票据。SSOFilter使用票据从Redis中获取用户信息,如果成功获取,将用户信息存储在会话中,并删除Redis中的票据。

步骤6:访问受保护资源

  • 用户信息存储在会话中后,SSOFilter放行请求,允许用户访问受保护资源。

步骤7:访问其他应用

  • 用户随后尝试访问另一个集成SSO的应用B的受保护资源。由于用户已在应用A通过SSO登录,应用B的SSOFilter可以从会话中获取用户信息,无需再次登录,用户即可访问应用B的受保护资源。

这个流程展示了单点登录的核心优势,即用户只需登录一次,就可以在多个应用或服务之间无缝切换,极大地提升了用户体验。在实际部署中,需要确保所有应用都能正确处理SSO票据,并能与SSO系统以及Redis等后端服务安全地交互。

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫客36

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值