我们拥有带有Web Api单一实例的IdSvr单一实例,它们都支持多租户。我们的网络应用程序部署到多个域,每个域都有自己的样式。企业不希望将它们重定向到IdSvr,例如http://multiauth.identityserver.com。他们希望使用http://auth.websitedomain1.com从网站域转到IdSvr,而其他人则使用http://auth.websitedomain2.com等
问题在于Web Api并设置了承载身份验证。
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作为权限,而不能指定http://auth.websitedomain1.com和http://auth.websitedomain2.com等多个权限。客户获得401。
到目前为止,我有单个实例IdSvr with bindings auth.websitedomain1.com,auth.websitedomain2.com,auth.websitedomain3.com。现在在Web Api(资源服务器)上,我遍历域名数组,并为Authority属性的每个域创建一个新的app.Map(....)。资源服务器旋转没有问题意味着它可以在每个域名上看到IdSvr。 app.Map(....)段需要对所有这些段都相同...我现在已经发现为所有这些段做app.Map('')将无效第二个或第三个域名。我在这里做点什么还是这是错误的做法?我还能如何根据要求配置它?
答案 0 :(得分:2)
在管道中使用多个UseIdentityServerBearerTokenAuthentication
实例,每个IdentityServer安装一个实例,每个实例配置不同的身份验证方案(AuthenticationType
)。
然后在您的授权逻辑中,您可以检查令牌验证的身份验证方案,并相应地授权访问数据。