不支持获取关键字:尝试通过.NET Core 2.1项目中的“ Active Directory Integrated”选项连接Azure数据库时出现“身份验证”错误。
注意:我正在使用EF内核连接数据源。
答案 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>;