AWS SSO OIDC RegisterClient API 详解
ref: https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_RegisterClient.html
向 IAM Identity Center 注册公共客户端。
这允许客户端使用带有代码交换证明密钥 (PKCE) 的授权码授予或设备代码授予来执行授权。
请求语法
POST /client/register HTTP/1.1
Content-type: application/json
{
"clientName": "string",
"clientType": "string",
"entitledApplicationArn": "string",
"grantTypes": [ "string" ],
"issuerUrl": "string",
"redirectUris": [ "string" ],
"scopes": [ "string" ]
}
-
clientName
- 客户端名称。
- 类型: String
- 是否必须: 是
-
clientType
- 客户端类型。该服务仅支持
public
客户端类型。除此之外的任何客户端类型都将被服务拒绝。 - 类型: String
- 是否必须: 是
- 客户端类型。该服务仅支持
-
entitledApplicationArn
- 此 IAM Identity Center 应用程序 ARN 用于定义管理员管理的配置,以便公共客户端访问资源。 授权时,此客户端可用的范围、授权和重定向 URI 将受此应用程序资源的限制。
- 类型:String
- 是否必须: 否
-
grantType
- 客户端支持的 OAuth 2.0 授权类型列表。此列表用于限制客户端可用的令牌授予流程。支持以下 OAuth 2.0 授权类型:
- Authorization Code -
authorization_code
- Device Code -
urn:ietf:params:oauth:grant-type:device_code
- Refresh Token -
refresh_token
- Authorization Code -
- 类型:String Array
- 是否必须: 否
- 客户端支持的 OAuth 2.0 授权类型列表。此列表用于限制客户端可用的令牌授予流程。支持以下 OAuth 2.0 授权类型:
-
issuerUrl
- 与 IAM Identity Center 实例关联的 IAM Identity Center 颁发者 URL。用户通过客户端访问资源时需要此值。
- 类型:String
- 是否必须: 否
-
redirectUris
- 客户端的重定向 URI 列表。授权完成后,此列表用于限制用户代理可以重定向的位置。
- 类型:String Array
- 是否必须: 否
-
scopes
- 客户端定义的 scope 列表。授权后,此列表用于在授予访问令牌时限制权限。
- 类型:String Array
- 是否必须: 否
响应语法
HTTP/1.1 200 OK
Content-type: application/json
{
"authorizationEndpoint": "string",
"clientId": "string",
"clientIdIssuedAt": number,
"clientSecret": "string",
"clientSecretExpiresAt": number,
"tokenEndpoint": "string"
}
如果操作成功,服务器将发回 HTTP 200 响应
响应 JSON 中各个字段的含义如下:
-
authorizationEndpoint
- 客户端可以用来请求授权的节点。
- 类型: String
-
clientId
- 每个客户端的唯一标识符。客户端将使用此标识符在后续调用中向服务进行身份验证。
- 类型: String
-
clientIdIssuedAt
clientId
和clientSecret
的签发时间。- 类型: Long
-
clientSecret
- 为客户端生成的密钥。客户端将在后续调用中使用此字符串进行服务身份验证。
- 类型: String
-
clientSecretExpiresAt
clientId
和clientSecret
的失效时间。- 类型: Long
-
tokenEndpoint
- 客户端可以用来创建令牌的节点。
- 类型: String
实例
URL 地址:https://oidc.{region}.amazonaws.com
这里的 region
替换成实际的 region 即可。
注意:以下例子中,为了便于展示,对所有的 JSON 进行了格式化。
1. 请求
POST /client/register HTTP/1.1
Host: oidc.us-east-1.amazonaws.com
Connection: close
Content-Type: application/json
Content-Length: 234
{
"clientName":"XX XX XXXXX",
"clientType":"public",
"issuerUrl":"https:\/\/d-xxxxxxxxxx.awsapps.com\/start",
"redirectUris":["http:\/\/127.0.0.1:50804"],
"grantTypes":["authorization_code","refresh_token"],
"scopes":["sso:account:access"]
}
2. 响应
HTTP/1.1 200 OK
Date: Wed, 10 Sep 2025 03:11:02 GMT
Content-Type: application/json
Content-Length: 3063
Connection: close
x-amzn-RequestId: 83f751c4-ff32-4a78-9673-xxxd872cecb5
{
"authorizationEndpoint":null,
"clientId":"xxxRc_xprD0YDHd4KYgtR3VzLWVhcxxxxx",
"clientIdIssuedAt":1757473862,
"clientSecret":******,
"clientSecretExpiresAt":1765249862,
"tokenEndpoint":null
}