身份服务器4登录后重定向到不同的客户端 [英] IdentityServer4 Redirect to different client after login
本文介绍了身份服务器4登录后重定向到不同的客户端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
推荐答案
根据OIdC规范,身份提供者必须在交互登录后将用户重定向到授权请求提供的有效URL。然而,我认为至少有两个选项可以在不对身份端进行任何更改的情况下解决要求。
两者都需要在主站点上执行一些工作,http://example.com 您可以调整OnTicketReceived
处理,使其根据某个声明重定向到本地站点,而不是用户最初请求的路径。它可能如下所示:
services.AddAuthentication().AddOpenIdConnect(options =>
{
options.Events = new OpenIdConnectEvents
{
OnTicketReceived = ctx =>
{
var identity = context.Principal.Identity as ClaimsIdentity;
var locale = identity?.Claims.
FirstOrDefault(x => x.Type == JwtClaimTypes.Locale)?.Value??"en-GB";
switch (locale)
{
case "ru-RU":
ctx.ReturnUri = "http://ru.example.com";
//or just example.ru, doesn't matter
break;
default:
ctx.ReturnUri = "http://uk.example.com";
break;
}
return Task.CompletedTask;
}
}
}
这里我们面临两种选择:
- 将每个本地站点注册为单独的OIdC客户端,以便它们充当普通的SSO解决方案,其中卫星站点甚至可以单独托管。
- 或在所有本地站点之间共享身份验证Cookie,如documentation所述。在这种情况下,您必须全部控制它们。
这篇关于身份服务器4登录后重定向到不同的客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文