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

通过JDBC连接MSSQL Server时能否使用Azure Active Directory身份验证

JDBC通过Azure Active Directory连接SQL Server解决方案

可以通过Azure Active Directory实现JDBC连接SQL Server,微软官方的SQL Server JDBC驱动从6.0版本开始就原生支持多种Azure AD认证模式。

你提供的Windows认证代码只需修改少量参数即可适配Azure AD认证场景,以下是两种常用场景的示例代码:

1. Azure AD用户名密码认证(改动最小,适合测试场景)

val jdbcHostname = "hostname"
val jdbcPort = 1433
val jdbcDatabase = "database_name"
// 仅修改jdbcUrl的认证参数即可
val jdbcUrl = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcDatabase};authentication=ActiveDirectoryPassword"
// 用户名密码替换为Azure AD账号密码,格式通常为xxx@your_domain.onmicrosoft.com
val username = "azure_ad_username"
val password = "azure_ad_password"
val driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

// 读取为Spark DataFrame的逻辑无需调整
val jdbcDF = spark.read
  .format("jdbc")
  .option("url", jdbcUrl)
  .option("dbtable", table)
  .option("user", username)
  .option("password", password)
  .option("driver", driver)
  .load()

2. Azure AD服务主体令牌认证(更安全,适合生产自动化场景)

不需要硬编码账号密码,先通过Azure AD接口获取访问令牌后传入配置即可:

// 提前获取Azure AD访问令牌的逻辑省略,示例中令牌存储在变量aadAccessToken中
val jdbcHostname = "hostname"
val jdbcPort = 1433
val jdbcDatabase = "database_name"
val jdbcUrl = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcDatabase}"
val driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

val jdbcDF = spark.read
  .format("jdbc")
  .option("url", jdbcUrl)
  .option("dbtable", table)
  .option("accessToken", aadAccessToken)
  .option("driver", driver)
  .load()

注意事项

  • 必须使用6.0及以上版本的mssql-jdbc驱动,部分高版本驱动需要同步依赖对应版本的Azure AD认证相关依赖包
  • 所用的Azure AD身份(普通用户/服务主体)需要提前在目标SQL库中创建映射用户并授权,参考SQL语句:CREATE USER [aad_identity_name] FROM EXTERNAL PROVIDER;
  • 如果连接的是非Azure托管的本地SQL Server,需要先完成本地SQL Server实例的Azure AD认证配置,否则该方式不生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:15:03