【问题标题】:B2C Tenant Not Logging OutB2C 租户未注销
【发布时间】:2019-01-01 04:06:41
【问题描述】:

我们有一个用于身份验证的 B2C 自定义策略,但我无法获得一致的完整注销。我能够完全注销单点登录的唯一方法是使用公共端点:

https://login.microsoftonline.com/common/oauth2/logout?post_logout_redirect_uri={our homepage}

然后当我登录时我看到了这个

然后我点击登录并看到这个

但即使这样也并不总是有效。有时它不会重定向,而只是停留在“您已注销”屏幕上。

使用我们的元数据端点中给出的注销端点不能按预期工作。我看到了登录屏幕(第一张图片),但我无法选择使用哪个帐户登录,我只需单击按钮即可登录。我认为这意味着单点登录无法退出。

https://login.microsoftonline.com/te/{tennant}/{b2c-policy}/oauth2/v2.0/logout?post_logout_redirect_uri={our homepage}

我怎样才能让第一个每次都工作或第二个完全注销?

编辑:对不起,我应该提到我正在使用 node.js/javascript,但任何 url 类型的解决方案也可以。此外,我们正在使用 B2C,因此该应用程序已在该租户上注册。此页面上没有抽签 url 选项。

【问题讨论】:

  • “完全注销单点登录”是什么意思?您是否有一个要注销的应用程序,或者您是否有多个使用单点登录的 Web 应用程序,现在您也需要单点注销?

标签: azure-active-directory azure-ad-b2c


【解决方案1】:

如果我理解正确,您是在尝试配置单点注销吗?这可以完成,但需要与登录配置分开配置。

在 Accounts Controller 中,您需要添加一个 SingleSignOut 操作。

public ActionResult SingleSignOut(string redirectUri)
        {
            if (redirectUri == null)
                ViewBag.RedirectUri = "https://localhost:44308/";
            else
                ViewBag.RedirectUri = redirectUri;
            HttpContext.GetOwinContext().Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType);
            return View();
        }

请参阅 this tutorial 和随附的存储库。

This reference 也很有帮助。

【讨论】:

  • 感谢您的回复。抱歉,我忘了添加我正在使用 node.js 和 azure-passport-ad 模块,但任何基于 url 的解决方案都可以使用。您的链接提到在应用程序门户中添加注销 url,但在我的应用程序中没有此选项。我们使用的是 B2C,所以应用注册页面不同。
【解决方案2】:

为了从 B2C 中注销用户,您需要将用户重定向到 B2C 注销端点,而不是公共端点。这应该看起来像:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1_sign_in&post_logout_redirect_uri={your homepage}

确保您将浏览器重定向到该端点,并且不要尝试通过反向通道执行 GET,否则它将不会执行任何操作,因为单点登录机制基于浏览器 cookie。

参考:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oidc#send-a-sign-out-request

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多