创建 JWT 承载令牌
使用本主题中的信息以创建在 JWT 持有者流中使用的 JWT 不记名令牌。
JWT 持有者有效内容声明
JWT 持有者有效内容必须包含以下声明:| 声明名称 | 描述 | 有效值 |
|---|---|---|
| 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 标识 | 随机生成的不透明字符串。 |
| 声明名称 | 描述 | 有效值 |
|---|---|---|
| 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"
}
```
支持的算法
| 用途 | 支持的算法 |
|---|---|
| 用于签名的 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'。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..."
```