根据this和this Microsoft资源,我一直在尝试根据 Web API 为 Azure Active Directory身份验证工作。但是,我无法从我们的应用程序连接到Azure SQL。
我在Azure上设置了 Active Directory管理员。
然后我创建了一个小组" dbusers"在Azure上的Active Directory中。 Active Directory管理员也分配给该组。
我使用以下命令在数据库上设置它。
CREATE USER [dbusers] FROM EXTERNAL PROVIDER;
此处的所有内容都已成功完成。
我将应用程序中的web.config更新为以下内容:
Data Source=[my azure db]; Authentication=Active Directory Integrated; Initial Catalog=[my db name];
当我尝试从Web API连接到数据库时,我得到以下异常:
异常消息:此操作需要连接到 '主'数据库。无法与' master'建立连接。 数据库,因为原始数据库连接已打开并且 凭据已从连接字符串中删除。供应一个 未打开的连接。,异常堆栈跟踪:at System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(的DbConnection sqlConnection,Action`1 act)
我找到了workaround using following line:
Database.SetInitializer<MyDbContext>(null);
这让我有了另一个古老的知名人物:
异常消息:基础提供程序在Open。,Exception上失败 stacktrace:at System.Data.Entity.Core.EntityClient.EntityConnection.d__8.MoveNext()
我开始对如何配置它感到疯狂。
我不确定我在Azure上的配置是否有问题,或者我的连接字符串是否有问题,或者是否存在与此问题完全不同的内容。
修改
其中一项要求是:
要使用集成的Windows身份验证,您的域名为Active 目录必须与Azure Active Directory联合。你的客户 连接到数据库的应用程序(或服务)必须正在运行 在用户域凭据下的加入域的计算机上
我们正在使用Azure Web App&amp; Azure SQL。如何在不运行专用虚拟机的情况下找到此信息或甚至可以实现此信息?
答案 0 :(得分:1)
由于您在Active Directory Integrated下运行, 您是否尝试使用SSMS并使用Windows凭据连接到数据库?连接是否作为特定Windows用户成功 另一种方法是使用AAD用户/密码 也基于你的字符串 数据源= [my azure db];身份验证= Active Directory集成;初始目录= [我的数据库名称]; 数据源表示格式为myazureserver.database.windows.net的服务器名称 和数据库 mydbname 另外你在mydbname中创建了用户“dbusers” - 对吗?