簡體   English   中英

Azure AD B2C 聲明轉換為非 null 輸入聲明

[英]Azure AD B2C ClaimsTransformation to non null input claim

在 Azure AD B2C 我有多個技術配置文件。

在一個技術簡介中,我可能對 output 聲明有價值,也可能沒有價值。 但我可以從另一個索賠中得到它。 這里以 email 為例。

因此,用戶可能沒有 output 中需要的 email 聲明。 我也可以從 signInName 獲得它。

我想要實現的是

  1. 如果 email 聲明有價值,則在 output 中傳遞 email 聲明
  2. 否則將聲明 signInName 與 PartnerClaimType="email" 一起使用

我怎樣才能做到這一點?

在 AAD-OIDC 中使用:

<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="email"/>

如果email在這個階段有一個值,它將是 output 進入索賠包,否則它將是null 它將始終嘗試對來自 AAD 聯盟的signInName聲明的email聲明。

您無法根據同一技術配置文件中的另一個聲明明確控制將獲得 output 的內容。

您可以做的是“如果 email 存在,則在 AAD-OIDC 完成后將signInName 設置為 null”。

https://docs.microsoft.com/en-us/azure/active-directory-b2c/string-transformations#nullclaim

<ClaimsTransformation Id="SetSignInNameToNull" TransformationMethod="NullClaim">
  <OutputClaims>
  <OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="claim_to_null" />
  </OutputClaims>
</ClaimsTransformation>
  <TechnicalProfile Id="CT-SetSignInNameToNull">
    <DisplayName>Compare Email And Verify Email</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="signInName" />
    </OutputClaims>
    <OutputClaimsTransformations>
      <OutputClaimsTransformation ReferenceId="SetSignInNameToNull" />
    </OutputClaimsTransformations>
  </TechnicalProfile>
        <OrchestrationStep Order="X" Type="ClaimsExchange">
          <Preconditions>
<!-- precondition here to only run this step if Email exists, and it was AAD Federated auth -->
            <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
              <Value>authenticationSource</Value>
              <Value>socialIdpAuthentication</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>
            <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
              <Value>email</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>
          </Preconditions>
          <ClaimsExchanges>
            <ClaimsExchange Id="SetSignInNameToNull" TechnicalProfileReferenceId="CT-SetSignInNameToNull" />
          </ClaimsExchanges>

暫無
暫無

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

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