创建客户端密钥 JWT 和私钥 JWT

使用本主题中的信息创建客户机密钥 JWT 和专用密钥 JWT 进行客户机认证。

JWT 持有者有效内容声明

JWT 持有者有效内容必须包含以下声明:
表 1. MUST 声明
声明名称 描述 有效值
iss 发出 JWT 的实体的唯一标识 客户机标识。
sub 主体主题标识 客户机标识。
aud 有效值为授权服务器在已知端点(https://<tenantId>/oidc/endpoint/default/.well-known/openid-configuration)中发布的发行者。 https://<tenantId>/oidc/endpoint/default
exp JWT 到期时间 按 UTC 度量从 1970-01-01T0:0:0Z 开始的秒数。
注意: JWT 的过期时间不能超过 86400 秒。
jti JWT 标识 随机生成的不透明字符串。
JWT 持有者有效内容可能包含以下声明:
表 2. MAY的声明
声明名称 描述 有效值
nbf JWT 不早于时间 按 UTC 度量从 1970-01-01T0:0:0Z 开始的秒数。
iat JWT 创建时间 按 UTC 度量从 1970-01-01T0:0:0Z 开始的秒数。
注意: JWT 的创建时间不能早于当前时间 86400 秒。

JWT 有效内容示例

```
{
  "iss": "29e81c80-b507-463c-b542-5a1177b37808",
  "sub": "29e81c80-b507-463c-b542-5a1177b37808",
  "aud": "https://sometenant.ice.com/oidc/endpoint/default/token",
  "exp": 1324298520,
  "jti": "araiov8werli2awerlj"
}
```

支持的算法

表 3. 支持的算法
用途 支持的算法
用于签名的 JWS“alg” 'RS256', 'RS384', 'RS512', 'HS256', 'HS384', 'HS512', 'PS256', 'PS384', 'PS512
必须签署 JWT。 确保在 jwks_uri 中发布用于对 JWT 进行签名的任何密钥。 如果 jwks_uri 不可用,那么将公用证书添加到系统中。 请参阅 “证书管理”

确保已签署的 JWT 包括 `kid` 头才能唯一标识所用的密钥。

请求示例

在创建 JWT 令牌之后,可以使用相应 JWT 作为客户机断言向令牌端点提交请求。
```
curl -ki https://<tenantId>/v1.0/endpoint/default/token
 -d "grant_type=password&client_id=87df91dc-63de-4765-8701-b59cc8bd9e11&scope=openid
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGci..."
```

client_assertion_type 必须始终为 urn:ietf:params:oauth:client-assertion-type:jwt-bearer