素材巴巴 > 程序开发 >

谈谈.NET CORE OAuth 2.0

程序开发 2023-09-09 13:57:47

什么是 OAuth 2.0?

OAuth 2.0 是一个委托协议,它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源,注意是代表这些人,而不是假冒或模仿这些人。这个应用从资源的所有者那里获得到授权(Authorization)和 access token(访问令牌),随后就可以使用这个 access token 来访问资源。

OAuth 2.0 特点:

      仅做授权,无法做身份认证

OAuth 2.0 里面的三种角色

委托/委派权限

 

上面提到 OAuth 2.0 里面,最终用户可以委派他的一部分权限给客户端应用来代表最终用户访问被保护的资源。但要完成这件事,还需要一个桥梁来连接客户端应用和被保护资源,这个组件叫做授权服务器(Authorization Server, AS)。

 

image.png

  1. 首先客户端需要获得权限,它可能有两种方式来获得权限:
  1. 从资源所有者那里直接获得权限(上图所示)也可以让授权服务器作为中介,从授权服务器那里间接的获得权限(下图所示)
  2. 如果使用授权服务器作为中介的话,客户端需要把资源所有者发送到授权服务器(可以理解为最终用户使用的浏览器被重定向到了授权服务器), 然后资源所有者在这可以对客户端应用进行授权
  3. 这时资源所有者要通过身份认证进入授权服务器,通常还会有一个是否同意授权客户端应用请求的选项,点击同意后就授权了。而从客户端应用的角度讲呢,它可以向资源所有者请求他一部分的功能和范围(Scope),在将来,资源所有者可能会逐渐减少它所拥有的功能和范围
  4. 至此,上面写的这个动作/东西叫做授权(Authorization Grant)
  5. 一旦执行了授权动作也就是客户端得到了授权(授权是一个可以代表资源所有者权限的凭据)。客户端便可以从授权服务器请求 Access Token 了。这个 Access Token 就可以被用来访问被保护的资源了

下图是使用授权服务器作为中介的流程图,除了授权,其它部分和上图表达的都是一个意思

image.png

授权 Authorization Grant

授权是一个代表着资源所有者权限的凭据,它可以被客户端应用来获取 Access Token。

 

OAuth 2.0 里面定义了 4 种类型的授权,分别是:

  1. Auhtorization Code 授权码
  2. Implicit
  3. Resource Owner Password Credentials
  4. Client Credentials

 

OAuth 2.0 还定义了一个扩展机制以便自定义其它的授权类型。

用一句话描述“授权(Authorization Grant)就是获取 Token 的方法”。

 

 

授权和认证

 

 

文章主要参考于:https://www.cnblogs.com/cgzl/p/9221488.html

 

 

 

 


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。