我们希望实现一些功能,用户应通过单点登录静默登录。用户转到应用程序A并登录。现在他转到应用程序B,该应用程序使用与应用程序A相同的租户。此时要登录到应用程序B,用户必须单击“登录”按钮才能启动处理整个应用程序的Challenge
OpenID Connect协议交换。
[HttpGet]
public IActionResult SignIn()
{
var redirectUrl = Url.Action(nameof(HomeContrsioller.Index), "Home");
return Challenge(new AuthenticationProperties { RedirectUri = redirectUrl },
OpenIdConnectDefaults.AuthenticationScheme);
}
这里的想法是利用Authorize
属性。
[Authorize]
public IActionResult Index()
{
return View();
}
此属性的问题在于,默认情况下,当用户未登录时,属性会重定向到登录UI。此处所需的行为是尝试静默验证用户,当无法进行身份验证时,忽略它
我尝试禁用自动挑战,如here所述,但没有成功。
答案 0 :(得分:0)
您可以尝试将iframe嵌入到将src设置为登录路线的匿名页面上。确保在激发挑战时将提示设置为“无”
您可以压缩从登录请求返回的任何错误(例如,interaction_required),并在其正常工作时实现无提示单点登录