在.NET Core MVC应用程序中使用Azure B2C和Open Id Connect进行无提示SSO登录

时间:2018-06-13 17:05:25

标签: c# asp.net-core azure-ad-b2c

我们希望实现一些功能,用户应通过单点登录静默登录。用户转到应用程序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所述,但没有成功。

1 个答案:

答案 0 :(得分:0)

您可以尝试将iframe嵌入到将src设置为登录路线的匿名页面上。确保在激发挑战时将提示设置为“无”

您可以压缩从登录请求返回的任何错误(例如,interaction_required),并在其正常工作时实现无提示单点登录