前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5分钟了解OAuth2与OpenID

5分钟了解OAuth2与OpenID

作者头像
gaigai
发布2021-04-29 11:02:45
4.9K1
发布2021-04-29 11:02:45
举报
文章被收录于专栏:Windows开发Windows开发

互联网产品离不开帐号登录或第三方登录、资源授权访问,经常会听到OAuth2、OpenID这些概念,它们是什么、有什么用、有什么关系呢?接下来,我将简单介绍OAuth2和OpenID。

首先,我们先看下今日头条第三方登录微信帐号,获取头像昵称、导出公众号文章的例子。

当使用今日头条,选择使用微信帐号登录时,会跳转到微信,如果微信还未登录,会弹出登录窗口,用户填写用户名密码,完成登录。然后,微信弹出提示框:今日头条申请获取头像昵称等权限,是否允许?。用户选择允许后,微信向后台帐号服务请求Token(令牌)交给今日头条,今日头条拿着Token向微信帐号服务请求头像昵称等,微信帐号服务会校验Token决定是否提供头像昵称等。今日头条也可以拿着Token向微信公众号服务请求文章,微信公众号服务向微信帐号服务校验Token决定是否提供文章。

上述例子中微信用户的昵称、头像、文章是存储在微信服务器上,今日头条想要访问这些资源,需要用户允许后,微信再授权给今日头条访问。这涉及到一个授权的过程。传统使用密码的授权机制,存在权限过大和权限回收困难的问题,比如:直接在今日头条上提供微信的帐号和密码,今日头条就可以访问该账号的所有资源,一段时间后如果用户不想让今日头条继续访问,只能修改密码。而OAuth2使用Access Token具有使用期和访问权限属性,有效解决这些问题。

OAuth2设计了授权机制的框架,涉及4个角色、3个交互。

Resource Owner 资源所有者,一般指终端用户(如微信用户)

Authorization Server 授权服务器(如微信帐号服务)

Resource Server 资源服务器(如微信公众号服务)

Client 客户端(如微信、今日头条)

步骤A和B 授权申请,一般展示给用户确认是否允许授权,如:微信弹窗让用户确认是否允许今日头条访问***。

步骤C和D 用户同意授权后,颁发Access Token,如:微信帐号服务按今日头条的申请颁发Access Token。Access Token有过期时间。

步骤E和F 客户端使用Access Token请求资源,资源服务器向授权服务器校验Access Token是否过期、是否有权限,校验通过后提供资源,如:今日头条使用Access Token向微信公众号服务获取文章,微信公众号服务校验Access Token是否过期、是否有获取文章的权限,校验通过后提供文章。

从OAuth2授权流程看,OAuth2协议没有涉及到身份认证(类似输用户名密码登录),也就是说,进行OAuth2步骤C和D前,如果用户没有身份认证需要先进行身份认证,具体怎么进行身份认证OAuth2没涉及,于是OpenID扩展OAuth2增加身份认证的功能。

上图为OpenID的流程图,其中OP(OpenID Provider)为OAuth2的Authorization Server支持OpenID协议,RP(Relying Party)为OAuth2的Client支持OpenID协议。OpenID的步骤1-3,对OAuth2的步骤C和D做了扩展,其它步骤与OAuth2的步骤一样,只是表述不同可以不看(此图直接复用OpenID协议文档的图)。

步骤1(扩展),RP请求授权时指定步骤3的响应方式,响应方式包括:code(授权码方式)、token等4种,不同的响应方式下面的子流程会有些不同,下面以token为例说明。

步骤2(新增),OP判断用户是否登录,未登录让用户登录。

步骤3(扩展),OP返回id_token和Access_Token,除了Access_Token还返回id_token唯一标识认证的用户。

OAuth2提供授权机制,OpenID是基于OAuth2增加身份认证功能,更详细内容可以查阅RFC6749和OpenID规范。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Windows开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档