不支持关键字:azure集成连接的“身份验证”错误

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

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

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

azure azure-active-directory azure-functions asp.net-core-2.1 azure-authentication
1个回答
3
投票

更新 - 16/08/2019 现在已在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:<server_name>.database.windows.net,1433;Database=<db_name>;

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