我已将 Azure AD B2C 设置为允许用户使用自定义策略从“常规”AAD 目录进行身份验证,如下所述https://learn.microsoft.com/en-us/azure/active-directory-b2c/active-目录-b2c-setup-aad-自定义。在一种情况下,我希望用户进行注册(使用其 AAD 凭据进行身份验证,在 AAD B2C 目录中创建相应的对象,并将 objectidentifier 作为声明传递给我的应用程序),而不提供任何进一步的信息。从示例开始,我无法弄清楚如何完全跳过自我断言步骤。我尝试过的两种方法是
1) 删除SelfAsserted-Social ClaimsExchange,以及 2) 修改(实际上是复制到 TrustFrameworkExtensions、重命名和编辑)SelfAsserted-Social和AAD-UserReadUsingObjectId ClaimsExchanges,以便唯一的 OutputClaim 条目不需要用户提示。
在这两种方法中,从 UI 角度来看,注册似乎都有效,但不会在 B2C 目录中创建用户对象。使用 App Insights,在两种方法中AAD-UserReadUsingObjectId似乎都会生成Microsoft.Cpim.Common.PolicyException。
完整的用户旅程是
<UserJourney Id="SignUpAAD">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="KDEWEbAppTestExchange" />
</ClaimsProviderSelections>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="KDEWebAppTestExchange" TechnicalProfileReferenceId="KDEWebAppTestProfile" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- prepare ground for searching for user …Run Code Online (Sandbox Code Playgroud) 如果我在 Aure AD B2C 中有一个基于 Azure AD(企业)身份创建的用户(如下所述: https: //learn.microsoft.com/en-us/azure/active-directory-b2c/active- Directory-b2c-setup-aad-custom),AADB2C 中是否存储了一个属性,允许我在 AAD 中查找(使用 Graph API 或类似 API)用户对象?我看到 AADB2C 属性中有 userPrincipalName和IssuerUserId,但对我来说,这两个属性是否与 AAD 中存储的任何值匹配并不明显。
谢谢!
马丁