我创建了一个Azure租户并配置了以下内容:
Azure AD with:
请注意,内部没有任何内容,这一切都在云端。我的物理笔记本电脑实际上只是用作跳箱。
SQL Azure数据库和服务器:
我可以使用Active Directory通用身份验证或Active Directory密码身份验证从笔记本电脑上的SSMS轻松连接到SQL Azure数据库。对于这两种情况,我都会因为预期的用户名和密码而受到质疑。
目的: 我希望能够使用集成身份验证,以便从a)机器,b)ASP.NET MVC站点无缝地流动身份。我没有尝试过场景b是的,所以让我们停下来吧。对于方案a,我已经完成了以下操作。
配置Azure VM:
简而言之,我的完整环境"由Azure AD,SQL Azure数据库和客户端VM组成。
问题: 我使用目录服务将VM加入我的Azure Active Directory,注销并以有效域用户身份登录(在AD和SQL Azure中有效,具有适当的登录和权限)。当我打开SSMS时,我可以很好地连接Active Directory通用身份验证或Active Directory密码身份验证,但是当我尝试连接Active Directory身份验证安全性时,我收到以下错误。如果我将VM直接加入Azure AD,也会发生这种情况。我的部署是100%云,因此没有联邦。
所以我有两个问题:
由于
===================================
无法连接到.database.windows.net。
===================================
无法在Active中验证用户NT Authority \ Anonymous Logon 目录(身份验证= ActiveDirectoryIntegrated)。错误代码 0xCAA9001F; state 10仅支持集成Windows身份验证 在联邦流程中。 (.Net SqlClient数据提供程序)
------------------------------如需帮助,请点击:http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476
------------------------------服务器名称:.database.windows.net错误号码:0严重性:11状态:0 过程:ADALGetAccessToken
------------------------------计划地点:
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity,SqlConnectionString connectionOptions,SqlCredential 凭证,Object providerInfo,String newPassword,SecureString newSecurePassword,Boolean redirectedUserInstance,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData, DbConnectionPool池,String accessToken,Boolean applyTransientFaultHandling)at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options,DbConnectionPoolKey poolKey,Object poolGroupProviderInfo, DbConnectionPool池,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次重试,DbConnectionOptions userOptions)at at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(的DbConnection outerConnection,DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
1 重试) System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 重试)在System.Data.SqlClient.SqlConnection.Open()处 Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci,IServerType服务器)at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
答案 0 :(得分:5)
从Azure支持获得更新:
它不起作用,因为:
所以,你可以添加2-3个低功耗VM来实现AD + ADFS + AAD + AAD-DS,但这绝对不是理想的方式。
如果我获得有关未来计划的信息,我将在此处分享。
**
有相同的问题和一些打开的门票。一旦获得其他信息,将更新此答案。
截至今天,只有文档here支持联合设置。您必须使用AD Connect建立ADFS setup。
这是AAD-DS应该提供的纯云解决方案。 AAD-DS仍然是预览......
答案 1 :(得分:0)
直到在Azure Sql Server功能屏幕中将域帐户设置为用于“ Active Directory管理员”设置之前,我才拥有联合身份验证流消息。然后,我可以使用在此帐户下运行的SSMS进行连接。
注意:为了简化以其他用户身份运行SSMS的过程,我使用了runas: C:\ Windows \ System32 \ runas.exe / savecred /user:YourAdAdminUser@YourDomain.com“ C:\ Program Files(x86)\ Microsoft SQL Server Management Studio 18 \ Common7 \ IDE \ Ssms.exe” < / p>
以该用户身份运行时,我使用SSMS身份验证选项“ Active Directory-Integrated”进行了连接。从这里,我在主数据库中运行以下命令:
使用DEFAULT_SCHEMA = dbo从外部提供商创建用户[YourAdAdminUser@YourDomain.com]
然后,我使用本地SQL身份验证连接到SSMS中的同一服务器,并使用设置为Azure Sql Server实例的“服务器管理员”的帐户登录。从这里,我在主数据库中运行了alter role命令:
ALTER ROLE dbmanager添加成员[YourAdAdminUser@YourDomain.com]
ALTER ROLE loginmanager添加成员[YourAdAdminUser@YourDomain.com]
现在,我可以回到以AD Admin用户身份运行的SSMS,然后可以从上面运行CREATE USER命令,但对于其他域帐户:
使用DEFAULT_SCHEMA = dbo从外部提供商创建用户[OtherAccount@YourDomain.com]
您可以决定运行哪个数据库(例如,master数据库和非系统数据库)。
域用户现在可以使用“ Active Directory-集成”登录。请注意,如果添加为MFA配置的域用户,则对于该用户,使用SSMS登录,他们应该选择SSMS身份验证选项“ Azure Active Directory-具有MFA的通用身份”,并且其用户名应带有“ @”不是反斜杠。