Asp.net core 多个客户端具有自己的身份验证,一个标识服务器?

Asp.net core 多个客户端具有自己的身份验证,一个标识服务器?,asp.net-core,oauth,jwt,single-page-application,identityserver4,Asp.net Core,Oauth,Jwt,Single Page Application,Identityserver4,我有两个不同的水疗客户,A和B。 A和B的用户来自不同的来源,A的用户通过外部认证,B的用户来自AzureAD 它们都使用IdentityServer进行身份验证,并获得具有不同声明的JWT 两个客户端都应该能够使用相同的API服务。API服务具有要求特定声明的策略。不同的策略应用于不同的API 所以客户端A的用户可以访问一些API,客户端B的用户可以访问一些其他API(最终可能是一些常见的API) 但是,如果您先使用客户端A登录,然后使用客户端B登录,则他们在IdSrv上已经设置了一个auth

我有两个不同的水疗客户,A和B。 A和B的用户来自不同的来源,A的用户通过外部认证,B的用户来自AzureAD

它们都使用IdentityServer进行身份验证,并获得具有不同声明的JWT

两个客户端都应该能够使用相同的API服务。API服务具有要求特定声明的策略。不同的策略应用于不同的API

所以客户端A的用户可以访问一些API,客户端B的用户可以访问一些其他API(最终可能是一些常见的API)

但是,如果您先使用客户端A登录,然后使用客户端B登录,则他们在IdSrv上已经设置了一个auth cookie,因此授权端点只会向他们发送一个带有客户端A身份验证的JWT

我可以让不同的客户端对IdentityServer使用不同的身份验证cookie吗?

基本上,我希望一个IdSrv实例充当两个不同的实例。


我可以让两个域(a.idsrv.example.com和b.idsrv.example.com)指向同一个服务(idsrv.example.com)并获得cookie隔离,但还有其他方法吗

像Identity Server这样的东西的全部要点都是集中式标识,即所有客户机都使用它,并且它单独用于标识服务。您可以将Identity Server本身连接到自定义身份验证存储和AzureAD等外部提供程序。然后,您的客户机可以通过Identity Server对这些存储进行身份验证,但他们独立进行身份验证并以某种方式连接到Identity Server是没有意义的。所谓“意义”是在我们所有不同的应用程序中以完全相同的方式处理身份验证。他们使用的应用程序将为他们做出选择。我知道这不是直截了当的,现在我有两种不同的方式来处理auth,一种是通过IdSrv,另一种是通过AzureAD。它工作得很好,但我想看看是否有什么我错过了,这将使它更容易。这就是我要说的。您可以将AzureAD挂接到现有的Identity Server中。然后所有东西都通过Identity Server进行身份验证(如果该流程被激活,它将通过AzureAD)。Identity Server之类的东西的整个要点就是集中身份,即所有客户端都使用它,并且它单独用于身份服务。您可以将Identity Server本身连接到自定义身份验证存储和AzureAD等外部提供程序。然后,您的客户机可以通过Identity Server对这些存储进行身份验证,但他们独立进行身份验证并以某种方式连接到Identity Server是没有意义的。所谓“意义”是在我们所有不同的应用程序中以完全相同的方式处理身份验证。他们使用的应用程序将为他们做出选择。我知道这不是直截了当的,现在我有两种不同的方式来处理auth,一种是通过IdSrv,另一种是通过AzureAD。它工作得很好,但我想看看是否有什么我错过了,这将使它更容易。这就是我要说的。您可以将AzureAD挂接到现有的Identity Server中。然后所有东西都通过Identity Server进行身份验证(如果该流被激活,它将通过AzureAD)。