一、支持的应用类型
Web 应用、单页应用、移动 App。
二、请求方法
POST
三、请求路径
/oauth2/token
四、请求 Content-Type
application/x-www-form-urlencoded
五、请求示例
POST /oauth2/token HTTP/1.1Host: sample.portal.tencentciam.comContent-Type: application/x-www-form-urlencodedclient_id=TENANT_CLIENT_ID&client_secret=TENANT_CLIENT_SECRET&grant_type=authorization_code&code=MOCK_CODE&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback
六、请求参数
| 参数 | 可选 | 描述 |
| client_id | false | 应用的 client_id。需要与获取授权时使用的一致。 |
| client_secret | false | 应用的 client_secret。可参考 应用管理页面 > 选定指定应用 > 单击应用配置 > 对应的“client_secret”。 |
| grant_type | false | 填固定值 authorization_code。 |
| code | false | 获取授权时返回的授权码。 |
| redirect_uri | false | 授权成功后的重定向地址。需要与获取授权时指定的地址一致。 |
七、正常响应示例
HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8{ "access_token" : "eyJraWQiOiJkNDliYzUwNS01NTcyLTRlZDYtOWU0OC0zODhjM2Q0NGJiNDYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJNT0NLX1VTRVJOQU1FIiwiYXVkIjoiVEVOQU5UX0NMSUVOVF9JRCIsIm5iZiI6MTYzNjQ0OTIzMiwic2NvcGUiOlsib3BlbmlkIl0sImlzcyI6Imh0dHBzOlwvXC9URU5BTlQuUE9SVEFMLkRPTUFJTiIsImV4cCI6MTYzNjQ0OTUzMiwiaWF0IjoxNjM2NDQ5MjMyLCJqdGkiOiJmYmM0NWQ3NS1lYmRjLTQzNjUtOWU0MS01YWM1OTg5ZDdhZTIifQ.SnBaXHhZ0jz3sbo-FPcO91YJn2LqOAuBxWTFRdIzl-PChdh4oXdaxmlWlcaLPU-niBo9TqAAmeocnomkTgt6TS2hp5IOjX8FihshlgVdagQNYM6__Zr5NHw9DH2zEps0AGA_7pyGg9trbcRBkjb2xRLyJpQ5lPkpGiNKA18SfCcsBBoy9E69wrZCZaKo3Y6iHO9v5qxlOTchajR5FI5VDZlxDLX9H3njf3C-KG5NlB7VQZBa0O4TZJm6od_sh8eCmCa5TKF7s5Zhw7JU83JfEh76WKT3rD5uEb4SbFhBGP3hL7Xsj3SJMP7nA4LlQAlINWyFzntAIuJ1VryH3JmQCg", "refresh_token" : "Ugvo1lO7Se8vvIPrIOwn_eBe0hoi5-5ynR3H-aFYl0e1Gej-SfUAaBDBXkWmojm_Q7utcpwz_swzLZwGGz_I5wHAkB6iaepCX3LvqZGvt5hmMXDCt3wZY3SnhridZC85", "scope" : "openid", "id_token" : "eyJraWQiOiJkNDliYzUwNS01NTcyLTRlZDYtOWU0OC0zODhjM2Q0NGJiNDYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJNT0NLX1VTRVJOQU1FIiwiYXVkIjoiVEVOQU5UX0NMSUVOVF9JRCIsImF6cCI6IlRFTkFOVF9DTElFTlRfSUQiLCJpc3MiOiJodHRwczpcL1wvVEVOQU5ULlBPUlRBTC5ET01BSU4iLCJleHAiOjE2MzY0NTEwMzIsImlhdCI6MTYzNjQ0OTIzMiwianRpIjoiMDBlOWQxMjYtYmJkYi00ZjgzLWI4NTYtNTAyYjI0OWJmNjVmIn0.enLzJ-pJlnKpFCBR0gQc7bJH2GA1q_PpqWNjxJuTE1rWuQzvH9Y0oNNi-Wc1vUQ1u0hPSAC7in4E8vUpWDuDFyXrKWvwNxxj5uyLfFrAc2hnrju0ZUOT58lOqYd0Y48hA6THuxm9aA_EuOHvR3SxIS0cj_O5xJCwvhSqGUldRXGVgB4yMXXvZWkxWm5Q3B_hJc8aZtLpmo76-AKTz2OQouZ5bDE3WD89THuKN4mVxygyyIGTgpuIeyP1x14aTgvNKp2N-HGRoUwCzks_fLMcxmH5vqkI5alMi-XDfG8LWWhObM9j54oShSTpkok51B9VGTTOwbK4ZXeVRI48sCxWmg", "token_type" : "Bearer", "expires_in" : 299}
注意:IDSEC 返回的是 JWT 格式的 ID Token,请参考 OIDC 产品文档 对 ID Token 进行解密验证。也可以直接使用相关的开发库完成解密验证。 验证所需的公钥通过调用 获取 JWT 公钥 接口获得。
八、响应参数
| 参数 | 数据类型 | 描述 |
| access_token | String | OAuth 2.0 Access Token (JWT)。 |
| token_type | String | Token 类型,目前取固定值 Bearer 。 |
| expires_in | Number | Access Token 有效期,单位秒。 |
| scope | String | Access Token 的 Scope。 |
| refresh_token | String | OAuth 2.0 Refresh Token。 |
| id_token | String | OIDC ID Token (JWT)。 |
注意:IDSEC 返回的是 JWT 格式的 ID Token,请参考 OIDC 产品文档 对 ID Token 进行解密验证。也可以直接使用相关的开发库完成解密验证。 验证所需的公钥通过调用 获取 JWT 公钥 接口获得。
九、异常响应示例
·client_id 参数缺失或有误。
HTTP/1.1 401 Unauthorized
·client_id 与获取授权和获取 Token 时使用的不一致。
HTTP/1.1 401 UnauthorizedContent-Type: application/json;charset=UTF-8{"error" : "invalid_client"}
·grant_type 参数有误。
HTTP/1.1 400 Bad RequestContent-Type: application/json;charset=UTF-8{"error" : "unsupported_grant_type","error_description" : "OAuth 2.0 Parameter: grant_type","error_uri" : "https://datatracker.ietf.org/doc/html/rfc6749#section-5.2"}
·code 参数有误。
HTTP/1.1 400 Bad RequestContent-Type: application/json;charset=UTF-8{"error" : "invalid_grant"}