《SpringSecurityOauth2》 4 . 客户端模式 (Client Credential) grant_type=client_credential
1. 用客户端证书交换访问令牌
应用程序需要向认证服务器申请访问令牌,而该请求则需要客户端证书进行认证。
假设现在我们正在折腾环信IM,其认证URL为:
https://a1.easemob.com/pair/pair/token
这里需要使用POST请求并附带以下参数:
grant_type
这里为“client_credentials”
client_id
应用注册时获得的client id
client_secret
应用注册时获得的client secret
以下是一个通过命令行HTTP客户端curl发起的请求示例:
curl -d "grant_type=client_credentials\
&client_id=2016273333331117128396\
&client_secret=904b98aaaaaaac1c92381d2" \
https://a1.easemob.com/pair/pair/token
POST /token HTTP/1.1
Host: a1.easemob.com/pair/pair/token
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=client_credentials
其中Authorization是client_id及client_secret组成的http_basic验证串。grant_type必须为client_credentials!
如果认证成功,服务器将会返回令牌access_token:
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"
}