我正在尝试使用 AAD 帐户连接到 Azure SQL DB,作为我的 Azure 管道的一部分。大致我有以下几点:
具有关联服务连接的 Azure 管道。AAD 管理员设置为(连接的)服务主体的 Azure SQL DB。获取服务主体的持有者令牌的 Azure CLI 任务。
然后我有一个使用不记名令牌连接到数据库的 Azure Powershell 脚本:
$conn = new-object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Server=tcp:$($sqlServer),1433;Initial Catalog=$($sqlDB);Persist Security Info=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
$conn.AccessToken = $env:ACCESSTOKEN
$conn.Open()
这会导致以下错误:
Login failed for user '<token-identified principal>
允许运行管道的代理通过 SQL Server 防火墙。
在 DB 日志中,错误代码为 18456,状态为 132(AAD 故障)。
我已经使用 Azure CLI 手动测试了这个,使用服务连接服务主体登录,请求不记名令牌,然后连接到数据库(使用上面的代码)并且这有效。
如果我比较 Pipeline 测试和 Azure CLi 手动测试的不记名令牌,它们是相同的(除了 exp、uti 和 aio)
有任何想法吗?



