; 对于用户认证需要改写这个函数。
第四种认证方式: Client Credentials Grant (客户端凭证许可)
当客户端请求访问它所控制的,或者事先与授权服务器协商(所采用的方法超出了本规范的范围)的其他资源所有者的受保护资源,客户端可以只使用它的客户端凭据(或者其他受支持的身份验证方法)请求访问令牌。
客户端凭据许可类型必须只能由机密客户端使用。
+---------+ +---------------+ | | | | | |>--(A)- Client Authentication --->| Authorization | | Client | | Server | | |<--(B)---- Access Token ---------<| | | | | | +---------+ +---------------+
图4:客户端凭证流程
图4中的所示流程包含以下步骤:
(A)客户端与授权服务器进行身份验证并向令牌端点请求访问令牌。
(B)授权服务器对客户端进行身份验证,如果有效,颁发访问令牌。
Tips: 这是最简单的认证方式。
由于客户端身份验证被用作授权许可,所以不需要其他授权请求。
实现如下: 1. 在 Oauth2Controller 中添加对 client credentials 认证方式的支持:
$server->addGrantType(new OAuth2\GrantType\ClientCredentials($storage)); 2. 获取 access_token:
curl -u testclient:testpass www.yii.com/oauth2/index.php?r=oauth2/token -d 'grant_type=client_credentials' 提交参数: grant_type REQUIRED. Value MUST be set to "client_credentials". scope OPTIONAL. 返回: {"access_token": "f3c30de |