You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake基于Azure AD外部认证切换角色及JDBC连接报错求助

问题1:未配置应用ID URI时触发AADSTS650053错误

你遇到的AADSTS650053错误,核心原因是Azure权限机制和Snowflake文档的表述存在细节冲突:

  • Azure官方规则明确:当资源应用未配置应用ID URI时,所有针对该应用的作用域请求会默认指向Microsoft Graph(错误信息里的资源ID 00000003-0000-0000-c000-000000000000就是Graph的标识),这和你在资源应用中定义的Snowflake角色作用域完全不匹配。
  • Snowflake文档中“无需配置应用ID URI,用账户URL作为受众”的表述,仅针对Snowflake侧的受众配置,但Azure侧必须要有应用ID URI才能将作用域关联到你的资源应用,而非默认的Graph。

解决步骤:

  1. 在Azure资源应用的“概述”页面,设置唯一的应用ID URI(比如https://<your-snowflake-account>.snowflakecomputing.com或自定义URI)。
  2. 更新Snowflake的安全集成,将这个应用ID URI加入AUDIENCES参数,同时保留原有的账户URL作为受众(确保兼容):
ALTER SECURITY INTEGRATION <your_oauth_integration>
SET AUDIENCES = ('https://<your-snowflake-account>.snowflakecomputing.com', 'https://<your-app-id-uri>');
问题2:令牌验证成功但JDBC连接时角色参数非法

你的JDBC URI中role参数使用了Azure作用域的URI格式,这是错误的——Snowflake JDBC的role参数需要直接填写Snowflake原生角色名称,而非Azure中定义的作用域标识。令牌中已经包含了Azure作用域信息,Snowflake会通过安全集成的OAUTH_SCOPE_MAPPING配置自动映射到对应的Snowflake角色。

修正后的JDBC URI示例:

snowflake://<account>.snowflakecomputing.com:<port>/?warehouse=<your_warehouse>&db=<your_db>&authenticator=oauth&role=MY_SNOWFLAKE_ROLE

额外检查项:

  • 确认Snowflake安全集成中已正确配置OAUTH_SCOPE_MAPPING,将Azure的作用域(比如https://<your-app-id-uri>/<myrolename>)映射到对应的Snowflake角色:
ALTER SECURITY INTEGRATION <your_oauth_integration>
SET OAUTH_SCOPE_MAPPING = ('https://<your-app-id-uri>/<myrolename>' = 'MY_SNOWFLAKE_ROLE');
  • 确保Azure客户端应用已添加资源应用的作用域权限,并完成管理员同意(如果是租户级权限)。

内容的提问来源于stack exchange,提问作者Salil Shenoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:27:23