我们有一个使用IdentityServer4进行身份验证的Web API。我正在尝试通过保留现有数据库来更改身份验证服务以支持多租户。因此,每个租户都有单独的数据库。
我目前正在努力配置ConfigurationStore和OperationalStore。
选项01:由于每个租户都有单独的数据库,因此可以将ConfigurationDb和PersistedGrantDb相关表添加到这些DB中。
选项02:使用公共数据库保留与ConfigurationDb和PersistedGrantDb相关的表。
什么是最好的方法?
services.AddIdentityServer()
// this adds the config data from DB (clients, resources, CORS)
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
})
.AddOperationalStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
// this enables automatic token cleanup. this is optional.
options.EnableTokenCleanup = true;
options.TokenCleanupInterval = 30; // interval in seconds
});
答案 0 :(得分:0)
我们找不到在单独的数据库中配置ConfigurationStore和OperationalStore的方法。从那以后,我们已经在公共数据库中配置了它们。因此,最终的数据库结构如下所示。