oauth2.0的4种模式原创
金蝶云社区-CM9527
CM9527
3人赞赏了该文章 4,676次浏览 未经作者许可,禁止转载编辑于2021年09月24日 11:03:46

    oauth2.0是目前最流行的授权机制,用来授权第三方应用,获取用户数据。它有4中授权模式,了解他,对于我们设计API接口很重要。

    第一种授权方式:授权码

image.png

A向B获取授权码,A获取到授权码之后,根据授权码,向B获取Token,最终我们访问接口都要携带token访问。

通过clientId 和 clientSecret获取授权码

就像QQ第三方的授权就是授权码模式

当你用QQ登录第三方应用,然后重定向到一个网站,让你填QQ号和密码

image.png

image.png

腾讯返回给有道的资源就包括你的QQ昵称、头像、性别等相关信息及唯一标识openid,不能得到账号密码信息。


第二种方式:隐藏式

image.png

A直接从B获取token。这种方式把令牌直接传给前端,是很不安全的。因此,只能用于一些安全要求不高的场景,并且令牌的有效期必须非常短,通常就是会话期间(session)有效,浏览器关掉,令牌就失效了。


第三种方式:密码式

第一步,A 网站要求用户提供 B 网站的用户名和密码。

第二步,B 网站验证身份通过后,直接给出令牌。

这种方式需要用户给出自己的用户名/密码,显然风险很大,因此只适用于其他授权方式都无法采用的情况,而且必须是用户高度信任的应用


第四种方式:凭证式

第一步,A 应用在命令行向 B 发出请求。通过client_idclient_secret用来让 B 确认 A 的身份。

第二步,B 网站验证通过以后,直接返回令牌。



关于token,为了防止token被盗用,token是有时效性的,如果token过期,必须要重新生成新的token。

如果让用户重新走一遍上面的流程,再申请一个新的token,很可能体验不好,而且也没有必要。OAuth 2.0 允许用户自动更新令牌。

B 网站颁发token的时候,一次性颁发两个token,一个用于获取数据,另一个用于获取新的令牌(refresh token 字段)。令牌到期前,用户使用 refresh token 发一个请求,去更新token



赞 3