首页 > 解决方案 > 当用户尝试链接社交帐户并单击取消时,有没有办法让用户保持登录到 Azure ADB2C?

问题描述

当有人将他们的社交媒体账户链接到他们的 ADB2C 注册时,我们会遇到一个问题,即我们无法区分 ADB2C 登录失败和他们取消链接社交媒体账户的请求。

例如,当有人尝试链接他们的 Facebook 帐户时,类似这样的 URL 位于“Not now”链接后面:

https://test.b2clogin.com/test.onmicrosoft.com/oauth2/authresp?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied&state=StateProperties%3DeyJTSUQiOiJ4LW1zLWNwaW0tcmM6NzMyYWQzZWXtZGI4OS00YjZiLTlmYzgtYTY5NzYxZDdjMDY0IiwiVElEIjoiNTcxZWE5M2UtODQ4NS00MTMzLTlhZmItOTQwMWIyMDAwOGE5IiwiVE9JRCI6Ijc4ZDUxNTY3LTkzYTAtNDEyMy1iMHI1LTVmN2E1NzNjMzRkYSJ9#_=_

我们捕获了AuthenticationFailedNotification,但在其中,我们无法找到一种方法来区分

我们检查:

if (notification.ProtocolMessage.Error == "access_denied" && notification.ProtocolMessage.ErrorDescription.StartsWith("[A SPECIFIC ERROR ID]", StringComparison.InvariantCultureIgnoreCase))

然后,我们将根据错误描述、身份验证策略和身份验证类型(社交媒体或 ADB2C)为每个场景配置一个特定的用户流。

我们的要求是用户在尝试链接社交帐户时保持登录到 ADB2C,但实际上并没有通过它。

Microsoft 自己的示例https://woodgrovedemo.com/以相同的方式工作,即用户在取消链接其社交媒体帐户时注销(例如,在链接其 Facebook 时单击“不现在”帐户)。

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

解决方案


你不能,因为它是一样的!

当用户使用“Not now”按钮取消 Facebook 流程时,用户没有登录。您需要用户接受链接到您的应用程序,以便 Facebook 发送批准和声明以发送到您的应用程序. 如果没有此声明,则用户不会登录。

所以你不能要求用户保持登录,因为他还没有登录。认为 Microsoft 的示例注销了用户是错误的,因为他从未登录过。


推荐阅读