IdentityServer3 Multi Tenant IdSvr (single instance) with Multi Tenant Api (single instance) - 需要多个 authserver 地址

IdentityServer3 Multi Tenant IdSvr (single instance) with Multi Tenant Api (single instance) - needed multiple authserver addresses

我们有 IdSvr 单实例和 Web Api 单实例,两者都支持多租户。我们的 Web 应用程序部署到多个域,每个域都有自己的样式。企业不希望他们被重定向到 IdSvr,例如 http://multiauth.identityserver.com. They want to go from a website domain to the IdSvr using http://auth.websitedomain1.com and another would use http://auth.websitedomain2.com,等等

问题出在 Web Api 和设置 Bearer 身份验证上。

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = Constants.BaseAddress,
            RequiredScopes = new[] { "cspwebapi" },

            // client credentials for the introspection endpoint
            ClientId = "cspclient",
            ClientSecret = "8BE96BA5-79F1-4FA4-8E41-6BCE7EA7090F",
        });

我只能指定http://multiauth.identityserver.com as the Authority and not multiple such as http://auth.websitedomain1.com and http://auth.websitedomain2.com。客户端收到 401。

到目前为止,我有带有绑定 auth.websitedomain1.com、auth.websitedomain2.com、auth.websitedomain3.com 的单个实例 IdSvr。现在在 Web Api(资源服务器)上,我遍历域名数组并为 Authority 属性 的每个域创建一个新的 app.Map(....)。资源服务器启动没有问题,这意味着它可以在每个域名上看到 IdSvr。 app.Map(....) 段对所有这些都必须相同......我现在发现对所有这些执行 app.Map('') 对第二个行不通或第三个域名。我在这里做某事还是这是错误的方法?我还能如何配置它以满足要求?

在您的管道中使用 UseIdentityServerBearerTokenAuthentication 的多个实例,每个 IdentityServer 安装一个,每个都配置不同的身份验证方案 (AuthenticationType)。

然后在您的授权逻辑中,您可以检查令牌使用的身份验证方案并相应地授权对数据的访问。