gpt4 book ai didi

entity-framework-core - EF Core 3.1 使用 Authentication=Active Directory 集成

转载 作者:行者123 更新时间:2023-12-03 16:35:06 24 4
gpt4 key购买 nike

[更新1]

我可以使用以下连接字符串使其工作

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

并实现 this article 中提到的拦截器.

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

无论如何,我仍然希望能够更改连接字符串并在 AAD 身份验证和 sql 身份验证之间切换,而无需在应用程序中添加其他逻辑。

[/更新1]

我正在使用 EF 核心 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 )

最佳答案

欢迎来到网络框架/运行时 hell 。

当前 ActiveDirectoryIntegratedActiveDirectoryInteractive NetCore 应用程序不支持身份验证选项。

原因是从 v3.0 开始,EF Core uses Microsoft.Data.SqlClient instead of System.Data.SqlClient .而此时最新版本的Microsoft.Data.SqlClient (也是预览版)仅对 NET Framework 支持这两个选项。

您可以在他们的问题跟踪器 Why does SqlClient for .Net Core not allow an authentication method 'Active Directory Interactive'? #374 中看到类似的问题,以及 SqlAuthenticationMethod 的文档枚举 - ActiveDirectoryIntegrated (重点是我的):

The authentication method uses Active Directory Integrated. Use Active Directory Integrated to connect to a SQL Database using integrated Windows authentication. Available for .NET Framework applications only.



话虽如此,请使用 Authentication解决方法,或等待此选项最终为 Net Core 实现。

关于entity-framework-core - EF Core 3.1 使用 Authentication=Active Directory 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62166339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com