布林值宣告轉換

本文提供在 Azure Active Directory B2C (Azure AD B2C) 中,使用 Identity Experience Framework 結構描述布林值宣告轉換的範例。 如需詳細資訊,請參閱宣告轉換

AndClaims

執行兩個布林值輸入宣告的 And 運算,並使用運算的結果來設定輸出宣告。 查看此宣告轉換的即時示範

元素 TransformationClaimType 資料類型 注意
InputClaim inputClaim1 boolean 要評估的第一個宣告。
InputClaim inputClaim2 boolean 要評估的第二個宣告。
OutputClaim outputClaim boolean 叫用此宣告轉換之後將產生的宣告 (true 或 false)。

AndClaims 範例

下列宣告轉換示範如何執行兩個布林值宣告 isEmailNotExistisSocialAccountAnd。 如果這兩個輸入宣告的值均為 true,就會將輸出宣告 presentEmailSelfAsserted 設定為 true

<ClaimsTransformation Id="CheckWhetherEmailBePresented" TransformationMethod="AndClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="isEmailNotExist" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="isSocialAccount" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="presentEmailSelfAsserted" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 輸入宣告:
    • inputClaim1:true
    • inputClaim2:false
  • 輸出宣告:
    • outputClaim:false

AssertBooleanClaimIsEqualToValue

檢查兩個宣告的布林值相等,如果不相等,則會擲回例外狀況。 查看此宣告轉換的即時示範

元素 TransformationClaimType 資料類型 注意
inputClaim inputClaim boolean 要檢查的宣告。
InputParameter valueToCompareTo boolean 要比較的值 (True 或 False)。

AssertBooleanClaimIsEqualToValue 宣告轉換一律會從驗證技術設定檔執行,其會透過自我判斷技術設定檔來呼叫。 UserMessageIfClaimsTransformationBooleanValueIsNotEqual 自我判斷技術設定檔中繼資料會控制技術設定檔要呈現給使用者的錯誤訊息。 錯誤訊息可以當地語系化

圖表顯示如何使用 AssertStringClaimsAreEqual 宣告轉換。

AssertBooleanClaimIsEqualToValue 範例

下列宣告轉換示範如何使用 true 值來檢查布林值宣告的值。 如果 accountEnabled 宣告的值是 false,就會擲回錯誤訊息。

<ClaimsTransformation Id="AssertAccountEnabledIsTrue" TransformationMethod="AssertBooleanClaimIsEqualToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="accountEnabled" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="valueToCompareTo" DataType="boolean" Value="true" />
  </InputParameters>
</ClaimsTransformation>
  • 輸入宣告:
    • inputClaim:false
    • valueToCompareTo:true
  • 結果:擲回錯誤

呼叫 AssertBooleanClaimIsEqualToValue 宣告轉換

下列 Example-AssertBoolean 驗證技術設定檔會呼叫 AssertAccountEnabledIsTrue 宣告轉換。

<TechnicalProfile Id="Example-AssertBoolean">
  <DisplayName>Unit test</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="ComparisonResult" DefaultValue="false" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertAccountEnabledIsTrue" />
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

自我判斷技術設定檔會呼叫驗證 Example-AssertBoolean 技術設定檔。

<TechnicalProfile Id="SelfAsserted-AssertDateTimeIsGreaterThan">
  <DisplayName>Example</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.selfasserted</Item>
    <Item Key="UserMessageIfClaimsTransformationBooleanValueIsNotEqual">Custom error message if account is disabled.</Item>
  </Metadata>
  ...
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="Example-AssertBoolean" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>

CompareBooleanClaimToValue

檢查宣告的布林值等於 truefalse,並傳回壓縮的結果。 查看此宣告轉換的即時示範

元素 TransformationClaimType 資料類型 注意
InputClaim inputClaim boolean 要比較的宣告。
InputParameter valueToCompareTo boolean 要比較的值 (True 或 False)。
OutputClaim compareResult boolean 叫用此宣告轉換之後所產生的宣告。

CompareBooleanClaimToValue 範例

下列宣告轉換示範如何使用 true 值來檢查布林值宣告的值。 如果 IsAgeOver21Years 宣告的值等於 true,則宣告轉換會傳回 true;否則會傳回 false

<ClaimsTransformation Id="AssertAccountEnabled" TransformationMethod="CompareBooleanClaimToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="IsAgeOver21Years" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="valueToCompareTo" DataType="boolean" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim  ClaimTypeReferenceId="accountEnabled" TransformationClaimType="compareResult"/>
  </OutputClaims>
</ClaimsTransformation>
  • 輸入宣告:
    • inputClaim:false
  • 輸入參數:
    • valueToCompareTo:true
  • 輸出宣告:
    • compareResult:false

NotClaims

執行布林值輸入宣告的 Not 運算,並使用運算的結果來設定輸出宣告。 查看此宣告轉換的即時示範

元素 TransformationClaimType 資料類型 注意
InputClaim inputClaim boolean 要運算的宣告。
OutputClaim outputClaim boolean 叫用此宣告轉換之後所產生的宣告 (true 或 false)。

NotClaims 範例

下列宣告轉換示範如何在宣告上執行邏輯否定。

<ClaimsTransformation Id="CheckWhetherEmailBePresented" TransformationMethod="NotClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userExists" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="userExists" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 輸入宣告:
    • inputClaim:false
  • 輸出宣告:
    • outputClaim:true

OrClaims

執行兩個布林值宣告的 Or,並使用運算的結果來設定輸出宣告。 查看此宣告轉換的即時示範

元素 TransformationClaimType 資料類型 注意
InputClaim inputClaim1 boolean 要評估的第一個宣告。
InputClaim inputClaim2 boolean 要評估的第二個宣告。
OutputClaim outputClaim boolean 叫用此宣告轉換之後將產生的宣告 (true 或 false)。

OrClaims 範例

下列宣告轉換示範如何執行兩個布林值宣告的 Or

<ClaimsTransformation Id="CheckWhetherEmailBePresented" TransformationMethod="OrClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="isLastTOSAcceptedNotExists" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="isLastTOSAcceptedGreaterThanNow" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="presentTOSSelfAsserted" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 輸入宣告:
    • inputClaim1:true
    • inputClaim2:false
  • 輸出宣告:
    • outputClaim:true

後續步驟