我有两个托管在不同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} }
答案 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