https://www.yuque.com/yuejiangliu/dotnet/cg95ni









表明资源全部者的凭据

浏览器
受权 Authorization Grant
受权是一个表明着资源全部者权限的凭据,它能够被客户端应用来获取 Access Token。安全
OAuth 2.0 里面定义了 4 种类型的受权,分别是:服务器
- Auhtorization Code 受权码
- Implicit
- Resource Owner Password Credentials
- Client Credentials
OAuth 2.0 还定义了一个扩展机制以便自定义其它的受权类型。blog
用一句话描述“受权(Authorization Grant)就是获取 Token 的方法”。ci
-
- 使用受权服务器做为客户端和资源全部者的中介
- 在受权服务器把资源全部者送回(重定向)到客户端的时候带着这个临时的凭据 Authorization Code。它就表明着资源全部者委托给客户端应用的权限
- 在安全方面的一些优势:
-
-
- 能够对客户端应用进行身份认证
- Access Token 直接发送到客户端应用,不通过资源全部者的浏览器,因此不会将其暴露给外界,包括资源全部者
-
- 适合 ASP.NET Core MVC 这类服务器端的客户端应用
-
-
- Access Token 直接发送到 Web Server,不通过用户浏览器,不会暴露 Access Token
-
- Authorization Code 的简化版本
- 针对浏览器内的客户端应用,例如 Angular SPA
- 没有受权码发回给客户端应用的步骤,受权服务器直接把 Access Token 发回给了客户端应用,因此在浏览器内能获取到 Access Token
- Implicit 受权确实能够提升浏览器内应用的响应性和效率,毕竟它减小了往返的次数。可是方即可能会带来风险,推荐尽可能使用 Authorization Code
- Resource Owner Password Credentials
-
- 直接使用用户的密码做为受权来得到 Access Token
- 仅当用户和客户端间高度信任且其余受权方式不可用时才可使用这种受权方式
- 这种凭据只应用于一次请求并用于交换 Access Token,避免客户端存储用户的凭据(密码)
-
-
- 经过交换一个长期有效的 Access Token 或使用 Refresh Token均可以达到这种效果
-
- 受保护资源并不属于任意一个用户(没有用户对该资源负责),但客户端任需访问受保护资源
- Device Code
- Refresh Token
-
- 一般能从受权服务器得到两个令牌:Access Token 和 Refresh Token
- 当 Access Token 要过时时,咱们使用 Refresh Token 再获取一个 Access Token