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.1Content-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 OKContent-type: application/json{ "authorizationEndpoint": "string", "clientId": "string", "clientIdIssuedAt": number, "clientSecret": "string", "clientSecretExpiresAt": number, "tokenEndpoint": "string"}
如果操作成功,服务器将发回 HTTP 200 响应
响应 JSON 中各个字段的含义如下:
-
authorizationEndpoint- 客户端可以用来请求授权的节点。
- 类型: String
-
clientId- 每个客户端的唯一标识符。客户端将使用此标识符在后续调用中向服务进行身份验证。
- 类型: String
-
clientIdIssuedAtclientId和clientSecret的签发时间。- 类型: Long
-
clientSecret- 为客户端生成的密钥。客户端将在后续调用中使用此字符串进行服务身份验证。
- 类型: String
-
clientSecretExpiresAtclientId和clientSecret的失效时间。- 类型: Long
-
tokenEndpoint- 客户端可以用来创建令牌的节点。
- 类型: String
实例
URL 地址:https://oidc.{region}.amazonaws.com
这里的 region 替换成实际的 region 即可。
注意:以下例子中,为了便于展示,对所有的 JSON 进行了格式化。
1. 请求
POST /client/register HTTP/1.1Host: oidc.us-east-1.amazonaws.comConnection: closeContent-Type: application/jsonContent-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 OKDate: Wed, 10 Sep 2025 03:11:02 GMTContent-Type: application/jsonContent-Length: 3063Connection: closex-amzn-RequestId: 83f751c4-ff32-4a78-9673-xxxd872cecb5{ "authorizationEndpoint":null, "clientId":"xxxRc_xprD0YDHd4KYgtR3VzLWVhcxxxxx", "clientIdIssuedAt":1757473862, "clientSecret":******, "clientSecretExpiresAt":1765249862, "tokenEndpoint":null}