B2C如何支持匿名用户?

How to support anonymous users in B2C?

我们需要有关设置的架构建议。

我们正在开发一款移动应用程序,它将:

我们尝试实现的:

这似乎可以使用 自定义策略 并使用包含 deviceId 并在入站 id_token_hint 中发送的 id_token_hint 来实现=19=] 从我们的API到B2C。在政策中,我们将 向用户旅程添加一个额外的编排步骤,以提取 deviceId 传递它 以供使用在验证编排步骤

但是,这似乎太复杂了,到目前为止我们没有成功完成这项工作。因此,我们想请教一下征求您对此事的建议。

是否有涵盖这种情况的开箱即用的解决方案?

支持'temporary application users'概念的一些功能。

如果不是,完成这项工作所需的正确步骤大纲是什么?

您可以使用两个流程构建它。我假设 deviceId 是根据浏览器和其他信号在客户端生成的。

访客用户流量
比方说,此流程将允许用户“以访客身份结账”。当用户单击此按钮时,启动 来宾用户 B2C 策略。

  1. 您的应用应使用客户端生成设备 ID javascript
  2. 您的应用应将此数据作为查询参数发送到 Azure AD B2C 来宾用户 B2C 策略。
  3. 来宾用户 B2C 策略应该解析 deviceId 查询参数
  4. 访客用户 B2C 策略应该使用 claimsTransform 编写一个包含随机生成的电子邮件的帐户,并将 deviceId 写入 signInNames.deviceId 属性。这允许通过 deviceId
  5. 查找帐户
  6. 来宾用户 B2C 策略随后应为此用户帐户颁发令牌,并且还应将 deviceId 作为声明嵌入令牌中。
  7. 您的应用可能会使用 deviceId 设置持久性 cookie。这允许即使用户关闭浏览器或注销设备也能被识别。可选。

访客转化流量
稍后,用户虽然仍处于登录状态,但希望完成其帐户的设置。创建一个新的 B2C 策略,这次我们会将 deviceId 传递到查询参数中,如果应用程序有一个可用的(在令牌或应用程序 cookie 中)。

  1. 您的应用程序应检查令牌是否包含来宾用户和 deviceId。如果不是,请检查 cookie 是否与 deviceId 一起出现。
  2. 您的应用应向 AAD B2C 发出身份验证请求,并在查询参数中包含 deviceId
  3. B2C 策略应解析 deviceId 查询参数
  4. B2C 政策应通过 signInNames.deviceId 在目录中进行查找,并从查询参数
  5. 解析设备 ID
  6. 如果找到用户,则针对此objectId进行进一步操作
  7. 如果找不到用户,请执行正常的注册步骤

如果您愿意,以上所有内容都可以转换为使用 id_token_hint,这意味着没有人可以弄乱发送到 AAD B2C 的 deviceId,因为它将成为一个有符号值。

您还需要考虑 deviceId 冲突。如果这是可能的,那么这将成为一个安全问题,因为两个不同的人可能会链接到同一个帐户。