面试官:说说单点登录都是怎么实现的?

什么是单点登录?

  • 很早期的公司,一家公司可能只有一个服务,用户在使用这个公司的产品时,只要一次登录就可以了。
  • 慢慢地,随着公司的业务扩展,服务开始变多了。每个服务都要进行注册登录,退出的时候又要一个个退出,这样的用户体验很不好。
  • 可以想象一下,上豆瓣要登录豆瓣FM、豆瓣读书、豆瓣电影、豆瓣日记…真的会让人崩溃。
  • 这个时候,就有人提出了单点登录的想法,它允许用户使用一组身份凭证登录一次,就可以访问所有相互信任的多个应用程序或系统。
  • 这样,不仅能极大提升用户体验,降低忘记密码和登录疲劳等问题,还有助于提高整体系统的安全性。因为在单一认证中心下,用户的身份管理更加集中和可控,可以更容易地实现多层次的安全策略,包括双因素认证、动态口令、设备绑定等多种安全措施。
  • 那么,单点登录又是怎么实现的呢?
  • 接下来,就让我们一起揭开单点登录的神秘面纱,探索它背后的多种实现方案。

OAuth2.0的魔法棒

  • OAuth2.0虽不是直接针对SSO设计,但它通过授权码流转,如同施展了一个无形的魔法,让用户在授权第三方应用访问自身数据的同时,也实现了某种程度的单点登录效果。
  • 具体来说,用户向授权服务器请求一个令牌,这个令牌便成为了用户身份在各应用间的通行证,简化了登录流程。
  • 就像哈利·波特手中的魔杖,轻轻一点,就打开了各个魔法房间的大门。

CAS的中央认证咒语

  • CAS(Central Authentication Service)则是专门为SSO打造的一款开源神器。
  • 在它的魔法阵中,用户仅需在一处——中央认证服务器登录,然后,借助CAS发放的票证(Ticket),即可跨越各种关联系统,实现一键登录。
  • 就如同霍格沃茨的传送门,一踏进门,就能瞬间抵达校园内的任何角落。

OIDC的时空穿越之术

  • OIDC(OpenID Connect)则是OAuth2.0家族中的升级版魔法师,它在原有授权功能基础上增添了身份验证维度,使得用户通过OIDC身份提供商的身份验证后,能够在支持OIDC的不同应用之间畅通无阻。
  • 就如同时间转换器,登录一次,即可随时穿越到支持OIDC的任一线上空间。

SAML的身份声明符咒

  • 最后登场的是SAML(Security Assertion Markup Language)。这位魔法师擅长使用XML文书形式传输身份声明,用户在身份提供方登录后,会收到一份魔法信件——SAML断言,凭借这份断言,可以解锁众多服务提供商的入口。
  • 就像巫师们互相发送的身份证明信函,有了它,无论走到哪个魔法学院,都能被迅速识别并接纳。

结尾

  • 当我们明白了这四位魔法师各自的神通之后,面对具体的业务场景,该如何做出最优选择呢?这就涉及到了安全性、易用性、集成难易度以及成本等多个考量因素。
  • 比如,如果你身处一家需要高度安全和严格控制的大型组织,可能会倾向于选择SAML,因为它提供了强大的安全性和严格的控制手段。而在追求灵活快捷的互联网产品开发中,OAuth2.0与OIDC可能是更好的搭档,它们能够方便地与其他第三方服务集成,并优化用户体验。