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

Azure数据库连接报错:Active Directory密码认证失败(MFA相关)

解决Azure SQL ADO.NET连接因MFA导致的AADSTS50076错误

问题原因

你的账号开启了多因素认证(MFA),但当前使用的Active Directory Password认证方式不支持MFA验证,因此直接用用户名密码连接会触发报错。而SSMS能正常连接,是因为它支持交互式的MFA验证流程(比如调用Microsoft Authenticator完成验证)。

解决方案

方案1:切换到交互式认证模式

修改连接字符串中的认证方式为Active Directory Interactive,这样ADO.NET会触发和SSMS一致的交互式MFA验证流程(比如弹出Authenticator的验证请求)。

修改后的连接字符串:

Server=tcp:dev-bloggr.database.windows.net,1433;Initial Catalog=DevBloggr;Persist Security Info=False;User ID={your_username};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Interactive";

注意:不需要保留Password参数,交互式认证会引导你完成MFA验证。

方案2:创建SQL认证的数据库用户

如果你的应用场景不适合交互式认证(比如后台服务无法弹出验证窗口),可以创建一个SQL原生认证的用户,绕过Entra ID的MFA限制:

  1. 通过SSMS连接到Azure SQL数据库(先完成MFA验证)
  2. 执行以下SQL语句创建用户并分配权限:
CREATE LOGIN [sql_dev_user] WITH PASSWORD = '你的强密码';
CREATE USER [sql_dev_user] FOR LOGIN [sql_dev_user];
ALTER ROLE db_owner ADD MEMBER [sql_dev_user]; -- 可根据实际需求调整权限
  1. 使用SQL认证的连接字符串:
Server=tcp:dev-bloggr.database.windows.net,1433;Initial Catalog=DevBloggr;Persist Security Info=False;User ID=sql_dev_user;Password=你的强密码;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;

方案3:使用托管标识(推荐生产环境服务)

如果你的ASP.NET应用部署在Azure上(比如App Service),推荐使用托管标识,无需硬编码凭据,且天然适配MFA场景:

  1. 在Azure门户中,给你的应用服务启用系统分配或用户分配的托管标识
  2. 连接到Azure SQL数据库,执行SQL添加托管标识用户并分配权限:
CREATE USER [你的应用服务名称] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [你的应用服务名称];
ALTER ROLE db_datawriter ADD MEMBER [你的应用服务名称];
  1. 使用托管标识的连接字符串:
Server=tcp:dev-bloggr.database.windows.net,1433;Initial Catalog=DevBloggr;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Managed Identity";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:27:28