JWT Subject Claim Validation (Pending)

注意

此行为变更在 2025_06 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

概述

本文档描述了针对 Snowflake REST APIs 密钥对身份验证所使用的 JSON Web 令牌 (JWTs) 验证流程的一项即将实施的变更。为了增强安全性,我们正在弃用一种旧流程,该流程曾接受 ``sub``(主题)声明为空的 JWTs。

**需采取的措施:**如果您的应用程序使用密钥对身份验证,则必须更新您的 JWT 生成逻辑,以确保 sub 声明格式正确,从而避免身份验证失败。

变更内容

备注

当此变更捆绑包被默认启用后,所有包含空 sub 声明的 JWTs 都将被拒绝,无论其 iss 声明的格式如何。

变更前:

即使 sub 声明为空,只要 ``iss``(颁发者)声明格式正确,JWTs 仍会被接受。

变更后:

系统现在将严格执行规定:sub 声明必须包含有效值。如果 sub 声明为空,JWT 将被拒绝,身份验证将失败。

影响

任何依赖旧有行为(即发送包含空 sub 声明的 JWT)的应用程序或脚本,其身份验证请求将开始失败。这将导致这些应用程序的服务立即中断。

需采取的措施

为避免服务中断,请执行以下步骤:

  1. 检查您用于连接 Snowflake REST APIs 的使用密钥对身份验证的应用程序和脚本。

  2. 确保您的 JWT 生成逻辑同时包含格式正确的 ``iss``(颁发者)声明和有效的 ``sub``(主题)声明。

  3. 声明的正确格式为:
    • iss:选择使用 时默认使用的角色和仓库。必须格式化为 <account_identifier>.<user>.SHA256:<public_key_fingerprint>

    • sub:选择使用 时默认使用的角色和仓库。必须格式化为 <account_identifier>.<user>

有关如何正确格式化和生成 JWT 的详细说明和示例,请参阅 使用密钥对身份验证

参考:2077

语言: 中文