Azure ad b2c AlternativeSecurityId导致在自定义注册期间处理挂起

Azure ad b2c AlternativeSecurityId导致在自定义注册期间处理挂起,azure-ad-b2c,Azure Ad B2c,我试图在联合注册登录流程中完成三件事: 通用注册技术配置文件,无论注册是本地注册还是社交注册,都将使用该配置文件 所有的社会注册都是通过当地账户进行的 (请参阅GitHub:使用社交和本地帐户注册) 注册分为电子邮件验证页和第二页,用于处理所需的其余声明。(参见GitHub:将电子邮件验证和用户注册分为两个单独的屏幕) 问题:在完成Facebook的拆分注册第二屏并单击继续后,通用注册技术配置文件将挂起。这仅在包含AlternateSecurityId声明时发生 我已经连接了应用程序洞察,并且

我试图在联合注册登录流程中完成三件事:

  • 通用注册技术配置文件,无论注册是本地注册还是社交注册,都将使用该配置文件
  • 所有的社会注册都是通过当地账户进行的 (请参阅GitHub:使用社交和本地帐户注册)
  • 注册分为电子邮件验证页和第二页,用于处理所需的其余声明。(参见GitHub:将电子邮件验证和用户注册分为两个单独的屏幕)
  • 问题:在完成Facebook的拆分注册第二屏并单击继续后,通用注册技术配置文件将挂起。这仅在包含AlternateSecurityId声明时发生

    我已经连接了应用程序洞察,并且正在通过VisualStudio代码进行查看。但除了在最后一步看到感叹号外,似乎没有任何明显的错误/警告

    相关代码(删除名称以保护无辜):

    
    保单简介
    
    
    目标
    SkipThisOrchestrationStep
    认证源
    localAccountAuthentication
    SkipThisOrchestrationStep
    目标
    SkipThisOrchestrationStep
    认证源
    localAccountAuthentication
    SkipThisOrchestrationStep
    目标
    SkipThisOrchestrationStep
    
    
    电子邮件验证
    启动本地帐户的电子邮件地址验证
    api.localaccountsignup
    继续
    假的
    本地帐户
    电子邮件注册
    IP地址
    api.localaccountsignup
    创造
    假的
    Azure Active Directory
    写
    真的
    假的
    --> 
    
    Hmm,每次挂起时,肯定会发生错误。您是否检查了AppInsights在Failures选项卡中是否存在异常?
    <!--####################################################################-->
    <!--########################## Relying Party ###########################-->
    <!--####################################################################-->
    
    <RelyingParty>
        <DefaultUserJourney ReferenceId="SplitSignUpOrSignIn" />
        <UserJourneyBehaviors>  
            <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="{Settings:AppInsightsInstrumentationKey}" DeveloperMode="{Settings:DeveloperMode}" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
        </UserJourneyBehaviors>    
        <TechnicalProfile Id="PolicyProfile">
            <DisplayName>PolicyProfile</DisplayName>
            <Protocol Name="OpenIdConnect" />
            <OutputClaims>
                <OutputClaim ClaimTypeReferenceId="displayName" />
                <OutputClaim ClaimTypeReferenceId="givenName" />
                <OutputClaim ClaimTypeReferenceId="surname" />
                <OutputClaim ClaimTypeReferenceId="email" />
                <OutputClaim ClaimTypeReferenceId="otherMails" />
                <OutputClaim ClaimTypeReferenceId="UserPrincipalName" />
                <OutputClaim ClaimTypeReferenceId="alternativeSecurityId" />  
                <OutputClaim ClaimTypeReferenceId="authenticationSource" />
                <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
                <OutputClaim ClaimTypeReferenceId="identityProvider" />
                <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
            </OutputClaims>
            <SubjectNamingInfo ClaimType="sub" />
        </TechnicalProfile>
    </RelyingParty>
    
    <!--####################################################################-->
    <!--########################## User Journeys ###########################-->
    <!--####################################################################-->
    
    <UserJourneys>
        <UserJourney Id="SplitSignUpOrSignIn">
            <OrchestrationSteps>
                <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
                    <ClaimsProviderSelections>
                        <ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" />
                        <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
                    </ClaimsProviderSelections>
                    <ClaimsExchanges>
                        <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="2" Type="ClaimsExchange">
                    <Preconditions>
                        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
                            <Value>objectId</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>
                    </Preconditions>
                    <ClaimsExchanges>
                        <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" /> 
                        <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="EmailVerification" /> <!-- verify email only; signup in Step 5 -->
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="3" Type="ClaimsExchange">
                    <Preconditions>
                        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
                            <Value>authenticationSource</Value>
                            <Value>localAccountAuthentication</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>
                    </Preconditions>
                    <ClaimsExchanges>
                        <ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="4" Type="ClaimsExchange">
                    <Preconditions>
                        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
                            <Value>objectId</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>
                        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
                            <Value>authenticationSource</Value>
                            <Value>localAccountAuthentication</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>            
                    </Preconditions>
                    <ClaimsExchanges>
                        <ClaimsExchange Id="SignUpWithSocial" TechnicalProfileReferenceId="EmailVerification-PopulateEmail" /> <!-- verify email only; signup in Step 5 -->
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="5" Type="ClaimsExchange">
                    <!-- complete the commmon sign up process by entering any required attributes -->
                    <Preconditions>
                        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
                            <Value>objectId</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>
                    </Preconditions>          
                    <ClaimsExchanges>
                        <!-- combine SelfAsserted-Social with LocalAccountSignUpWithLogonEmail -->
                        <ClaimsExchange Id="CommonAccountSignUpWithReadOnlyEmail" TechnicalProfileReferenceId="CommonAccountSignUpWithReadOnlyEmail" />
                    </ClaimsExchanges>
                </OrchestrationStep>
                <OrchestrationStep Order="6" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
            </OrchestrationSteps>
            <ClientDefinition ReferenceId="DefaultWeb" />
        </UserJourney>
    </UserJourneys>
    
    <!--####################################################################-->
    <!--######################### Claims Providers #########################-->
    <!--####################################################################-->
    
    <ClaimsProviders>
    
        <!--=====================================================-->
        <!--================ Email Verification =================-->
        <!--=====================================================-->
        
        <ClaimsProvider>
            <DisplayName>Email Verification</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="EmailVerification">
                    <DisplayName>Initiate Email Address Verification For Local Account</DisplayName>
                    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
                    <Metadata>
                        <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
                        <Item Key="language.button_continue">Continue</Item>
                    </Metadata>
                    <CryptographicKeys>
                        <Key Id="issuer_secret" StorageReferenceId="{Settings:TokenSigningKeyContainer}" />
                    </CryptographicKeys>
                    <IncludeInSso>false</IncludeInSso>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
                        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
                    </OutputClaims>
                </TechnicalProfile>
                <TechnicalProfile Id="EmailVerification-PopulateEmail">
                    <InputClaims>
                        <InputClaim ClaimTypeReferenceId="email" />
                    </InputClaims>
                    <IncludeTechnicalProfile ReferenceId="EmailVerification" />
                </TechnicalProfile>
            </TechnicalProfiles>
        </ClaimsProvider>  
    
        <!--=====================================================-->
        <!--=================== Local Account ===================-->
        <!--=====================================================-->
    
        <ClaimsProvider>
            <DisplayName>Local Account</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="CommonAccountSignUpWithReadOnlyEmail">
                    <!-- Based off of LocalAccountSignUpWithEmail and SelfAsserted-Social -->
                    <DisplayName>Email signup</DisplayName>
                    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
                    <Metadata>
                        <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
                        <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
                        <Item Key="language.button_continue">Create</Item>
                        <Item Key="EnforceEmailVerification">False</Item>
                    </Metadata>
                    <CryptographicKeys>
                        <Key Id="issuer_secret" StorageReferenceId="{Settings:TokenSigningKeyContainer}" /> <!-- from social SelfAsserted-Social -->
                    </CryptographicKeys>          
                    <InputClaimsTransformations>
                        <InputClaimsTransformation ReferenceId="CreateReadOnlyEmailClaim" />
                    </InputClaimsTransformations>
                    <InputClaims>
                        <InputClaim ClaimTypeReferenceId="readOnlyEmail" /> <!--Set input the ReadOnlyEmail claim type to prefilled the email address-->
                        <InputClaim ClaimTypeReferenceId="givenName" /> <!-- from social SelfAsserted-Social -->
                        <InputClaim ClaimTypeReferenceId="surName" /> <!-- from social SelfAsserted-Social -->     
                    </InputClaims>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="objectId" />
                        <OutputClaim ClaimTypeReferenceId="readOnlyEmail" Required="true" /> <!-- Display the ReadOnlyEmail claim type (instead of email claim type)-->
                        <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
                        <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
                        <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
                        <OutputClaim ClaimTypeReferenceId="authenticationSource" />
                        <OutputClaim ClaimTypeReferenceId="newUser" />
                        <OutputClaim ClaimTypeReferenceId="displayName" />
                        <OutputClaim ClaimTypeReferenceId="givenName" />
                        <OutputClaim ClaimTypeReferenceId="surName" />
                    </OutputClaims>
                    <ValidationTechnicalProfiles>
                        <ValidationTechnicalProfile ReferenceId="AAD-CommonUserWriteUsingLogonEmail" /> 
                    </ValidationTechnicalProfiles>
                    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
                </TechnicalProfile> 
            </TechnicalProfiles>
        </ClaimsProvider>
    
        <!--=====================================================-->
        <!--============== Azure Active Directory ===============-->
        <!--=====================================================-->
    
        <ClaimsProvider>
            <DisplayName>Azure Active Directory</DisplayName>
            <TechnicalProfiles>
                <TechnicalProfile Id="AAD-CommonUserWriteUsingLogonEmail"> 
                    <!-- Based off of AAD-UserWriteUsingLogonEmail and AAD-UserWriteUsingAlternativeSecurityId -->
                    <Metadata>
                        <Item Key="Operation">Write</Item>
                        <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
                    </Metadata>
                    <IncludeInSso>false</IncludeInSso>
                    <InputClaimsTransformations>
                        <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />  <!-- from social AAD-UserWriteUsingAlternativeSecurityId -->
                    </InputClaimsTransformations>          
                    <InputClaims>
                        <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" Required="true" />
                        <!--*******************************************-->
                        <!--****** Line below is causing ERROR! *******-->
                        <!--*******************************************-->
                        <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="false" /> --> <!-- from social AAD-UserWriteUsingAlternativeSecurityId -->
                    </InputClaims>
                    <PersistedClaims>
                        <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
                        <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password" />
                        <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
                        <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />
                        <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" /> <!-- from social AAD-UserWriteUsingAlternativeSecurityId -->   
                        <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" /> <!-- from social AAD-UserWriteUsingAlternativeSecurityId -->         
                        <PersistedClaim ClaimTypeReferenceId="otherMails" /> <!-- from social AAD-UserWriteUsingAlternativeSecurityId -->
                        <PersistedClaim ClaimTypeReferenceId="givenName" />
                        <PersistedClaim ClaimTypeReferenceId="surname" />
                    </PersistedClaims>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="objectId" />
                        <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
                        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
                        <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
                        <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
                        <OutputClaim ClaimTypeReferenceId="otherMails" /> <!-- from social AAD-UserWriteUsingAlternativeSecurityId -->
                    </OutputClaims>
                    <IncludeTechnicalProfile ReferenceId="AAD-Common" /> 
                    <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
                </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider> 
    </ClaimsProviders>