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

jlo*_*ail 5 azure azure-active-directory azure-sql-database

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

  • 我创建了一个 PaaS 数据库,它关联了 PaaS Sql Server。
  • 我将我的 Azure AD 帐户分配为“PaaS Sql Server”的“Active Directory admin”。

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

CREATE USER [xxx@yyy.com] FROM EXTERNAL PROVIDER; 
GO
sp_addrolemember db_datareader,  [xxx@yyy.com];  
GO
sp_addrolemember
db_datawriter,  [xxx@yyy.com];  
GO
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 xxxxx@yyy.com 帐户登录时,我返回:

   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
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

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

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

CREATE USER [xxx@yyy.com] FROM EXTERNAL PROVIDER; 
Run Code Online (Sandbox Code Playgroud)

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

CREATE USER [xxxABC@yyy.com] FROM EXTERNAL PROVIDER; 
Run Code Online (Sandbox Code Playgroud)

我回来了:

Principal 'xxxABC@yyy.com' could not be found or this principal type is not supported.
Run Code Online (Sandbox Code Playgroud)

jlo*_*ail 4

来自“类似的帖子”

\n\n

当您未指定要连接的数据库时,会发生匿名登录错误。只需在 SSMS 登录屏幕上选择“选项”,然后输入要连接的数据库名称。这是因为您的用户是创建它的数据库中的包含用户。它在 Master 上不存在。\xe2\x80\x93 格雷格刨丝器 2017 年 3 月 7 日 1:23

\n\n

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

\n\n

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

\n