2017-12-15 32 views
2

AADB2C Identity Experience Framework 사용자 지정 정책을 사용하여 여러 사회 공급자뿐만 아니라 로컬 공급자도 허용하지만 Sign-Up이 아니라 Sign-Up 만 허용하는 UserJourney를 만들려고합니다. ,사용자 지정 정책 유효성 검사 오류

Unable to upload policy. Reason : Validation failed: 2 validation error(s) found in policy "B2C_1A_TRUSTFRAMEWORKEXTENSIONS" of tenant "mytenant.onmicrosoft.com".ClaimsExchange with id "SignInWithLogonNameExchange" is referenced in UserJourney with id "SignInAny" in policy "B2C_1A_TrustFrameworkExtensions" of tenant "mytenant.onmicrosoft.com", but it was not found.ClaimsExchange with id "SignInWithLogonNameExchange" is referenced in UserJourney with id "SignInAny" in policy "B2C_1A_TrustFrameworkExtensions" of tenant "MBHB2C.onmicrosoft.com", but it was not found.

내가 생각하는 UserJourney의 첫 번째 부분은 모든 관련 내용이 포함되어 있습니다 : 나는 UserJourney를 포함하는 TrustFrameworkExtensions 파일을 업로드 할 때, 업로드는 오류와 함께 실패

<UserJourney Id="SignInAny"> 
    <OrchestrationSteps> 
     <OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.idpselections"> 
      <ClaimsProviderSelections> 

       <ClaimsProviderSelection TargetClaimsExchangeId="SignInWithLogonNameExchange" /> 
       <ClaimsProviderSelection TargetClaimsExchangeId="KDEWebAppTestExchange" /> 
       <ClaimsProviderSelection TargetClaimsExchangeId="MSAExchange" /> 
       <ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" /> 
      </ClaimsProviderSelections> 

      <ClaimsExchanges> 
       <ClaimsExchange Id="SignInWithLogonNameExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" /> 
      </ClaimsExchanges> 
     </OrchestrationStep> 

     <!-- Check if the user has selected to sign in using one of the social providers --> 
     <OrchestrationStep Order="2" Type="ClaimsExchange"> 
      <Preconditions> 
       <Precondition Type="ClaimsExist" ExecuteActionsIf="true"> 
        <Value>objectId</Value> 
        <Action>SkipThisOrchestrationStep</Action> 
       </Precondition> 
      </Preconditions> 
      <ClaimsExchanges> 
       <ClaimsExchange Id="KDEWebAppTestExchange" TechnicalProfileReferenceId="KDEWebAppTestProfile" /> 
       <ClaimsExchange Id="MSAExchange" TechnicalProfileReferenceId="MSA-OIDC" /> 
       <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" /> 
      </ClaimsExchanges> 
     </OrchestrationStep> 
     ... 
    </UserJourney> 
</OrchestrationSteps> 

나는 무엇을 찾지 못했습니다 실제로 의미합니다.

제안 사항?

감사합니다.

<ClaimsProviderSelection TargetClaimsExchangeId="SignInWithLogonNameExchange" /> 

TargetClaimsExchangeId 다음 OrchestrationStep에서 ClaimsExchange 요소에 대한 참조입니다 : Order 1

마틴 OrchestrationStep에서 기본적으로

답변

1

은 다음 줄이있다. 그러나 다음 단계에서 IdSignInWithLogonNameExchange으로 설정된 줄이 없습니다.

<ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" /> 

그래서 IEF는 사용자가 해당 ClaimsProviderSelection에 해당하는 버튼을 클릭 할 때 (사용하는 예를 들어, 어떤 기술 프로필을) 무엇을 해야할지하지 않습니다.

+0

'ValidationClaimsExchangeId'는 현재 단계에 대한 참조입니까? – spottedmahn

+1

예. 그 점을 지적 해 주셔서 감사합니다. 나는 응답을 업데이트하는 것을 고려했다. 그러나이 경우는 sign-in 만 사용되는 반면 sign-in/sign-in flow에서는 사용되므로 그대로 두었다. 개념은 사용자가 앞으로 나아갈 수 있기 전에 유효성을 검사해야하는 입력을 제공한다는 것입니다. –

+0

이것은 효과적이었습니다 (적어도 유효한 것으로 인정되었지만 아직 실제 로그인 기능을 테스트하지 않았습니다). 그러나 OrchestrationStep 1 내의' 섹션도 제거해야만했습니다. 다른 오류 '중복 키 시퀀스'SignInWithLogonNameExchange''가 발생하지 않도록해야했습니다. 감사! –