问题描述
MS 有关于 EF Core + Azure sql with Managed Identity 的文档。两年前的 This SO post 也对其进行了深入的讨论以及一些替代实现。
但我找不到任何适用于 Azure Postgresql 的东西,它也支持托管标识,可与 EF Core 一起使用。
MS 在此处提供有关 Azure Postgresql 托管标识的通用文档: https://docs.microsoft.com/en-us/azure/postgresql/howto-connect-with-managed-identity
这似乎表明在常规 Postgresql 连接字符串中用访问令牌替换密码是它的工作原理。
那么使用 EF Core 实现这一点的最佳方法是什么?
任何建议或相关文档的链接将不胜感激。
解决方法
在常规 PostgreSQL 连接字符串中用访问令牌替换密码就是它的工作原理。
在 .NET Core 中,通常配置如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddTransient(typeof(Foo));
services.AddSingleton(typeof(Bar));
services.AddDbContext<Db>((sp,options) =>
{
var config = sp.GetRequiredService<IConfiguration>();
var constr = config.GetConnectionString("ConnectionString");
var tp = sp.GetService<ITokenProvider>();
var token = tp.GetToken("https://ossrdbms-aad.database.windows.net");
constr = constr.Replace("[passsword]",token);
options.UseNpgsql(constr);
});
}