很多同学都知道第三方登录,也都对接过微信、QQ、钉钉等三方登录,但是联合身份认证(Federated Identity)这个概念应该只有少数人了解过,包括胖哥也是一年前才知道这个概念。既然追求刺激,那就贯彻到底!胖哥花了点时间,在OAuth2授权流程中实现了联合身份认证,今天就分享一些骚操作。
将身份验证委托给可信任的身份提供者(IDP),包含自有平台和第三方,和认证的协议和方式也关系不大,OAuth2、SAML2.0、LDAP,甚至我们普通的登录,这可以简化开发,最大限度地减少用户管理的需求,并改善应用程序的用户体验。
而且这个东西也是实际业务需要,用户通常因业务需要会在多个平台的应用程序之间进行流动,如果用户要维护多个平台的认证凭据,势必打断用户的流程,加大用户凭据管理难度。
另一方面,平台也希望用户的注册登录变得简单一些,这样拉新也容易一些。如果你注册一个新平台,拿出微信扫一下码进行三方注册登录,还是填写一堆资料和验证码?大部分人会选择前者。
首先要有一个自己的用户认证中心,然后把自有认证和第三方接入进来,保持流程的一致性。最近胖哥在Id Server开源项目中实现了联合身份认证,具体的东西还是挺麻烦的,我觉得还是通过一些直观的方法展示一下好。先说一下步骤:
/foo/bar
。❝这里的关键点就是对用户认证过程的抽象,会附加一些流程,起点和终点还是一致的。
话不多说,看下面的视频大概你就能感觉到联合身份认证了。
http://mpvideo.qpic.cn/0bc3r4aaoaaa5uank6nkw5rfbd6da6hqabya.f10002.mp4?dis_k=3f7982c3fe61035d7ce17f304b925f50&dis_t=1664966432&vid=wxv_2445612692154662913&format_id=10002&support_redirect=0&mmversion=false
最后要说明一下,OAuth2授权服务器只能在授权码模式下实施联合身份认证。