[英]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.