Asp.net core IdentityServer多租户实现

Asp.net core IdentityServer多租户实现,asp.net-core,asp.net-identity,identityserver4,Asp.net Core,Asp.net Identity,Identityserver4,我知道已经有很多线程面临着与IdentityServer4类似的问题,但它们都只处理部分问题。问题在于如何使用Identity server 4实现多租户。 我的应用程序的设置如下所示: 不同的租户由不同的子域分隔,如: 租户1.application.com 租户2.application.com 注意:在后台,所有子域都由同一个应用程序处理。应用程序将使用访问令牌调用一些附加服务 所有子域的身份验证都由同一identityserver实例处理。我已经通过实现相同的方法完成了这项工作,如

我知道已经有很多线程面临着与IdentityServer4类似的问题,但它们都只处理部分问题。问题在于如何使用Identity server 4实现多租户。 我的应用程序的设置如下所示:

不同的租户由不同的子域分隔,如:

  • 租户1.application.com
  • 租户2.application.com
注意:在后台,所有子域都由同一个应用程序处理。应用程序将使用访问令牌调用一些附加服务

所有子域的身份验证都由同一identityserver实例处理。我已经通过实现相同的方法完成了这项工作,如

这里是我的场景的一些附加信息:

可以授权一个用户访问一个或多个租户。如果用户未经身份验证并尝试访问tenant1.application.com,则会将其重定向到登录页面,并返回原始请求的返回url。我已经通过acr_值将租户传递给identityserver。 如果用户在访问登录时没有先前请求的特定于租户的应用程序页面,则应将其重定向到租户选择,在该页面中,他选择了想要访问的租户(已经阅读了关于抽象方法的内容)

如果用户已经在tenant1.application.com上进行了身份验证,并且正在切换到tenant2.application.com,则如果用户已获得租户授权(SSO),则应立即登录,而无需另一个登录要求。 此访问控制存储在数据库中的一个简单用户表中

现在是实际问题

基地已经在工作,但我无法控制租户特定的授权。如果我是一个已通过身份验证且仅为tenant1.application.com授权的用户,并且我正在切换到tenant2.application.com,则identity server将在不拒绝其他登录或访问的情况下授权该用户。 我在哪里可以检查用户是否为特定租户授权

另一点是,我如何传递acr_值或我能够设置acccss令牌的tenantId的概要文件服务的租户选择的选定租户?我尝试使用一个临时声明,但由于HttpContext中缺少用户的登录原因,该声明不起作用(如下所示)

如有任何细节遗漏或含糊不清之处,请随时询问