如何获取AccessToken?客户端开发中grant_type、client_assertion参数问题
AccessToken获取流程参数说明
1. grant_type参数
- 固定取值:
client_credentials - 含义:属于OAuth2.0标准的授权类型标识,
client_credentials对应客户端凭证授权模式,适用于客户端以自身身份发起认证、无需用户参与授权的AccessToken获取场景 - 获取来源:接口约定的固定值,无需额外申请,直接传入即可
2. client_assertion参数
- 取值要求:符合JWS(JSON Web Signature)规范的加密字符串,对应请求中
client_assertion_type指定的jwt-bearer类型,本质是经过签名校验的JWT令牌 - 获取/生成方式:
- 先在对应开放平台注册你的客户端,获取唯一
client_id以及平台分配的签名密钥(对称加密场景)或客户端私钥(非对称加密场景) - 按照JWT规范构造 payload 部分,通常必填字段包括:iss(签发者,填你的client_id)、sub(主体,填你的client_id)、aud(受众,填当前Token接口的服务标识)、exp(过期时间,建议设置为5分钟以内,避免被重放攻击)
- 用平台要求的签名算法(如HS256、RS256)对构造好的JWT内容签名,生成最终的JWS字符串作为参数值传入即可
- 先在对应开放平台注册你的客户端,获取唯一
参考请求示例
POST /token HTTP/1.1 Host: :443 Timestamp: 1212669235 Date: Fri, 12 May 2016 17:21:16 GMT+0000 Content-type: application/x-www-form-urlencoded grant_type=client_credentials&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&scope=profile-search&client_assertion=<JSON Web Signature (JWS)>
参考返回示例
{ "access_token" : "KjdsjEeRFwksjqefindikHAfDKV...", "token_type" : "bearer", "expires_in" : 3600, "scope":"profile-search" }
内容的提问来源于stack exchange,提问作者VatikaA
相关产品推荐
相关产品推荐

