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

JWT访问令牌连接Azure SQL失败,<token-identified principal>登录报错排查

Azure SQL JWT令牌登录失败排查思路

1. 令牌核心声明校验

  • 校验aud(受众)声明:必须为https://database.windows.net/(国际版)或https://database.chinacloudapi.cn/(国内世纪互联版),不得为应用ID、其他资源地址,该字段配置错误是最常见的校验失败原因。
  • 校验iss(发行方)声明:必须和Azure SQL实例所属租户的AD发行地址匹配,格式为https://sts.windows.net/<租户ID>/,确认令牌是从对应租户申请获得。
  • 校验token_type声明:必须为Bearer类型,不能传递ID令牌、刷新令牌代替访问令牌。
  • 校验令牌有效期:确认当前时间在nbf(生效时间)和exp(过期时间)范围内,排除服务器时钟偏差导致的未生效/过期令牌问题。

2. Azure AD应用权限配置校验

  • 确认应用注册的委派权限为Azure SQL Database / user_impersonation,且已完成租户管理员同意,当前用户委派场景不得使用应用程序权限。
  • 确认申请令牌时的scope参数配置正确,必须指定为https://database.windows.net/.default或https://database.windows.net/user_impersonation,不得使用自定义scope。
  • 若实际为服务主体直连场景而非用户委派,需单独为服务主体创建数据库外部用户,执行SQL为CREATE USER [应用注册名称] FROM EXTERNAL PROVIDER;并授予对应角色,不能复用普通AD用户的配置。

3. JDBC驱动与连接配置校验

  • 确认运行环境Java版本与JDBC 9.4.0驱动兼容,排除依赖冲突导致的令牌传输异常。
  • 确认accessToken参数传递方式正确:不可将令牌拼接在JDBC URL中,必须通过独立的连接属性传递,且令牌值不需要添加Bearer 前缀,直接传递原始字符串即可。
  • 排查连接属性冲突:不可同时配置username、password参数和accessToken参数,二者只能选择一种认证方式。
  • 开启JDBC调试日志,添加JVM参数-Djava.util.logging.config.file=<日志配置文件路径>,捕获完整连接栈,排查是否存在令牌截断、编码异常等传输问题。

4. Azure SQL侧配置校验

  • 确认Azure SQL实例的Azure AD管理员配置正常,未发生租户切换、管理员账号变更等问题。
  • 执行SQL查询确认外部用户状态:SELECT name, type, type_desc FROM sys.database_principals WHERE name = 'aname@xxyyzz.onmicrosoft.com';,确认返回结果的type为E(外部用户)且未被禁用。
  • 确认应用所在出口IP已加入Azure SQL防火墙允许列表,排除网络拦截导致的认证流程中断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:15:02