azure - Azure Sql 中的 Active Directory(AD) 身份验证不起作用

标签 azure azure-sql-database azure-active-directory

我正在尝试针对我的 Azure SQL 数据库进行 Azure AD 身份验证。

  • 我创建了一个 PaaS 数据库及其关联的 PaaS Sql Server。
  • 我将我的 Azure AD 帐户分配为“PaaS Sql Server”的“Active Directory 管理员”。

接下来,我使用我的域帐户登录 SSMS 以创建用户:

CREATE USER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3e4646467e474747105d5153" rel="noreferrer noopener nofollow">[email protected]</a>] FROM EXTERNAL PROVIDER; 
GO
sp_addrolemember db_datareader,  [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7b0303033b02020255181416" rel="noreferrer noopener nofollow">[email protected]</a>];  
GO
sp_addrolemember
db_datawriter,  [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e1999999a1989898cf828e8c" rel="noreferrer noopener nofollow">[email protected]</a>];  
GO

当我尝试使用 [email protected] 帐户登录时,我得到:

   Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. (.Net SqlClient Data Provider)

    Server Name: zzzzz.database.windows.net
    Error Number: 18456
    Severity: 14
    State: 1
    Line Number: 65536

我错过了什么?

奇怪的观察,如果我故意使用错误的密码,我会收到此错误: AADSTS70002:验证凭据时出错。 AADSTS50126:用户名或密码无效,这表明 AD 正在以某种方式工作,但整个过程中出现了问题。

另一个奇怪的观察: 如果我添加有效的 AD 帐户,则成功

CREATE USER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ec949494ac959595c28f8381" rel="noreferrer noopener nofollow">[email protected]</a>] FROM EXTERNAL PROVIDER; 

如果我生成了一个错误的 AD 帐户

CREATE USER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a9d1d1d1e8ebeae9d0d0d087cac6c4" rel="noreferrer noopener nofollow">[email protected]</a>] FROM EXTERNAL PROVIDER; 

我回来了:

Principal '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b2cacacaf3f0f1f2cbcbcb9cd1dddf" rel="noreferrer noopener nofollow">[email protected]</a>' could not be found or this principal type is not supported.

最佳答案

来自“类似帖子”

当您未指定要连接的数据库时,会出现匿名登录错误。只需在 SSMS 登录屏幕上选择“选项”并输入您要连接的数据库名称即可。这是因为您的用户是创建它的数据库中的包含用户。它在 Master 上不存在。 – Greg Grater 2017 年 3 月 7 日 1:23

这解决了我的问题——浪费了几个小时!!!

注意:对于 ODBC 连接,还必须在 master 中创建用户

关于azure - Azure Sql 中的 Active Directory(AD) 身份验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51112216/

相关文章:

azure - 查看 Azure 通知中心上的注册情况

c# - 使用 C# 从数据集中更新 Sql 表

visual-studio - SQL Azure 数据库构建失败 - 必须在数据库范围凭据之前创建主 key

Azure Active Directory B2C - 维护数据库中的用户

azure - 返回 400 "Resource not found for the segment ' 联系人的组的图表 Delta API。”

azure - 无法使用 O365 API 的刷新 token 生成访问 token

azure - 获取子网中可用 IP 地址的列表

azure - 如何使用 bicep 在多个服务总线中创建多个主题/队列?

c# - 添加数据库迁移代码时 Azure 应用服务崩溃

sql - 在单个 T-SQL 语句中多次返回时间戳