我已经尝试解决这个问题已有一段时间了,不幸的是,我碰壁了。
我们已为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';" />