创建预授权请求
使用这些信息创建一个预授权 JWT 请求,该请求将用于预授权代码流程。
预授权请求有效载荷声明
预授权请求的有效载荷必须包含以下声明。
| 声明名称 | 描述 | 有效值 |
|---|---|---|
| iss | 签发该 JWT 的凭证签发方的唯一标识符 | 凭证签发者的有效 URI。 |
| sub | 主体主题标识 | 用户的唯一标识。 |
| exp | JWT 到期时间 | 按 UTC 度量从 1970-01-01T0:0:0Z 开始的秒数。 注意: JWT 的过期时间不能超过未来 3600 秒。
|
| jti | JWT 标识 | 随机生成的不透明字符串。 |
预授权请求的有效载荷可以包含以下声明。
| 声明名称 | 描述 | 有效值 |
|---|---|---|
| aud | 授权服务器的签发者已发布在已知端点上。 | 凭证签发者的有效 URI。 |
| 子类型 | 主要主题标识符类型。 | “uid”、“username”或 'externalId' 中的任意一个。 默认值为“uid”。 |
| 域 | 主体主题域 | 该 sub 所属的身份来源域。 |
| iat | JWT 创建时间 | 按 UTC 度量从 1970-01-01T0:0:0Z 开始的秒数。 注意: JWT 的生成时间不能早于当前时间3600秒。
|
| tx_code | 凭证签发方对预授权设置的覆盖。 | 一个包含“交易代码声明”表中所述声明的 JSON 对象。 |
| 发行人所在州 | 一个不透明值,用于将凭证颁发者上下文与生成的访问令牌进行绑定。 | 任意字符串。 它也可以是 JWT。 |
只有在预授权设置中允许此类覆盖操作时,该 tx_code 声明才生效。 在此模式下,当索赔 tx_code 出现时,系统会生成一个交易代码。 “交易代码声明表”描述了可能的覆盖选项。
| 声明名称 | 描述 | 有效值 |
|---|---|---|
| input_mode | 确定交易代码的字符集。 | 要么是“数字”(仅限数字),要么是“文本”(字母数字) |
| 长度 | 确定交易代码的长度。 | 4 到 10 之间的一个数值 |
| 描述 | 钱包应用程序向最终用户显示的消息。simplified Chinese (Mainland) | 任何字符串 |
| 渠道 | 请说明如何将交易代码提供给最终用户。 | 一个包含下表4中所描述的声明的JSON对象。 |
可通过三种渠道接收交易代码:电子邮件、短信或由凭证签发方确定的其他方式。 对于最后一种选项,授权服务器只需将交易代码返回给凭证签发方。
| 声明名称 | 描述 | 有效值 |
|---|---|---|
| 类型 | 向最终用户传递交易代码的渠道类型。 | “电子邮件”、“短信”或“发卡行”中的任意一项 |
| 值 | sms最终用户的电子邮件地址(当 type type = email 时)或电话号码(当 type = 时)。 |
有效的电子邮件地址或电话号码。 |
预授权请求有效载荷示例
{
"iss": "https://www.credential-issuer.com",
"sub": "user@idsource.com",
"sub_type": "username",
"aud": "https://sometenant.ice.com/oauth2",
"exp": 1324298520,
"jti": "araiov8werli2awerlj",
"tx_code": {
"input_mode": "text",
"length": 6,
"description": "Please provide this transaction code:",
"channel": {
"type": "email",
"value": "bob@ibm.com"
},
},
"issuer_state": "sa82jpawfagnns"
}
支持的算法
预授权请求的 JWT 可以使用以下任一算法进行签名: RS256、 RS384、 RS512、 ES256、 ES384、 ES512、 PS256、 PS384 以及 PS512。
该 JWT 基于凭证签发者的 JWKS URI 进行验证。 请确保已签名的 JWT 包含 标头, kid 以便唯一标识所使用的密钥,因为 JWKS URI 可能会发布多个密钥。 凭证颁发者的 JWKS URI 配置在联合设置中进行。 确保发行者的标识符与请求负载中的声明 iss 相匹配。
请求示例
生成预授权请求 JWT 后,即可向预授权端点提交请求以生成预授权码。
curl -ki -X POST https://<tenantId>/oauth2/preauth --data "eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi..." -H "Content-Type:application/jwt"