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

时间:2019-03-06 12:58:15

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

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

注意:我正在使用EF内核连接数据源。

1 个答案:

答案 0 :(得分:1)

不幸的是,.NET Core尚未完全支持authentication关键字。这是issue讨论的问题。

但是,如本comment中所述,.NET Core 2.2添加了对此用例的一些支持。基本思想是通过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>;