Identityserver4在一个浏览器中有两个不同的客户端

时间:2019-02-13 08:21:26

标签: cookies identityserver4

我有两个托管在不同URL上的Web应用程序:

为了进行身份验证,他们使用公共身份服务器,但将angular-oauth2-oidc与身份服务器的不同clientId一起使用:-client1,clinet2。

如果我登录Web-Application1,则尝试输入Web-Application2-身份服务器自动在Web-Application2中以与Application1中相同的用户身份进行授权。这仅适用于单个浏览器。在不同的浏览器中,我可以使用一个用户登录web-application1并使用另一个用户登录web-application2。如何在一个浏览器中进行这种行为?

据我了解-在一个浏览器中,Web应用程序链接到相同的cookie。在身份服务器上使用名称创建包含cookie的cookie的可能解决方案-例如:idsrv.session.client1,.AspNetCore.Identity.Application.client1等。如何在身份服务器上执行此操作,或者还有其他解决方案?{{3} }

2 个答案:

答案 0 :(得分:1)

您可以覆盖Identity Server 4 cookie身份验证方案。您可以使用将Cookie设置为在发布后立即失效的方案来覆盖它。这样可以有效地从中央登录部分中删除单点登录行为。

services.AddIdentityServer()...

//Call it after AddIdentityServer
services.AddAuthentication("MyCookie")
    .AddCookie("MyCookie", options =>
    {
        options.ExpireTimeSpan = 1;
    });

有关Identity Server docs上登录行为的详细信息。

答案 1 :(得分:0)

要在每次访问授权端点时强制登录,可以使用“提示”查询字符串,其值设置为“登录”。这样,您就不必弄乱Cookie身份验证,也不必增加代码库的复杂性。

更多信息可以在我的其他答案中找到:https://stackoverflow.com/a/54672252/7407434