EF Core 3.1使用Authentication=Active Directory集成。

问题描述 投票:0回答:1

[更新1]

我可以用下面的连接字符串使它工作。

Server=tcp:mydatabaseserver.database.windows.net,1433;Initial Catalog=mydbname

中提到的拦截器,并实施 本文.

这证明Azure的配置是正确的,问题出在应用程序的某个地方(也许是缺少一个包?

无论如何,我还是希望能够更改连接字符串,并在AAD身份验证和sql身份验证之间进行切换,而无需在应用程序中添加额外的逻辑。

[更新1]

我用的是 EF Core 3.1.4 在一个Azure WebApp上,我想使用分配给应用程序的Azure AD身份进行身份验证,但我遇到了以下异常。

ArgumentException: Invalid value for key 'authentication'.
Microsoft.Data.Common.DbConnectionStringBuilderUtil.ConvertToAuthenticationType(string keyword, object value)

这是连接字符串。

{
    "ConnectionStrings": {
        "Admin": "Server=tcp:mydatabaseserver.database.windows.net,1433;Initial Catalog=mydbname;Authentication=Active Directory Integrated"
    }
}

我使用以下代码初始化了上下文。

var connectionString = this.Configuration.GetConnectionString("Admin");
services.AddDbContext<NetCoreDataContext>(builder => builder.UseSqlServer(connectionString));

这个... Microsoft.Azure.Services.AppAuthentication 包也被导入(版本 1.5.0)

entity-framework-core azure-sql-database azure-web-sites
1个回答
0
投票

欢迎来到Net frameworksruntimes地狱。

目前 ActiveDirectoryIntegratedActiveDirectoryInteractive认证选项不支持 NetCore 应用程序。

原因是,从v3.0开始,EF Core 使用Microsoft.Data.SqlClient来代替System.Data.SqlClient。. 而目前最新的版本是 Microsoft.Data.SqlClient (也是预览版)只对NET Framework支持这两个选项。

你可以在他们的问题跟踪器中看到类似的问题。为什么SqlClient for .Net Core不允许使用 "Active Directory Interactive "认证方法?#374的文件,以及《公约》的文件。SqlAuthenticationMethod 枚举- ActiveDirectoryIntegrated (重点是我的)。

认证方法是使用活动目录集成。使用 Active Directory Integrated 连接到 SQL 数据库,使用集成的 Windows 身份验证。仅适用于.NET框架应用程序。

说到这里,使用 Authentication 的工作方法,或者等待这个选项最终在Net Core中实现。


0
投票

更新

如果你使用 azure msi,请阅读此文档。

https:/docs.microsoft.comen-usazureapp-serviceapp-service-web-tutorial-connect-msi。

PRIVIOUS

您的问题可能是没有在门户中配置。您可以按照 正文 完成它,然后再试试。

首先,你需要创建SQL管理实例,这可能会花费你很长的时间。然后,你需要配置 Active Directory admin 和你 db. 当你完成它,你会发现 ADO.NET(Active Directory password authentication) 在你 SQL database ->Connection strings 在门户网站中。你可以复制粘贴到你的代码中去解决这个问题。

我自己试了一下,对我来说是可行的。更多细节,你可以看 此职位.

© www.soinside.com 2019 - 2024. All rights reserved.