【问题标题】:Keyword not supported: 'authentication' error for azure integrated connection不支持关键字:天蓝色集成连接的“身份验证”错误
【发布时间】:2019-03-06 12:58:14
【问题描述】:

不支持获取关键字:尝试通过 .NET core 2.1 项目中的“Active Directory Integrated”选项连接 azure DB 时出现“身份验证”错误。

注意:我使用 EF 核心连接数据源。

【问题讨论】:

  • 您可以添加您的代码 sn-p 以获得更好的清晰度...
  • 这是我的 local.settings 连接字符串 "ConnectionString": "Data Source=tcp:********.windows.net,1433;Initial Catalog=****** **;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Integrated",并且在使用 EF 核心创建上下文时,我在下面的代码行 WriteLogMessage($"数据库连接设置为 {Database.GetDbConnection().Database} 和数据源 {Database.GetDbConnection().Database}")
  • @suresh 您能否发布错误消息和完整的调用堆栈。没有足够的信息很难提供帮助

标签: azure azure-active-directory azure-functions asp.net-core-2.1 azure-authentication


【解决方案1】:

更新 - 2019 年 8 月 16 日
Microsoft.Data.SqlClient 1.0.19221.1-Preview 中现已为 .NET Core 添加了 Active Directory 密码身份验证


很遗憾,.NET Core 中尚未完全支持 authentication 关键字。这是一个讨论这个问题的issue

但是 .NET Core 2.2 已经添加了对该用例的一些支持,如 comment 中所述。基本思路是通过any means(ADAL、REST等)获取访问令牌,并设置SqlConnection.AccessToken给它。

至于在 EF Core 中使用它,在这个 github issue 中有一个很好的讨论,特别是 comment by mgolois 为线程中的 cbriaball mentions 提供了一个简单的实现。

这里是一样的供参考

请注意,此示例使用 Microsoft.Azure.Services.AppAuthentication

// DB Context Class
public class SampleDbContext : DbContext
{
  public SampleDbContext(DbContextOptions<TeamsDbContext> options) : base(options)
  {
    var conn = (System.Data.SqlClient.SqlConnection)this.Database.GetDbConnection();
    conn.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;
  }
}

// Startup.cs
services.AddDbContext<SampleDbContext>(options =>
{
  options.UseSqlServer(<Connection String>);
});

连接字符串应该是这样的
Server=tcp:&lt;server_name&gt;.database.windows.net,1433;Database=&lt;db_name&gt;;

【讨论】:

  • 支持“身份验证”的任何更新?
  • ...不要与“System.Data.SqlClient”混淆。
  • 谢谢先生!在 DBContext 中设置 'conn.AccessToken' 正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
相关资源
最近更新 更多