创建预授权请求

使用这些信息创建一个预授权 JWT 请求,该请求将用于预授权代码流程。

预授权请求有效载荷声明

预授权请求的有效载荷必须包含以下声明。

表 1. MUST 声明
声明名称 描述 有效值
iss 签发该 JWT 的凭证签发方的唯一标识符 凭证签发者的有效 URI。
sub 主体主题标识 用户的唯一标识。
exp JWT 到期时间 按 UTC 度量从 1970-01-01T0:0:0Z 开始的秒数。
注意: JWT 的过期时间不能超过未来 3600 秒。
jti JWT 标识 随机生成的不透明字符串。

预授权请求的有效载荷可以包含以下声明。

表 2. MAY的声明
声明名称 描述 有效值
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 出现时,系统会生成一个交易代码。 “交易代码声明表”描述了可能的覆盖选项。

表 3. 交易代码声明
声明名称 描述 有效值
input_mode 确定交易代码的字符集。 要么是“数字”(仅限数字),要么是“文本”(字母数字)
长度 确定交易代码的长度。 4 到 10 之间的一个数值
描述 钱包应用程序向最终用户显示的消息。simplified Chinese (Mainland) 任何字符串
渠道 请说明如何将交易代码提供给最终用户。 一个包含下表4中所描述的声明的JSON对象。

可通过三种渠道接收交易代码:电子邮件、短信或由凭证签发方确定的其他方式。 对于最后一种选项,授权服务器只需将交易代码返回给凭证签发方。

表 4。 频道声明
声明名称 描述 有效值
类型 向最终用户传递交易代码的渠道类型。 “电子邮件”、“短信”或“发卡行”中的任意一项
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"