OAuth2.0 原理简介

 

目录

我们可以看到在上述的授权过程中最关键的部分是获取token的那一步,这也是OAuth2.0的核心。有了这个token我们就可以访问到resource server上的资源,ABCD这几步都是为了获取这个token。

那么这个token到底包含了哪些信息呢?我们来从头分析一下,我们需要实现的是:让美图快印能够在不用小李用户名和密码的前提下访问到小李新浪微博账户相册中的特定图片。

注意上面加粗的部分,要实现这样的需求我们需要从token中解析出来下面3类信息:

  1. 客户端标识,表明是谁在请求访问资源(美图快印);
  2. 用户标识,得到了谁的许可(小李);
  3. 客户端能访问资源所有者的哪些资源以及其相应的权限。

有了上面的这些信息,那么资源服务器(Resouce Server)就可以区分出来是哪个第三方应用(Client)要访问哪个用户(Resource Owner)的哪些资源(以及有没有权限)

在上面的流程中出现了授权许可(Authorization Grant)这个概念,那到底它是什么意思呢?

书面解释是:授权许可是一个代表资源所有者授权(访问受保护资源)的凭据,客户端用它来获取访问令牌。

这个解释比较抽象,那么我们来翻译一下就是:授权许可是小李授予美图快印获得新浪微博相册的访问令牌的一个凭据。

那么我们该如何获得这个凭据呐,OAuth2定义了四种许可类型:

  1. Authorization Code:授权码;
  2. Implicit:隐式许可;
  3. Resource Owner Password Credentials:资源所有者密码凭据;
  4. Client Credentials :客户端凭据。

具体每一种许可类型到底怎么实现我们将放到后面详细讨论,本文不做详细解释。

写到最后:

   总结:OAuth2.0是一套工业级的标准授权协议,可以很方便的解决第三方服务的授权而不需要资源所有者直接提供身份信息,它大大降低了我们在实现认证和授权时的复杂度。目前基于OAuth2.0实现的框架有很多,基于.NET Core实现最好的是IdentityServer4

 在后续文章中我们将一起探讨IdentityServer4在.NET Core中的使用,欢迎持续关注。

 如果你觉得本文写得不错,麻烦给个赞呗~~~

参考资料:

https://oauth.net/2/     

 

如果您觉得本文对你有用,不妨帮忙点个赞,或者在评论里给我一句赞美。我们正在使用.NET Core / Azure / Xamarin等技术开发基于互联网和移动应用平台上的各种新产品和商业服务。我们的目标是通过举办各种分享活动,交流开发心得和经验来推动.NET技术栈在西安乃至西北地区的发展。我们是一个开发和自由的社区,欢迎您加入西安.NET社区,微信账号:dotNetXA 欢迎您持续关注我的博客

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信