oauth2.0

作者: 塔塔斯坦 | 来源:发表于2019-09-30 16:19 被阅读0次

ruanyifeng文章的摘要

http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html?utm_source=tuicool&utm_medium=referral

oauth2是为了解决这个问题:用户访问A网站, 利用B网站账号登录(比如微信)

1.访问A

2.用户同意后,A将用户导向B

3.经过B认证成功后, 资源服务器向用户(浏览器or 手机APP)发一个token

4.后续A网站对资源服务器所有操作都带token(如果只是为了登录不需要)

根据用户获得token的方式不同,分为4种情况

1.授权码(authorization-code)

最常用,安全性最高, 使用于有前后端分离的web应用。前台申请授权码,后台换token。

页面上A跳转到B的时候, 直接请求授权码,

用户在B上同意, B根据请求中的redirect_uri回调,将AUTHORIZATION_CODE传回。

这样A后台就得到授权码, A后台根据授权码发请求向B申请token, 此时又传一个回调地址。

B根据授权码生成token, 再次回调A提供的redirect_uri,这里是发json格式数据。

2. 隐藏式

授权码模式的token存在A网站后台。如果A没有后台,只能存在前台,也就没必要授权码了。只能用于一些安全要求不高的场景,并且令牌的有效期必须非常短,一般就会话期间。

页面上A跳转到B的时候, 直接请求token,

用户在B上同意, B根据请求中的redirect_uri回调,将token传回。注意这里http格式是锚点(所以只是本页请求,不会发到后台)

https://a.com/callback#token=ACCESS_TOKEN

3.密码式

用户直接将B中账户和密码填到A上, A将账号密码发到B,B直接返回token。

必须用户高度信任A

4.凭证式

适用于没有前端的命令行应用。

A网站发送client_id和client_secret到B, B直接返回token。

这种方式是针对三方应用,不是针对最终用户的, 因为可能多个用户共享一个令牌。

相关文章

网友评论

      本文标题:oauth2.0

      本文链接:https://www.haomeiwen.com/subject/ceezkctx.html