Azure sql database 使用Azure Active Directory B2C在Azure SQL数据库中进行身份验证

Azure sql database 使用Azure Active Directory B2C在Azure SQL数据库中进行身份验证,azure-sql-database,azure-active-directory,Azure Sql Database,Azure Active Directory,我在通过Azure Active Directory验证Azure SQL数据库时遇到问题 我基本上遵循了我在这里找到的说明: []通过使用Azure Active Directory身份验证连接到SQL数据库] 我能够使用localhost和OpenID通过Azure Active Directory进行身份验证。我可以注册、登录和注销。我用过“fake@genericcompany.com“(实际电子邮件已更改)作为用户,我可以通过登录获得授权码和id令牌。我还补充说:"fake@gener

我在通过Azure Active Directory验证Azure SQL数据库时遇到问题

我基本上遵循了我在这里找到的说明: []通过使用Azure Active Directory身份验证连接到SQL数据库]

我能够使用localhost和OpenID通过Azure Active Directory进行身份验证。我可以注册、登录和注销。我用过“fake@genericcompany.com“(实际电子邮件已更改)作为用户,我可以通过登录获得授权码和id令牌。我还补充说:"fake@genericcompany.com“作为SQL数据库的Active Directory管理员,并将计算机的IP地址添加到防火墙设置中

我已尝试使用“身份验证”fake@genericcompany.com正在使用Microsoft SQL Server Management Studio,但我收到以下错误消息:

===================================

Cannot connect to abc.database.windows.net.

===================================

Failed to authenticate the user fake@genericcompany.com in Active Directory (Authentication=ActiveDirectoryPassword).
Error code 0xCAA90018; state 10
Could not discover a user realm. (.Net SqlClient Data Provider)

------------------------------
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476

------------------------------
Server Name: abc.database.windows.net
Error Number: 0
Severity: 11
State: 0
Procedure: ADALGetAccessToken


------------------------------
Program Location:

   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server)
   at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
以下是我的假Azure设置:

Azure Active Directory B2C
Directory domain: xyz.onmicrosoft.com

Azure SQL Server
Name: abc.database.windows.net
Server version: V12
Number of databases: 1
Database name: def
Dababase pricing tier: S0 Standard
我还将包含SQL数据库和服务器的订阅设置为位于上述相同的Active Directory中

我读过一些关于“包含的数据库”和“包含的数据库用户”的资料,我可能需要两个数据库:一个“主数据库”和一个“用户数据库”,但我不了解所有这些,特别是在Azure SQL数据库的上下文中。以下是我读过的一个链接,但并不完全理解:

[]包含的数据库用户-使您的数据库可移植]

我将在下面发布其他链接,因为SO不允许我发布超过2个链接。

正如我们在[][使用Azure Active Directory身份验证连接到SQL数据库]中记录的那样,MSA帐户和来宾帐户在当前版本中不受支持(见下文)。 Azure SQL DB当前仅支持本机和集成域Azure AD帐户

从医生那里。。。(请参阅Azure广告功能和限制)

不支持Microsoft帐户(例如outlook.com、hotmail.com、live.com)或其他来宾帐户(例如gmail.com、yahoo.com)。如果您可以使用帐户和密码登录,则您使用的Microsoft帐户不支持Azure SQL数据库的Azure AD身份验证

谢谢 米雷克


Mirek Sztajno,高级PM SQL Server安全团队

下面我收集了一些Azure广告链接(包括内置域)供您查看

只要您不使用MS帐户或来宾帐户,您描述的场景就应该有效。您可以使用用户列表(带有用户和密码)创建自己的本机域,或者使用ADFS将公司域与Azure AD联合,并允许使用Windows凭据。 请随意使用我们的帮助别名SQLAzureADAuth@microsoft.com有关此主题的进一步问题

谢谢


Mirek

以下是其他链接:[]包含的数据库][[Azure SQL数据库安全指南和限制]更新我有图片:[登录尝试1][[登录尝试2][[错误消息][]使用虚假、不存在的信息的错误消息与使用实际“服务器名”和“用户名”时的错误消息相同,也许这意味着什么?谢谢米瑞克;您是否有您正在谈论的本机和集成域Azure AD帐户的信息?这是否意味着我不能从Azure web服务或“localhost”等外部服务器获取web应用程序,通过Azure Active Directory进行身份验证,并以这种方式访问我们的SQL数据库?我们正在尝试使用Azure Active Directory对公司中的所有web应用进行身份验证。对于Microsoft和guest帐户,我使用了fake@gmail.com作为一个例子,但谢谢你,我将通过更改域名来澄清fake@genericcompany.com. 在我们的Active Directory设置中,在“身份提供商”下,我选择了“本地帐户”作为“电子邮件”,并且我没有设置任何“社交身份提供商”,其中列出了这些提供商:Microsoft帐户、Google、Facebook、LinkedIn和Amazon。您认为将身份提供者切换为“用户名”会有帮助吗?还有什么我应该试试的吗?