AAD B2C多种注册流程

AAD B2C multiple types of registration flows

我正在创建应用程序,我在其中使用带有自定义策略的 AD B2C 来实现用户管理功能。然而,在我的应用程序中,我需要支持多种类型的帐户,而对于每种帐户类型,应该有不同的注册过程(要收集不同的用户数据)。我的问题是,实现这个的最佳方法是什么?

根据您可能拥有的其他要求,您可以创建许多单独的注册策略或一个您可以向其传递参数(帐户类型)的策略,哪个值将决定执行具有特定自我断言配置文件的步骤。

如果您的应用程序希望在注册过程中检索访问令牌并且您的后端验证 tfp 名称,那么您可能希望有一个单一的策略。如果不是这种情况,并且用户需要在注册后登录,那么您可能会很容易接受许多政策。

另一个区别是 UserJourney 的构造方式。在许多政策的情况下,您可能(取决于您希望针对特定帐户类型拥有多少个自我主张的步骤)在 EXT 政策中有一个简单的 UserJourney,而在 RP 中只有一些覆盖(选择不同的自我主张的技术配置文件)。当您决定采用单一政策时,您将需要针对特定​​帐户类型的特定步骤,并定义先决条件。

这还取决于您的整体身份设置有多大。我有很多政策(超出了标准的 100 个/租户配额),所以我个人更喜欢多用途政策,而不是将功能拆分成许多并最终得到更多。

我相信您的问题没有一个完美的答案。决定哪种方法最适合您的因素有很多。即使像样式(页面模板)这样简单的事情也会影响它。

我建议您为用户提供 2 个不同的按钮,例如应用程序页面上的 UserType1 和 UserType2 以及这些按钮应该调用不同的用户流。有 2 个选项可用于此目的:

  1. 创建 2 个独立的策略文件链
  2. 在基本文件或扩展文件中创建多个用户旅程,并使用引用不同用户旅程的多个 RP (signup_signin) 文件。

为了创建两组策略文件,您可以选择创建两个单独的链,如下所述:

B2C_1A_TRUSTFRAMEWORKBASE > B2C_1A_TRUSTFRAMEWORKEXTENSIONS > B2C_1A_SIGNUP_SIGNIN

B2C_1A_TRUSTFRAMEWORKBASE1 > B2C_1A_TRUSTFRAMEWORKEXTENSIONS1 > B2C_1A_SIGNUP_SIGNIN1

但是,如果您想使用 2 个 RP (B2C_1A_SIGNUP_SIGNIN) 文件,则不必使用 2 套策略文件。您还可以考虑在 B2C_1A_TRUSTFRAMEWORKBASE 或 B2C_1A_TRUSTFRAMEWORKEXTENSIONS 文件中创建 2 个单独的用户旅程,例如 <UserJourney Id="SignUpOrSignIn"><UserJourney Id="SignUpOrSignIn1">.

一旦您配置了两个用户旅程,您可以在 B2C_1A_SIGNUP_SIGNIN 文件中引用 <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> 并在 B2C_1A_SIGNUP_SIGNIN1 文件中引用 <DefaultUserJourney ReferenceId="SignUpOrSignIn1" />

如果您使用此配置,策略文件链将如下所示:

B2C_1A_TRUSTFRAMEWORKBASE > B2C_1A_TRUSTFRAMEWORKEXTENSIONS > B2C_1A_SIGNUP_SIGNIN

B2C_1A_TRUSTFRAMEWORKBASE > B2C_1A_TRUSTFRAMEWORKEXTENSIONS > B2C_1A_SIGNUP_SIGNIN1

此外,RP 文件 (SIGNUP_SIGNIN) 的名称在这两种情况下会有所不同。在选项 1 中,所有三个文件都有不同的名称,在选项 2 中,基本文件和扩展文件将相同,只是 RP 文件不同。无论您选择哪个选项,您都可以在上面提到的 URL 中指定 RP 文件的名称 (SIGNUP_SIGNIN)。 B2C支持上传200个策略文件,所以你可以选择选项1,不用担心用完策略文件允许的限制。