1.授权码模式

授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动。

该模式的步骤如下:
1)用户同意授权,同意后跳转到回调地址,并且附上授权码。
2)客户端拿着授权码去"服务提供商"的认证服务器换取令牌。
3)拿着令牌去资源服务器拿数据。

授权码模式是一种双重认证模式,客户端需要向认证服务器申请两次。第一次用来获取授权码,第二次用来换取令牌。这种方式安全性较高,适用于比较重要的授权场景。

2.隐式授权模式

隐式授权模式(Implicit Grant)是OAuth2.0中简化的授权模式,它的特点就是不需要客户端向认证服务器申请授权码,只需要直接向认证服务器申请令牌即可。

该模式的步骤如下:
1)用户同意授权,同意后跳转到回调地址,并且附上令牌。
2)拿着令牌去资源服务器拿数据。

隐式授权模式只有一次请求,安全性较低,适用于安全级别要求不高的授权场景。

3.密码模式

密码模式(Resource Owner Password Credentials Grant)是OAuth2.0中最简单的授权模式,它的特点就是客户端拥有用户的账号密码,直接向认证服务器申请令牌。

该模式的步骤如下:
1)客户端拥有用户的账号密码,直接向认证服务器申请令牌。
2)拿着令牌去资源服务器拿数据。

密码模式只有一次请求,安全性也较低,但是可以用于客户端拥有用户的账号密码,比如第三方客户端。

4.客户端模式

客户端模式(Client Credentials Grant)是OAuth2.0中最简单的授权模式,它的特点就是客户端拥有自己的账号和密码,向认证服务器申请令牌。

该模式的步骤如下:
1)客户端拥有自己的账号和密码,向认证服务器申请令牌。
2)拿着令牌去资源服务器拿数据。

客户端模式只有一次请求,安全性也较低,但是可以用于客户端拥有自己的账号和密码,比如第三方客户端。