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

本地ASP.NET应用通过托管标识连接Azure SQL MI失败求助

问题分析与解决方案

你遇到的核心问题是:本地Windows服务器上的ASP.NET应用无法使用Active Directory Managed Identity认证方式连接Azure SQL MI,原因是托管身份(Managed Identity)是Azure专属资源的身份机制,仅适用于Azure内部的服务(比如Azure VM、App Service、Function等),本地服务器没有对应的托管身份服务,因此无法获取有效的身份令牌。

而你用SSMS能成功连接,是因为SSMS使用的是Active Directory集成认证(自动复用当前Windows账户的AD身份)或AD密码认证,和托管身份不是同一机制。

可行的解决方案

1. 使用Active Directory密码认证

直接通过Azure AD账户的用户名和密码连接,修改连接字符串如下:

string ConnectionString = @"Server=demo.database.windows.net; Authentication=Active Directory Password; Encrypt=True; Database=testdb; User ID=你的AD账户@域名.com; Password=你的AD账户密码";

注意:确保该AD账户已被授权访问目标SQL MI数据库(比如在SQL MI中创建用户并分配权限)。

2. 使用Active Directory集成认证

如果你的本地Windows服务器已加入Azure AD域,且运行应用的Windows账户已被授权访问SQL MI,可以使用集成认证,连接字符串无需用户名密码:

string ConnectionString = @"Server=demo.database.windows.net; Authentication=Active Directory Integrated; Encrypt=True; Database=testdb";

这种方式会自动使用当前应用进程的Windows账户身份进行认证,适合域内环境。

3. 无密码认证(Azure AD应用注册)

如果需要无密码的认证方式,可以通过Azure AD应用注册实现:

  1. 在Azure AD中创建一个应用注册,获取租户ID、客户端ID,并生成客户端密钥或证书。
  2. 在Azure SQL MI中创建对应应用注册的用户,并分配数据库权限:
CREATE USER [你的应用注册名称] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [你的应用注册名称];
ALTER ROLE db_datawriter ADD MEMBER [你的应用注册名称];
  1. 在C#代码中使用Azure.Identity库获取令牌并连接:
// 先安装NuGet包:Azure.Identity
using Azure.Identity;
using Microsoft.Data.SqlClient;

var tenantId = "你的Azure AD租户ID";
var clientId = "你的应用注册客户端ID";
var clientSecret = "你的应用注册客户端密钥";

var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var token = credential.GetToken(new TokenRequestContext(new[] { "https://database.windows.net/.default" })).Token;

string connectionString = @"Server=demo.database.windows.net; Encrypt=True; Database=testdb";
using (var conn = new SqlConnection(connectionString))
{
    conn.AccessToken = token;
    conn.Open();
    // 执行数据库操作
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:20:27