当用户尝试链接社交帐户并单击"取消"时,有没有办法让他们登录Azure ADB2C



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

例如,当有人试图链接他们的Facebook帐户时,"现在不行"链接后面会有这样的URL:

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。

微软自己的例子,https://woodgrovedemo.com/以同样的方式工作,即用户在取消社交媒体帐户的链接时被注销(例如,在链接其Facebook帐户时单击"现在不"(。

你不能,因为这是一回事!

当用户用"现在不"按钮取消Facebook进程时,用户没有登录。你需要用户接受链接到你的应用程序,Facebook才能向你的应用发送认可和声明。如果没有此声明,用户将无法登录。

因此,您不能要求用户保持登录,因为他还没有登录。认为微软的例子注销了用户是错误的,因为他从未登录过

相关内容

最新更新