AWS SSO OIDC CreateToken API 详解


ref: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html

为使用 client secret 进行身份验证的客户端创建并返回访问令牌和刷新令牌。

访问令牌可用于获取配置的 AWS 账户的短期凭证或使用 bearer 身份验证访问 API。

请求语法


POST /token HTTP/1.1
Content-type: application/json
{
"clientId": "string",
"clientSecret": "string",
"code": "string",
"codeVerifier": "string",
"deviceCode": "string",
"grantType": "string",
"redirectUri": "string",
"refreshToken": "string",
"scope": [ "string" ]
}

响应语法


HTTP/1.1 200
Content-type: application/json
{
"accessToken": "string",
"expiresIn": number,
"idToken": "string",
"refreshToken": "string",
"tokenType": "string"
}

如果操作成功,服务器将发回 HTTP 200 响应

响应 JSON 中各个字段的含义如下:

实例


URL 地址:https://oidc.{region}.amazonaws.com

这里的 region 替换成实际的 region 即可。

注意:以下例子中,为了便于展示,对所有的 JSON 进行了格式化。

OAuth


我们下面示例中都是用的 Authorization Code 授权类型。

在这种情况下,我们需要设置请求中的 code, codeVerifier, grantType, redirectUri.

对于 code, codeVerifier, 如何获取呢?

// 初始用户认证请求
https://oidc.us-east-1.amazonaws.com/authorize?client_id=xxxx&response_type=code&redirect_uri=http%3A%2F%2F127.0.0.1%3A37117&state=xxxx%3D%3D&code_challenge=xxxx&code_challenge_method=S256
// 用户在浏览器中进行授权
// 授权成功后, 我们从 redirectUri 处获取响应:
/?code=xxxxJ&state=aHRxxxxNw%3D%3D

获取一个全新的 Token


1. 请求


POST /token HTTP/1.1
Host: oidc.us-east-1.amazonaws.com
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/json
Content-Length: 3336
{
"clientId":"zyrRc_xprD0YDHd4KYgtR3VzLWVhc3QtMQ",
"clientSecret":******,
"code":"eyJraWQiOiJrZXktMTU2NDAyODA3U....P9L913k7kF1q39bz9sFd7Ngm770D7x1y63IHJ",
"codeVerifier":"yg3zZkeWwzHO4uibgHMyfomhDd7Qv6yd-OXym2I1PZo",
"grantType":"authorization_code",
"redirectUri":"http:\/\/127.0.0.1:50804"
}

2. 响应


HTTP/1.1 200 OK
Date: Wed, 10 Sep 2025 03:11:21 GMT
Content-Type: application/json
Content-Length: 661
Connection: close
x-amzn-RequestId: ab85796c-380b-4498-a115-12223fa8edc3
{
"accessToken":******,
"aws_sso_app_session_id":"xxxxxxxx-7b60-4396-958e-xxxxx7af44bc",
"expiresIn":3600,
"idToken":null,
"issuedTokenType":null,
"originSessionId":null,
"refreshToken":******,
"tokenType":"Bearer"
}

刷新已有 Token


1. 请求


POST /token HTTP/1.1
Host: oidc.us-east-1.amazonaws.com
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/json
Content-Length: 3229
{
"clientId":"UhVET-ZlxxxxxxXtxyc4Z3VzLWVhc3QtMQ",
"clientSecret":******,
"refreshToken":******,
"grantType":"refresh_token"
}

2. 响应


HTTP/1.1 200 OK
Date: Tue, 09 Sep 2025 19:41:00 GMT
Content-Type: application/json
Content-Length: 629
Connection: close
x-amzn-RequestId: 9b22a953-e8ef-41ef-b091-8f7c84f298c4
{
"accessToken":******,
"aws_sso_app_session_id":null,
"expiresIn":3600,
"idToken":null,
"issuedTokenType":null,
"originSessionId":null,
"refreshToken":******,
"tokenType":"Bearer"
}

OAuth Authorization Code 示例


https://oidc.us-east-1.amazonaws.com/authorize?client_id=zyrRc_xprD0YDHd4KYgtR3VzLWVhc3QtMQ&response_type=code&redirect_uri=http%3A%2F%2F127.0.0.1%3A37117&state=aHR0cDovLzEyNy4wLjAuMTozNzExNw%3D%3D&code_challenge=b12x3TqjqwFJfiMLjjsqdtB6VisJv9qA0qagXgkkOlI&code_challenge_method=S256
/?code=eyJraWQiOiJrZXktMTU2NDAyODA3OCIsImFsZyI6IkhTMzg0In0.eyJwbGFpbnRleHQiOiJEMEJHLXRkWFZfOS1nR1JqcXdFaG1wOU9FaW9ZRkhuR3R3YmxuV05DQVdVIiwiZXhwIjoxNzU3NDg5OTk5LCJ0eXBlIjoiYXV0aENvZGUifQ.EQEi1ugyiSlkfK0hSG1_LwM7qOvEKdLaANVe-kLR4XsTkw_I7l5TfyWdfJjkQT2J&state=aHR0cDovLzEyNy4wLjAuMTozNzExNw%3D%3D
Published at:
September 19, 2025
Keywords:
AWS
Amazon S3
SSO
OIDC
OAuth