客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。
![客户端模式](https://box.kancloud.cn/2015-09-11_55f2886d27ab3.png)
它的步骤如下:
> (A)客户端向认证服务器进行身份认证,并要求一个访问令牌。
>
> (B)认证服务器确认无误后,向客户端提供访问令牌。
A步骤中,客户端发出的HTTP请求,包含以下参数:
* granttype:表示授权类型,此处的值固定为"clientcredentials",必选项。
* scope:表示权限范围,可选项。
> ~~~
> POST /token HTTP/1.1
> Host: server.example.com
> Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
> Content-Type: application/x-www-form-urlencoded
>
> grant_type=client_credentials
> ~~~
认证服务器必须以某种方式,验证客户端身份。
B步骤中,认证服务器向客户端发送访问令牌,下面是一个例子。
> ~~~
> HTTP/1.1 200 OK
> Content-Type: application/json;charset=UTF-8
> Cache-Control: no-store
> Pragma: no-cache
>
> {
> "access_token":"2YotnFZFEjr1zCsicMWpAA",
> "token_type":"example",
> "expires_in":3600,
> "example_parameter":"example_value"
> }
> ~~~
上面代码中,各个参数的含义参见《授权码模式》一节。