掘金 后端 ( ) • 2024-04-18 10:56

大家好,我是石头~

       在数字化时代,用户账户安全和便捷体验成为了众多互联网产品设计的重要考量。

       而“单点登录”(Single Sign-On, SSO)作为提升用户体验、简化登录流程的关键技术,已经成为各类企业应用的标准配置。

       那么,当你在面试现场被问到‘单点登录是如何实现的?’,你是否已经胸有成竹?

u=2915442786,1302359599&fm=253&fmt=auto&app=138&f=JPEG.webp

1、什么是单点登录?

       很早期的公司,一家公司可能只有一个服务,用户在使用这个公司的产品时,只要一次登录就可以了。

       慢慢地,随着公司的业务扩展,服务开始变多了。每个服务都要进行注册登录,退出的时候又要一个个退出,这样的用户体验很不好。

       可以想象一下,上豆瓣要登录豆瓣FM、豆瓣读书、豆瓣电影、豆瓣日记......真的会让人崩溃。

       这个时候,就有人提出了单点登录的想法,它允许用户使用一组身份凭证登录一次,就可以访问所有相互信任的多个应用程序或系统。

       这样,不仅能极大提升用户体验,降低忘记密码和登录疲劳等问题,还有助于提高整体系统的安全性。因为在单一认证中心下,用户的身份管理更加集中和可控,可以更容易地实现多层次的安全策略,包括双因素认证、动态口令、设备绑定等多种安全措施。

       那么,单点登录又是怎么实现的呢?

       接下来,就让我们一起揭开单点登录的神秘面纱,探索它背后的多种实现方案。

ab3cfe70df63da58.png

2、OAuth2.0的魔法棒

              OAuth2.0虽不是直接针对SSO设计,但它通过授权码流转,如同施展了一个无形的魔法,让用户在授权第三方应用访问自身数据的同时,也实现了某种程度的单点登录效果。

       具体来说,用户向授权服务器请求一个令牌,这个令牌便成为了用户身份在各应用间的通行证,简化了登录流程。

       就像哈利·波特手中的魔杖,轻轻一点,就打开了各个魔法房间的大门。

20191123231151293.png

3、CAS的中央认证咒语

       CAS(Central Authentication Service)则是专门为SSO打造的一款开源神器。

       在它的魔法阵中,用户仅需在一处——中央认证服务器登录,然后,借助CAS发放的票证(Ticket),即可跨越各种关联系统,实现一键登录。

       就如同霍格沃茨的传送门,一踏进门,就能瞬间抵达校园内的任何角落。

15765672123182.jpg

4、OIDC的时空穿越之术

       OIDC(OpenID Connect)则是OAuth2.0家族中的升级版魔法师,它在原有授权功能基础上增添了身份验证维度,使得用户通过OIDC身份提供商的身份验证后,能够在支持OIDC的不同应用之间畅通无阻。

       就如同时间转换器,登录一次,即可随时穿越到支持OIDC的任一线上空间。

OIDC.png

5、SAML的身份声明符咒

       最后登场的是SAML(Security Assertion Markup Language)。这位魔法师擅长使用XML文书形式传输身份声明,用户在身份提供方登录后,会收到一份魔法信件——SAML断言,凭借这份断言,可以解锁众多服务提供商的入口。

       就像巫师们互相发送的身份证明信函,有了它,无论走到哪个魔法学院,都能被迅速识别并接纳。

image.png

6、结尾

       当我们明白了这四位魔法师各自的神通之后,面对具体的业务场景,该如何做出最优选择呢?这就涉及到了安全性、易用性、集成难易度以及成本等多个考量因素。

       比如,如果你身处一家需要高度安全和严格控制的大型组织,可能会倾向于选择SAML,因为它提供了强大的安全性和严格的控制手段。而在追求灵活快捷的互联网产品开发中,OAuth2.0与OIDC可能是更好的搭档,它们能够方便地与其他第三方服务集成,并优化用户体验。

       亲爱的读者朋友,你在实际项目中是否也曾面临过选择单点登录技术的困境?面对不同业务需求,又是如何权衡利弊、因地制宜来选用最适合的方案呢?快在留言区分享你的实战心得,我们一同探讨,让这场关于单点登录的“魔法”对话持续发酵吧!

**MORE | 更多精彩文章**