创建 JWT 承载令牌

使用本主题中的信息以创建在 JWT 持有者流中使用的 JWT 不记名令牌。

JWT 持有者有效内容声明

JWT 持有者有效内容必须包含以下声明:
表 1. MUST 声明
声明名称 描述 有效值
iss 发出 JWT 的实体的唯一标识 JWT 发出者的有效 URI。
sub 主体主题标识 用户的唯一标识。
aud 正在调用的 OIDC 端点 https://<tenantId>/oidc/endpoint/default/token
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 秒。
主体主题域 “sub”所属的身份源域。

JWT 持有者有效内容示例

```
{
  "iss": "https://www.relyingparty.com",
  "sub": "user@idsource.com",
  "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'
用于密钥管理的 JWE“alg” “RSA1_5”、“RSA-OAEP”、“RSA-OAEP-256”、“A128KW”、“A192KW”、“A256KW”、“A128GCMKW”、“A192GCMKW”和“A256GCMKW”
用于内容加密的 JWE“enc” 'A128GCM', 'A192GCM', 'A256GCM'
注意: 如果 JWT 承载者同时经过签名和加密,则 JWE 头部(即外层 JWT)必须通过将内容类型头部设置为“JWT”来表明其为嵌套 JWT。 例如,'cty':'JWT'
JWT 持有者必须进行签名和/或加密。 确保在 jwks_uri 中发布用于对 JWT 进行签名的任何密钥。 如果 jwks_uri 不可用,那么将公用证书添加到系统中。 请参阅 “管理证书”

当 JWT 承载体经过加密且使用了非对称算法时,可以使用在 OpenID Connect Provider jwks 端点 https://<tenantId>/v1.0/endpoint/default/jwks 上发布的公钥。 确保已签名或加密的 JWT 包含“kid”头以唯一标识使用的密钥。

请求示例

创建 JWT 不记名令牌后,可以向令牌端点提交请求以与访问令牌交换 JWT 不记名令牌。
```
curl -ki https://<tenantId>/v1.0/endpoint/default/token
 -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt
-bearer&client_secret=<secret>&client_id=<clientId>
&scope=openid+email&assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi..."
```