我们希望实现一些功能,用户应通过单点登录静默登录。用户转到应用程序A并登录。现在他转到应用程序B,它使用与应用程序A相同的租户。此时要登录应用程序B,用户必须单击“登录”按钮启动处理整个OpenID Connect协议交换的Challenge
。
[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但没有成功。
您可以尝试在将src设置为signin路由的匿名页面上嵌入iframe。确保你的挑战发生时你设置了prompt = none
您可以压缩来自登录请求的任何错误,例如interaction_required,并在其工作时实现静默单点登录