带有Azure MSI的Identity Server EF核心数据库配置

时间:2018-09-10 21:46:30

标签: asp.net azure-sql-database entity-framework-core identityserver4

我正在尝试将托管为Azure Web App的Identity Server实例配置为使用托管服务身份(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 个答案:

答案 0 :(得分:0)

我有一个类似的问题,

尝试接受DbConnection的UseSqlServer的重载,并向其传递带有令牌集的SqlConnection。

对我有用