我需要以编程方式创建 Azure B2C 用户帐户。在一个单独的用户数据存储中,我保存了有关我需要在 B2C 中设置的用户的相关信息,包括他们的手机号码,我们已经与他们进行了通信。
我的业务需求是在用户首次登录/密码重置体验时,将此手机号码作为次要因素。我有一个初始登录体验,它使用外部创建的 JWT 令牌将用户带到自定义用户旅程,他们可以在其中首次设置密码。
我了解目前尚无法通过 Graph API 或 PowerShell 设置 Azure MFA 手机号码。(这仍然是真的吗?)。因此,B2C 要求用户在示例 PhoneFactor-InputOrVerify Technical Profile 中输入他们的手机号码。这是一个安全漏洞,因为您可以在其中输入任何手机号码并验证该号码。
我可以很容易地以编程方式将用户号码添加到其他字段——例如用户记录上的移动字段。
问题 1. 有没有办法读取用户帐户移动值并将其呈现给技术配置文件,就好像它是 strongAuthenticationPhoneNumber 值或 Verified.strongAuthenticationPhoneNumber?
问题 2. 这是一个好主意吗?我想有充分的理由不这样做,但我无法理解它们可能是什么。
我尝试创建新的 ClaimTypes,读取“mobile”字段值,创建 ClaimsTranfromations 以尝试使 mobile 声明看起来是 strongAuthenticationPhoneNumber 声明,并且通常尝试“欺骗”B2C 认为这是存储在MFA 数据存储。
这是 starterpack 中的标准 PhoneFactor-InputOrVerify 技术配置文件:
<ClaimsProvider>
<DisplayName>PhoneFactor</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="PhoneFactor-InputOrVerify">
<DisplayName>PhoneFactor</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.PhoneFactorProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.phonefactor</Item>
<Item Key="ManualPhoneNumberEntryAllowed">true</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
</CryptographicKeys>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateUserIdForMFA" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="userIdForMFA" PartnerClaimType="UserId" />
<InputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="Verified.OfficePhone" />
<OutputClaim ClaimTypeReferenceId="newPhoneNumberEntered" PartnerClaimType="newPhoneNumberEntered" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-MFA" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
我可以提供我之前提到的自定义用户旅程的更多代码示例,但我认为这对解决这个问题没有帮助。