簡體   English   中英

Azure Active Directory B2C SAML 集成

[英]Azure Active Directory B2C SAML Integration

我正在遵循 MS 官方指南Set up sign-in with a Salesforce SAML provider by using custom policies in Azure Active Directory B2C 我已經完成了所有配置,但是當我嘗試運行應用程序時,我收到一個奇怪的錯誤,指出Claim with id "userId" already exists in the claim collection 我在我的自定義策略中搜索userId

TrustFrameworkBase.xml:在此文件中未聲明用戶 ID ,在 ClaimsSchema 中將名為issuerUserId的聲明聲明為數據類型字符串,並用於以下聲明轉換:

<ClaimsTransformation Id="CreateAlternativeSecurityId" TransformationMethod="CreateAlternativeSecurityId">
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="issuerUserId" TransformationClaimType="key" />
          <InputClaim ClaimTypeReferenceId="identityProvider" TransformationClaimType="identityProvider" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="alternativeSecurityId" TransformationClaimType="alternativeSecurityId" />
        </OutputClaims>
      </ClaimsTransformation>

然后在 Facebook 聲明提供程序中使用issuerUserId

<ClaimsProvider>
    <Domain>facebook.com</Domain>
    <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="id" />
...
    </OutputClaims>
...
</ClaimsProvider>

TrustFrameworkExtension.xml:聲明用戶 ID是我正在使用的聲明提供程序(salesforce)的輸出聲明:

<ClaimsProvider>
      <Domain>salesforce</Domain>
...
      <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userid"/>
      </OutputClaims>
...
</ClaimsProvider>

SignUpOrSigninSalesforce.xml:聲明userid是我使用的依賴方(salesforce)的輸出聲明:

<RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpSignInSalesforce" />
    <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="issuerUserId" />
        ...
      </OutputClaims>
    </TechnicalProfile>
</RelyingParty>

基於錯誤聲明userid被定義了兩次,但我沒有找到雙重定義,你有什么線索嗎?

謝謝。

經過 3 天的排查故障,我在五分鍾前發現了錯誤。 在我的情況下,我沒有完全遵循微軟的步驟,我在TrustFrameworkExtensions.xml的編排步驟 3 中錯誤地更改了SignUpSignInSalesforce UserJourney

<UserJourney Id="SignUpSignInSalesforce">
....
    <OrchestrationStep Order="3" Type="ClaimsExchange">
              <ClaimsExchanges>
                <ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="salesfoce" />
              </ClaimsExchanges>
            </OrchestrationStep>
...
</UserJourney>

錯誤的值是TechnicalProfileReferenceId 當我將值從salesforce更改為AAD-UserReadUsingAlternativeSecurityId-NoError 時,解決方案開始工作。 我所做的是一步一步地重新閱讀微軟的文檔,尋找錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM