使用 Azure MSI 的身份服务器 EF Core DB 配置
Posted
技术标签:
【中文标题】使用 Azure MSI 的身份服务器 EF Core DB 配置【英文标题】:Identity Server EF Core DB Configuration with Azure MSI 【发布时间】:2019-02-15 08:50:36 【问题描述】:我正在尝试配置作为 Azure Web 应用托管的身份服务器实例,以使用托管服务身份 (https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-connect-msi) 连接到我的数据库。
在编写上面链接的本文时,EF Core 不支持 SQL Server 连接的访问令牌。看来这已随着当前处于预览状态的 2.2 版而改变。
目前我的配置存储设置如下所示:
.AddConfigurationStore(options =>
options.ConfigureDbContext = b =>
b.UseSqlServer(
connectionString,
sql => sql.MigrationsAssembly(migrationsAssembly);
);
;
)
使用 EF Core 2.2 预览包,我将如何像上面链接的指南一样添加访问令牌值?
public MyDatabaseContext(SqlConnection conn) : base(conn, true)
conn.ConnectionString = WebConfigurationManager.ConnectionStrings["MyDbConnection"].ConnectionString;
// DataSource != LocalDB means app is running in Azure with the SQLDB connection string you configured
if(conn.DataSource != "(localdb)\\MSSQLLocalDB")
conn.AccessToken = (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;
Database.SetInitializer<MyDatabaseContext>(null);
乍一看,我似乎必须等待 IdentityServer4.EntityFramework 包来支持这个?
【问题讨论】:
【参考方案1】:我有类似的问题,
尝试使用接受 DbConnection 的 UseSqlServer 的重载,并将带有令牌集的 SqlConnection 传递给它。
它对我有用
【讨论】:
以上是关于使用 Azure MSI 的身份服务器 EF Core DB 配置的主要内容,如果未能解决你的问题,请参考以下文章
使用 MSI 从 Azure 函数将文件写入 Azure Data Lake 时出错
Python Azure 函数 - 使用 Key Vault 进行 MSI 身份验证
如何使用 MSI 而不是 Service Principal 来调用部署在 Azure 上的 Authenticate web api