大佬教程收集整理的这篇文章主要介绍了EF Core:使用 AD 身份验证连接到 Azure SQL 的最佳实践方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用 EF Core 和 Azure AD 集成身份验证连接到数据库的主要方式似乎有三种。
方法一:经典方法
在 DbCo@R_696_10443@t 中,输入:
protected overrIDe voID OnConfiguring(DbCo@R_696_10443@toptionsBuilder optionsBuilder)
{
var conn = new sqlConnection(ConnString);
conn.Accesstoken = new AzureserviCETokenProvIDer().GetAccesstokenAsync("https://database.windows.net/").Result;
optionsBuilder.UsesqlServer(conn);
}
@H_403_10@
这在本地开发人员的机器上和 Azure 中都有效,但是由于没有 OnConfiguring 的异步版本,所以使用
方法二:使用连接拦截器 这也适用于本地和 Azure,但如果您执行任何非异步 EF 操作,仍然存在
方法 3:在连接字符串中指定身份验证类型 如果您使用的是 Microsoft.Data.sqlClIEnt v2.1.0 或更高版本,则可以使用两种新的身份验证类型:
这会为您处理所有事情,并且没有异步同步问题。但是,需要知道代码是否在Azure中运行才能选择身份验证类型;对于本地开发,
问题是... 有没有办法让这个工作既不存在同步异步问题,也不会有每次运行应用程序时出现登录弹出窗口的问题? @ErikEJ 在评论中回答了这个问题。 解决方案是等待引入 听起来这将提供一个巧妙的解决方案。.Result@H_403_10@ 的这种狡猾的 async-over-sync 用法。不建议使用
.Result@H_403_10@ 调用 async-over-sync。
public class AadAuthenticationDbConnectionInterceptor : DbConnectionInterceptor
{
public overrIDe async Task<InterceptionResult> ConnectionopeningAsync(DbConnection connection,ConnectionEventData eventData,InterceptionResult result,CancellationToken cancellationToken)
{
var sqlConnection = (sqlConnection)connection;
sqlConnection.Accesstoken = await new AzureserviCETokenProvIDer().GetAccesstokenAsync("https://database.windows.net/");
return await base.ConnectionopeningAsync(connection,eventData,result,cancellationToken);
}
public overrIDE interceptionResult Connectionopening(DbConnection connection,InterceptionResult result)
{
var sqlConnection = (sqlConnection)connection;
sqlConnection.Accesstoken = new AzureserviCETokenProvIDer().GetAccesstokenAsync("https://database.windows.net/").GetAwaiter().GetResult();
return base.Connectionopening(connection,result);
}
}
@H_403_10@
.Result@H_403_10@ 的狡猾异步同步使用,因为 EF 调用非异步 Connectionopening 方法。
Active Directory Managed IDentity@H_403_10@ 和
Active Directory Interactive@H_403_10@。
protected overrIDe voID OnConfiguring(DbCo@R_696_10443@toptionsBuilder optionsBuilder)
{
var connString = "Server=tcp:xxxxxx.database.windows.net,1433;Database=yyyyy;Authentication=Active Directory Managed IDentity";
optionsBuilder.UsesqlServer(conn);
}
@H_403_10@
Active Directory Interactive@H_403_10@ 模式非常烦人,因为每次启动应用程序时它都会弹出登录提示。
解决方法
Active Directory Default
身份验证类型的 @H_367_5@microsoft.Data.SqlClient 的 v3.0。有了这个,我们将能够做到: protected override void OnConfiguring(DbCo@R_696_10443@tOptionsBuilder optionsBuilder)
{
var connString = "Server=tcp:xxxxxx.database.windows.net,1433;Database=yyyyy;Authentication=Active Directory Default";
optionsBuilder.UseSqlServer(conn);
}
以上是大佬教程为你收集整理的EF Core:使用 AD 身份验证连接到 Azure SQL 的最佳实践方法全部内容,希望文章能够帮你解决EF Core:使用 AD 身份验证连接到 Azure SQL 的最佳实践方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。