使用集成身份验证将在Azure VM(已加入AAD DS)上运行的IIS应用连接到Azure SQL

时间:2019-05-16 18:53:19

标签: azure azure-active-directory azure-sql-database iis-6 azure-ad-domain-services

我已经尝试解决这个问题已有一段时间了,不幸的是,我碰壁了。

我们已为Azure AD配置了Azure Domain Services。 VM已加入该域。我们还尝试从虚拟机上运行的IIS应用程序连接到Azure SQL数据库。

我已遵循此(https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication-configure)上的官方MS文档,该文档有助于验证Azure AD身份是否可以连接到Azure SQL DB(我可以使用Azure AD Admin用户通过SSMS连接到Azure SQL。然后可以使用该ID生成其他包含的用户,我已经完成了。)

当我尝试使用连接字符串中的Active Directory集成对数据库进行身份验证时,存在问题。我遇到两个错误,我将在下面列出。

现在,我无法超越最后一个(声明需要联邦),并且实际上,已经阅读了很多内容(尽管直接来自MS,但没有),表明这根本不受支持,我需要创建一个联合身份验证以使此工作正常进行,考虑到这是仅限Azure的环境,这似乎完全不合理。

下面也包括了连接字符串。

我尝试了该连接字符串的各种迭代,但均无济于事。如果有人可以对此提供一些见识,我将不胜感激!

最后一件事,IIS应用程序池以既是Azure AD的AAD域组成员又是包含在数据库中创建的用户身份的用户身份运行。

谢谢!

我尝试了连接字符串的各种迭代,包括删除了连接字符串上的许多附加参数和引号。

我在应用程序池中尝试了不同的用户

最终目标是删除所有纯文本PW,使其不出现在与Azure SQL的连接字符串中。

第一个错误:

Unable to load adalsql.dll (Authentication=ActiveDirectoryPassword). Error code: 0x2.

第二个错误:

[AdalException: Integrated Windows authentication supported only in federation flow.]
   ADALNativeWrapper.ADALGetAccessToken(String username, IntPtr password, String stsURL, String servicePrincipalName, ValueType correlationId, String clientId, Boolean* fWindowsIntegrated, Int64& fileTime) +829
   System.Data.SqlClient.<>c__DisplayClass2_0.<AcquireTokenAsync>b__0() +132
   System.Threading.Tasks.Task`1.InnerInvoke() +121
   System.Threading.Tasks.Task.Execute() +47

连接字符串:

name="LocalSqlServer" connectionString="Server=tcp:XXXXX;Initial Catalog=XXXXX;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication='Active Directory Integrated';" />

0 个答案:

没有答案