azure-active-directory - 当用户尝试链接社交帐户并单击取消时,有没有办法让用户保持登录到 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 时单击“不现在”帐户)。
解决方案
你不能,因为它是一样的!
当用户使用“Not now”按钮取消 Facebook 流程时,用户没有登录。您需要用户接受链接到您的应用程序,以便 Facebook 发送批准和声明以发送到您的应用程序. 如果没有此声明,则用户不会登录。
所以你不能要求用户保持登录,因为他还没有登录。认为 Microsoft 的示例注销了用户是错误的,因为他从未登录过。
推荐阅读
- python - 如何在 Windows 10 上安装飞溅?我需要它来scrapy
- azure - 在 Azure WebJob 中引用 NuGet 包 MailKit
- python - 无法在 Python 中使用散点图正确绘制回归线
- delphi - Delphi TValue.Make 从 RttiContext.FindType 与原始类型(整数,字符串,布尔)
- angular - 从订阅中可观察到
- angular - 点击角度隐藏和显示
- xcode8 - IB Designables 无法渲染和更新自动布局状态:dlopen(Cosmos.framework,1):找不到合适的图像
- extjs - ExtJS:类中的范围问题
- git - 将未签名的提交与 master 合并
- ibm-midrange - AS/400 上的 GeneXus 网格负载问题