首页 > 解决方案 > 身份服务器多租户,每个租户数据库的身份表

问题描述

我们目前正在构建多租户应用程序。我们希望有一个具有通用 configDB 和多个租户 DB 的应用程序。我们基于 http 上下文获取租户信息,因此我们编写了自己的连接字符串提供程序。

我们希望每个租户都有身份表。但是我们很难正确设置身份服务器。

我们以前在不需要多租户并且每个应用程序只有一个数据库时使用它

.AddConfigurationStore(options =>
                {
                    options.DefaultSchema = Schemas.Identity;
                    options.ConfigureDbContext = builder =>
                        builder.UseSqlServer(connectionStringProvider.DbConnectionString,
                            sqlOptions => sqlOptions.MigrationsAssembly(migrationsAssembly));
                })
                .AddOperationalStore(options =>
                {
                    options.DefaultSchema = Schemas.Identity;
                    options.ConfigureDbContext = builder =>
                        builder.UseSqlServer(connectionStringProvider.DbConnectionString,
                            sqlOptions => sqlOptions.MigrationsAssembly(migrationsAssembly));
                });

设置身份服务器。现在它只有在我们使用常见的 ConfigDB 时才有效。但我们希望将用户存储在租户数据库中。

所以现在打电话给:

app.UseIdentityServer()

调用 options.ConfigureDbContext 尝试设置 Db 上下文,但此时我们没有 http 上下文信息,因此我们无法提供正确的租户连接字符串。

所以问题基本上是:如何为每个租户设置多个配置和操作存储,以及如何使用身份服务器进行初始设置?

标签: identityserver4

解决方案


推荐阅读