什么是OAuth2

什么是OAuth2

本文准备用最简单的语言告诉大家什么是OAuth2 OAuth2是干什么的。

我们有一个资源服务器,资源服务器中有一系列的用户数据。

https://i-blog.csdnimg.cn/blog_migrate/47f60bb1c9aa0ed71913ebc6ab751919.png

现在有一个应用想想要获取我们的用户数据。
https://i-blog.csdnimg.cn/blog_migrate/1b663ecaaed99cf1463a0f356e1d2a55.png
那么最简单的方法就是我们开发一个API
https://i-blog.csdnimg.cn/blog_migrate/795d6680c68422387a844a1f9ab84aee.png
可是某天来了个恶意应用,或者是我们不想给它数据的应用,我们就会造成数据的泄漏。
https://i-blog.csdnimg.cn/blog_migrate/7095aa23131da502af1aa9e902d86c3c.png
所以我们就需要对第三方的应用进行校验,比如最原始的方法是使用IP地址,如果是不认识的IP地址就不给他资源。
https://i-blog.csdnimg.cn/blog_migrate/e9cb2e592e8d0fc959a8782ea273b0b1.png
可是这种方案有两个严重的缺点:

1、当客户应用换了IP地址之后,我们也要同时维护更换IP地址。

2、当客户应用是分布式部署很多份的时候,我们就要为同一个用户维护很多份IP地址。

3ip是可以伪装的。

这样无疑是繁琐麻烦、难以维护的。

所以一般业界的解决方案是给予客户应用一个出入证”——专业称为访问令牌(Access Token)。如果来访问的客户应用带有合法的访问令牌,则可以给他数据,否则便拒绝。
https://i-blog.csdnimg.cn/blog_migrate/a6015af518cc953b380e0587cece14cc.png
那么Access Token哪里来的呢?我们一般是由一个授权服务器颁发的。每个允许其访问资源的客户应用都现在我们的系统中注册一个appkey,然后每次用这个appkey向我们的授权服务器申请Access Token。这样不论客户应用换不换ip、有多少ip,只要客户应用的appkey是唯一不变的就不用做任何修改,也不用担心ip伪装的问题。
https://i-blog.csdnimg.cn/blog_migrate/21289e0e4d880566f2161511e4365560.png
到此为止我们其实还面临着一个问题,那就是当我们获取用户数据的时候,虽然我们允许第三方的客户应用获取用户数据,用户本人却不一定允许。比如,用户在我们系统里存储了图片、文档、视频等数据,用户只允许第三方应用获取他的文档,而不允许第三方应用获取他的图片和视频。所以在我们颁发给客户应用相关权限的Access Token的时候,需要经过用户的同意。
https://i-blog.csdnimg.cn/blog_migrate/70dfb553369e85018c938a6f8f18ea92.png
OAuth2.0
本质上就是将这里的客户应用向授权服务器请求令牌与授权服务器颁发令牌的过程标准化了,根据这样一套标准与解决方案,我们就可以安全的让第三方应用访问存储在我们服务器上的用户数据了。

原文地址:https://www.cnblogs.com/meibaorui/p/9182660.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值