身份认证系统什么是OAuth2

Posted panchanggui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了身份认证系统什么是OAuth2相关的知识,希望对你有一定的参考价值。

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

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

技术图片

现在有一个应用想想要获取我们的用户数据。
技术图片
那么最简单的方法就是我们开发一个API。
技术图片
可是某天来了个恶意应用,或者是我们不想给它数据的应用,我们就会造成数据的泄漏。
技术图片
所以我们就需要对第三方的应用进行校验,比如最原始的方法是使用IP地址,如果是不认识的IP地址就不给他资源。
技术图片
可是这种方案有两个严重的缺点:

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

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

3、ip是可以伪装的。

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

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

 

 

转:https://www.cnblogs.com/meibaorui/p/9182660.html

以上是关于身份认证系统什么是OAuth2的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security OAuth2.0认证授权介绍

Spring Security OAuth2分布式系统认证解决方案

单点登录OAuth2.0认证

身份认证系统 OAuth2的四种模式

Envoy实现.NET架构的网关集成IdentityServer4实现OAuth2认证

由浅入深剖析OAuth2.0如何进行「认证」