在OAuth2授权流程中实现联合身份认证

举报
码农小胖哥 发表于 2022/06/18 00:52:09 2022/06/18
【摘要】 很多同学都知道第三方登录,也都对接过微信、QQ、钉钉等三方登录,但是联合身份认证(Federated Identity)这个概念应该只有少数人了解过,包括胖哥也是一年前才知道这个概念。既然追求刺激,那就贯彻到底!胖哥花了点时间,在OAuth2授权流程中实现了联合身份认证,今天就分享一些骚操作。 联合身份模式 将身份验证委托...

5fcb01a36730784e05b68c5189825384.gif

很多同学都知道第三方登录,也都对接过微信、QQ、钉钉等三方登录,但是联合身份认证Federated Identity)这个概念应该只有少数人了解过,包括胖哥也是一年前才知道这个概念。既然追求刺激,那就贯彻到底!胖哥花了点时间,在OAuth2授权流程中实现了联合身份认证,今天就分享一些骚操作。

联合身份模式

将身份验证委托给可信任的身份提供者(IDP),包含自有平台和第三方,和认证的协议和方式也关系不大,OAuth2SAML2.0LDAP,甚至我们普通的登录,这可以简化开发,最大限度地减少用户管理的需求,并改善应用程序的用户体验。

而且这个东西也是实际业务需要,用户通常因业务需要会在多个平台的应用程序之间进行流动,如果用户要维护多个平台的认证凭据,势必打断用户的流程,加大用户凭据管理难度。

另一方面,平台也希望用户的注册登录变得简单一些,这样拉新也容易一些。如果你注册一个新平台,拿出微信扫一下码进行三方注册登录,还是填写一堆资料和验证码?大部分人会选择前者。

体验联合身份认证

首先要有一个自己的用户认证中心,然后把自有认证和第三方接入进来,保持流程的一致性。最近胖哥在Id Server开源项目中实现了联合身份认证,具体的东西还是挺麻烦的,我觉得还是通过一些直观的方法展示一下好。先说一下步骤:

  • 我请求了一个OAuth2客户端的redirect_uri /foo/bar

  • OAuth2客户端会引导跳转到授权服务器的登录页面。

  • 关键就是这个登录页面,集成了微信生态提供的微信登录功能。如果按以前的传统,账密或者验证码,我们的用户登录,接受授权就完事了;现在不一样了,多了微信的两种方式。

  • 选择任意一种微信登录,开启了微信登录的流程,会向微信的授权服务器发起请求,微信流程同意后,把结果告知我们自己的授权服务器。

  • 我们授权服务器去拿微信用户的信息,完成认证逻辑,这个时候接着走我们自己平台的授权流程,后面的就不多说了跟以前不一样。

这里的关键点就是对用户认证过程的抽象,会附加一些流程,起点和终点还是一致的。

话不多说,看下面的视频大概你就能感觉到联合身份认证了。

最后要说明一下,OAuth2授权服务器只能在授权码模式下实施联合身份认证

eea585f8c17bbb86489c10828d71a6f3.gif

文章来源: felord.blog.csdn.net,作者:码农小胖哥,版权归原作者所有,如需转载,请联系作者。

原文链接:felord.blog.csdn.net/article/details/125325835

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。