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

如何在C#中通过Microsoft Entra ID注册应用本地连接Azure SQL数据库?

Azure SQL 本地使用DefaultAzureCredential连接失败(Login failed for user '')解决建议
  • 检查连接字符串配置
    连接字符串里不能包含User ID、Password这类传统身份验证参数,否则会和AccessToken冲突,直接导致空用户登录失败。正确的连接字符串格式参考:

    Server=tcp:{你的服务器名}.database.windows.net,1433;Database={你的数据库名};Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
    
  • 确认数据库内的Entra ID用户配置
    即便你的Entra ID账号是SQL Server的全局管理员,也必须在目标数据库内创建对应的外部用户才能访问数据:

    -- 替换为你的Entra ID账号(如user@domain.com)或应用注册ID
    CREATE USER [你的身份标识] FROM EXTERNAL PROVIDER;
    -- 按需分配读写权限,可根据业务调整角色
    ALTER ROLE db_datareader ADD MEMBER [你的身份标识];
    ALTER ROLE db_datawriter ADD MEMBER [你的身份标识];
    
  • 调整DefaultAzureCredential的本地验证策略
    本地开发时,DefaultAzureCredential会自动尝试多种验证渠道,可能获取到的token对应的身份并非你预期的账号。可以指定仅使用特定验证方式,比如交互式登录:

    var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions
    {
        ExcludeInteractiveBrowserCredential = false,
        ExcludeEnvironmentCredential = true, // 不需要用local.settings.json的应用密钥时可关闭
        ExcludeManagedIdentityCredential = true,
        ExcludeVisualStudioCredential = false
    });
    

    可以通过jwt.io解码token,查看upn或appid字段,确认token对应的身份是你已配置权限的对象。

  • 验证SQL Server的Entra ID全局设置
    登录Azure门户的SQL Server资源页面,进入「Azure Active Directory」选项卡,确认已启用Entra ID身份验证,且管理员配置正确。

  • 代码内新增token有效性验证
    在获取token后添加简单输出,确认token本身有效:

    Console.WriteLine($"Token expires at: {token.ExpiresOn}");
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:52:39