【问题标题】:Configure IdentityServer4 ConfigurationStore and OperationalStore in a Multi-Tenant Environment在多租户环境中配置 IdentityServer4 ConfigurationStore 和 OperationalStore
【发布时间】:2018-11-16 12:38:22
【问题描述】:

我们有一个使用 IdentityServer4 进行身份验证的 Web API。我正在尝试通过保留现有数据库来更改身份验证服务以支持多租户。所以每个租户都有单独的数据库。

我目前正在努力配置 ConfigurationStore 和 OperationalStore。

选项 01:由于我们为每个租户都有单独的数据库,因此可以将 ConfigurationDb 和 PersistedGrantDb 相关表添加到这些数据库中。

选项 02:使用 common DB 保留 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
    });

【问题讨论】:

    标签: identityserver4 multi-tenant


    【解决方案1】:

    我们找不到在单独的数据库中配置 ConfigurationStore 和 OperationalStore 的方法。从那以后,我们已经在我们的公共数据库中配置了它们。所以最终的数据库结构如下。

    • TenantDB:所有租户的公共数据库。持有租户配置 例如租户名称、主机/域详细信息、连接字符串。和 ConfigurationStore 和 OperationalStore 配置。
    • Tenant01DB : 租户 01 数据
    • Tenant02DB:租户 02 数据
    • Tenant03DB : 租户 03 数据

    【讨论】:

      猜你喜欢
      • 2019-08-08
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      相关资源
      最近更新 更多