【OAuth2.0】
- 是一个委托协议,它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源,注意是“代表这些人”,而不是假冒或者模仿这些人。
- 这个应用从资源的所有者那里获得到授权(Authorization)和 AccessToken,随后就可以使用这个 Access Token 来访问资源。
【结构】
[用户] | ←→ | [客户端应用] | ←→ | [受保护资源] |
---|---|---|---|---|
资源所有者 | 如:WPF、Angular (SPA)、ASP.NET Core MVC | 如:ASP.NET Core Web API | ||
可委派权限 | 代表资源所有者访问受保护的资源(资源消费者) | 一般指Web API、文件资源等 |
*注:SPA → Single Page Application,即单页面应用
|
|
【授权Authorization】
只能用于授权,即 → “你能干什么”
OpenId Connect 身份认证Authentication 协议 (相当于在OAuth2.0上加了一层)
用于身份认证,即 → “你是谁”
授权类型 Authorization Grant Types
1、★ Authorization Code (采用授权服务器作为中介,而不是从资源所有者获得)
2、★ Implicit (减少了来回往返的次数,可提高浏览器应用的相应速度,存在一定风险)
3、★ Resource Owner Password Credentials (直接使用资源所有者的密码验证,当资源所有者和客户端之间高度信任并且其他授权方式不 可、的时候才可以使用,凭据只用于一次请求)
4、★ Client Credentials (资源或资源服务器不属于某个用户时使用)
5、Device Code
6、Refresh Token (用于刷新、获取Access Token)
【端点】
1、Authorization Endpoint 授权端点(在浏览器中处理,和资源所有者进行交互)
2、Token Endpoint Token端点 (客户端应用软件与服务器进行交互,获得 Access Token)
【Scope 范围】
代表资源所有者在被保护资源那里的一些权限
【Access Token】
1、有时候就叫Token
2、用来访问被保护资源的凭据
3、代表了给客户端颁发的授权,也就是委托给客户端的权限
4、描述出Scope,有效期
【Refresh Token】
1、用来获取 Access Token 的凭据
2、由 Authorization Server 颁发给客户端应用的
3、可选(根据情况选择只返回 Access Token 还是将 Access Token 和新的 Refresh Token 一起返回)
4、具备让客户端应用逐渐降低访问权限的能力
|
|
【发生错误时】
1、error
2、error_description
3、error_uri
4、state
【错误的类型】
1、invalid_request
2、invalid_client (401)
3、invalid_grant
4、unauthorized_client
5、unsupported_grant_type
6、invalid_scope