从资源凭证提供商处获取 OAuth 2.0 令牌
功能介绍
使用配置的流程返回指定资源的OAuth2.0令牌。
URI
POST /v1/oauth2/token
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| custom_parameters | 否 | Map<String,String> | 参数解释: 授权请求的附加自定义参数(不会覆盖标准OAuth2参数)。 约束限制: 不涉及。 取值范围: 键值对,每个值长度为1~2048个字符。 默认取值: 不涉及。 |
| custom_state | 否 | String | 参数解释: 用于CSRF保护的不透明字符串(在回调URL响应中作为标准state参数返回)。 约束限制: 不涉及。 取值范围: 长度为1~4096个字符。 默认取值: 不涉及。 |
| force_authentication | 否 | Boolean | 参数解释: 是否发起新的3LO流程,无论现有会话如何。 约束限制: 不涉及。 取值范围: 默认取值: false |
| oauth2_flow | 是 | String | 参数解释: 要执行的OAuth2流程类型。 约束限制: 不涉及。 取值范围: 默认取值: 不涉及。 |
| resource_credential_provider_name | 是 | String | 参数解释: 资源的凭证提供者名称。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字及"-"、"_"组成,长度为1~128个字符。 默认取值: 不涉及。 |
| resource_oauth2_return_url | 否 | String | 参数解释: 令牌检索后重定向的回调URL(必须为工作负载身份配置)。 约束限制: 不涉及。 取值范围: 必须以协议开头,长度为1~2048个字符。 默认取值: 不涉及。 |
| scopes | 否 | Array of strings | 参数解释: 请求的OAuth作用域(粗粒度权限,由rich_authorization_details补充细粒度控制)。 约束限制: 不涉及。 取值范围: 数组长度范围[1,50],每个值长度为1~128个字符。 默认取值: 不涉及。 |
| session_uri | 否 | String | 参数解释: 用户认证会话的唯一标识符(跟踪OAuth2流程状态)。 约束限制: 不涉及。 取值范围: 必须以"urn:ietf:params:oauth:request_uri:"开头,后面跟随字母、数字、"."、"-"、"_"、"~"组成的字符串,长度为1~1024个字符。 默认取值: 不涉及。 |
| workload_access_token | 否 | String | 参数解释: 请求OAuth2.0令牌的工作负载身份令牌。 约束限制: 不涉及。 取值范围: 长度为1~131072个字符。 默认取值: 不涉及。 |
响应参数
状态码:200
| 参数 | 参数类型 | 描述 |
|---|---|---|
| access_token | String | 参数解释: 要使用的OAuth2.0访问令牌(如果请求了rich_authorization_details,则嵌入RAR授权详情声明)。 取值范围: 长度为1~131072个字符。 |
| authorization_url | String | 参数解释: 发起授权的URL(当需要用户授权时提供,包含编码的RAR详情以供用户同意)。 取值范围: 长度至少为1个字符。 |
| session_status | String | 参数解释: 用户授权会话的状态(决定OAuth2流程中的下一步操作)。 取值范围: |
| session_uri | String | 参数解释: 用户认证会话的唯一标识符(与请求的session_uri匹配)。 取值范围: 必须以"urn:ietf:params:oauth:request_uri:"开头,后面跟随字母、数字、"."、"-"、"_"、"~"组成的字符串,长度为1~1024个字符。 |
状态码:400
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
状态码:401
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
状态码:403
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
状态码:404
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
状态码:429
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
状态码:500
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 错误码。 取值范围: 不涉及。 |
| error_msg | String | 参数解释: 错误信息。 取值范围: 不涉及。 |
| request_id | String | 参数解释: 请求ID。 取值范围: 不涉及。 |
| encoded_authorization_message | String | 参数解释: 加密后的认证失败信息,可以通过STS5解密接口进行解密。 取值范围: 不涉及。 |
请求示例
从资源凭证提供商获取OAuth2.0令牌。
POST https://{endpoint}/v1/oauth2/token
{
"oauth2_flow" : "USER_FEDERATION",
"resource_credential_provider_name" : "my-oauth2-provider",
"resource_oauth2_return_url" : "https://example.com/callback",
"session_uri" : "urn:ietf:params:oauth:request_uri:abc123"
} 响应示例
状态码:200
{
"access_token" : "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"session_status" : "IN_PROGRESS",
"session_uri" : "urn:ietf:params:oauth:request_uri:abc123"
} 状态码
| 状态码 | 描述 |
|---|---|
| 200 | 请求成功(如果请求了RAR声明,则令牌中嵌入RAR声明)。 |
| 400 | 请求体异常(包括无效RAR类型/操作/位置验证)。 |
| 401 | 认证失败。 |
| 403 | 没有操作权限(包括RAR细粒度授权失败)。 |
| 404 | 未找到相应的资源。 |
| 429 | 请求过于频繁。 |
| 500 | 服务端异常。 |
错误码
请参见错误码。