次の方法で共有


文字列要求変換

この記事では、Azure Active Directory B2C (Azure AD B2C) の Identity Experience Framework スキーマの文字列要求変換の使用例を示します。 詳細については、「要求変換」をご覧ください。

AssertStringClaimsAreEqual

2 つの要求を比較し、それらが指定された比較 inputClaim1、inputClaim2 および stringComparison によれば等しくない場合は、例外をスローします。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim1 string 比較する最初の要求の種類。
InputClaim inputClaim2 string 比較する 2 番目の要求の種類。
InputParameter stringComparison string 文字列比較で、次のいずれかの値です。序数、OrdinalIgnoreCase。

AssertStringClaimsAreEqual 要求変換は常に、セルフアサート技術プロファイルによって呼び出される検証技術プロファイル (つまり DisplayControl) から実行されます。 ユーザーに表示されるエラー メッセージは、セルフアサート技術プロファイルの UserMessageIfClaimsTransformationStringsAreNotEqual メタデータによって制御されます。 エラー メッセージは、ローカライズできます。

AssertStringClaimsAreEqual 要求変換の使用方法を示す図。

AssertStringClaimsAreEqual の例

この要求変換を使用して、2 つの要求が同じ値を持っていることを確認できます。 そうでない場合は、エラー メッセージがスローされます。 次の例では、strongAuthenticationEmailAddress 要求がemail 要求と等しいことを確認します。 そうでない場合は、エラー メッセージがスローされます。

<ClaimsTransformation Id="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="strongAuthenticationEmailAddress" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
  </InputParameters>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim1: someone@contoso.com
    • inputClaim2: someone@outlook.com
  • 入力パラメーター:
    • stringComparison: ordinalIgnoreCase
  • 結果:エラーがスローされます

AssertStringClaimsAreEqual 要求変換の呼び出し

login-NonInteractive 検証技術プロファイルは、AssertEmailAndStrongAuthenticationEmailAddressAreEqual 要求変換を呼び出します。

<TechnicalProfile Id="login-NonInteractive">
  ...
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" />
  </OutputClaimsTransformations>
</TechnicalProfile>

セルフアサート技術プロファイルによって login-NonInteractive 検証技術プロファイルが呼び出されます。

<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
  <Metadata>
    <Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">Custom error message the email addresses you provided are not the same.</Item>
  </Metadata>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>

BuildUri

時間ベースのワンタイム パスワード (TOTP) URI を作成します。 URI は、メール アドレスなどのユーザーの一意の識別子と秘密鍵との組み合わせです。 URI は、ユーザーに提示される QR コードに後で変換されます。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim path string メール アドレス、ユーザー名、電話番号など、ユーザーの一意の識別子。
InputClaim query.secret string TOTP 秘密鍵。
InputParameter scheme string URI のスキーム部分。 たとえば、「 otpauth 」のように入力します。
InputParameter host string URI のスキーム部分。 たとえば、「 totp 」のように入力します。
InputParameter query.issuer string URI の発行者部分。 たとえば、「 {AuthenticatorIssuer} 」のように入力します。
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。

BuildUri の例

次の要求変換によって、QR コードまたはディープ リンクに表示される TOTP URI が生成されます。

<ClaimsTransformation Id="CreateUriString" TransformationMethod="BuildUri">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="uriLabel" TransformationClaimType="path" />
    <InputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="query.secret" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="scheme" DataType="string" Value="otpauth" />
    <InputParameter Id="host" DataType="string" Value="totp" />
    <InputParameter Id="query.issuer" DataType="string" Value="{AuthenticatorIssuer}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="qrCodeContent" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • path: emily@fabrikam.com
    • query.secret: fay2lj7ynpntjgqa
  • 入力パラメーター:
    • scheme: otpauth
    • host: totp
    • query.issuer: {AuthenticatorIssuer}
  • 出力要求:
    • outputClaim: otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo

ChangeCase

指定された要求の大文字または小文字を演算子に従って変更します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim1 string 変更するクレーム。
InputParameter toCase string 次のいずれかの値を指定できます。LOWER または UPPER
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。

ChangeCase の例

次の要求変換では、email 要求が小文字に変更されます。

<ClaimsTransformation Id="ChangeToLower" TransformationMethod="ChangeCase">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
  </InputClaims>
<InputParameters>
  <InputParameter Id="toCase" DataType="string" Value="LOWER" />
</InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • email: SomeOne@contoso.com
  • 入力パラメーター:
    • toCase:LOWER
  • 出力要求:
    • email: someone@contoso.com

CompareClaims

文字列要求が相互に等しいかどうかを確認します。 結果は、true または false の値を含む新しいブール値要求です。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim1 string 比較する最初の要求の種類。
InputClaim inputClaim2 string 比較する 2 番目の要求の種類。
InputParameter operator string 指定できる値: EQUAL または NOT EQUAL
InputParameter ignoreCase string この比較が比較対象の文字列の大文字と小文字を無視するかどうかを指定します。
OutputClaim outputClaim boolean この要求変換が呼び出された後に生成される要求。

CompareClaims の例

この要求変換を使用して、要求が別の要求と等しいかどうかをチェックします。 以下の要求変換は email 要求の値が Verified.Email 要求と等しいかどうかをチェックします。

<ClaimsTransformation Id="CheckEmail" TransformationMethod="CompareClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="Email" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="Verified.Email" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
    <InputParameter Id="ignoreCase" DataType="string" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="SameEmailAddress" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim1: someone@contoso.com
    • inputClaim2: someone@outlook.com
  • 入力パラメーター:
    • operator: NOT EQUAL
    • ignoreCase: true
  • 出力要求:
    • outputClaim: true

CompareClaimToValue

要求の値が入力パラメーターの値と等しいかどうかを確認します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim1 string 比較する要求の種類。
InputParameter operator string 指定できる値: EQUAL または NOT EQUAL
InputParameter compareTo string 文字列比較(値の 1 つ、つまり、入力要求値を比較する必要がある文字列: Ordinal、OrdinalIgnoreCase)。
InputParameter ignoreCase string この比較が比較対象の文字列の大文字と小文字を無視するかどうかを指定します。
OutputClaim outputClaim boolean この要求変換が呼び出された後に生成される要求。

CompareClaimToValue の例

この要求変換を使用して、要求が、指定した値と等しいかどうかをチェックします。 たとえば、以下の要求変換は termsOfUseConsentVersion 要求の値が V2 と等しいかどうかをチェックします。

<ClaimsTransformation Id="IsTermsOfUseConsentRequiredForVersion" TransformationMethod="CompareClaimToValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim1" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="compareTo" DataType="string" Value="V2" />
    <InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
    <InputParameter Id="ignoreCase" DataType="string" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim1: v1
  • 入力パラメーター:
    • compareTo: V2
    • operator: NOT EQUAL
    • ignoreCase: true
  • 出力要求:
    • outputClaim: true

CopyClaimIfPredicateMatch

入力要求の値が出力要求の述語と一致する場合は、要求の値を別の値にコピーします。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim string コピーする要求の種類。
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求の種類。 入力要求の値は、この要求の述語に対してチェックされます。

CopyClaimIfPredicateMatch の例

次の例では、signInName 要求の値を phoneNumber 要求にコピーしようとしています。 この例では、値はコピーされません。 signInName 要求が、想定される形式である電話番号ではありません。 完全なサンプルについては、電話番号または電子メールによるサインインに関するスターター パック ポリシーを参照してください。

<ClaimsTransformation Id="SetPhoneNumberIfPredicateMatch" TransformationMethod="CopyClaimIfPredicateMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim: bob@contoso.com
  • 出力要求:
    • outputclaim: 出力要求は元の値から変更されません。

述語を多くする CopyClaimIfPredicateMatch の例

この例では、要求変換によって値がコピーされます。 signInName 要求は、正しい形式である電話番号です。

  • 入力要求:
    • inputClaim: +11234567890
  • 出力要求:
    • outputClaim: +11234567890

CreateOtpSecret

TOTP 文字列要求を作成します。 この要求変換の出力は、後で Azure AD B2C ユーザーのアカウントに格納され、Microsoft Authenticator アプリと共有される TOTP シークレットです。 Authenticator アプリでは、キーを使用して、ユーザーが MFA を実行する必要があるときに TOTP コードを生成します。 ポリシーでは、このキーを使用して、ユーザーが指定した TOTP コードを検証します。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
OutputClaim outputClaim string この要求変換が呼び出された後に生成された、生成済みの TOTP コードを含む要求。

CreateOtpSecret の例

次の要求変換を使用して、TOTP 多要素認証子のシークレットを作成します。

<ClaimsTransformation Id="CreateSecret" TransformationMethod="CreateOtpSecret">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 出力要求:
    • outputClaim: hmlcmd4ph6fph64c

CreateRandomString

乱数ジェネレーターを使用してランダムな文字列を作成します。 乱数ジェネレーターの種類が integer の場合、必要に応じてシード パラメーターと最大数を指定できます。 省略可能な文字列形式パラメーターを使用して、出力を書式設定できます。省略可能な base64 パラメーターは、出力が base64 でエンコードされた randomGeneratorType [guid, integer] outputClaim (文字列) であるかどうかを指定します。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputParameter randomGeneratorType string 生成されるランダムな値、GUID (グローバル固有 ID) または INTEGER (数字) を指定します。
InputParameter stringFormat string [省略可能] ランダムな値を書式設定します。
InputParameter base64 boolean [省略可能] ランダムな値を base64 に変換します。 文字列形式が適用されている場合、文字列形式の後の値は base64 にエンコードされます。
InputParameter maximumNumber INT [省略可能] INTEGER randomGeneratorType のみです。 最大数を指定します。
InputParameter seed INT [省略可能] INTEGER randomGeneratorType のみです。 乱数値のシードを指定します。 注: 同じシードは、同じ乱数のシーケンスを生成します。
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。 ランダムな値。

CreateRandomString の例

次の例はグローバルな一意の ID を生成します。 この要求変換を使用してランダムな UPN (ユーザー プリンシパル名) を作成します。

<ClaimsTransformation Id="CreateRandomUPNUserName" TransformationMethod="CreateRandomString">
  <InputParameters>
    <InputParameter Id="randomGeneratorType" DataType="string" Value="GUID" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力パラメーター:
    • randomGeneratorType:GUID
  • 出力要求:
    • outputClaim: bc8bedd2-aaa3-411e-bdee-2f1810b73dfc

数値を作成する CreateRandomString の例

次の例では、0 ~ 1000 の範囲の整数のランダムな値を生成します。 値は OTP_{ランダム値} に書式設定されます。

<ClaimsTransformation Id="SetRandomNumber" TransformationMethod="CreateRandomString">
  <InputParameters>
    <InputParameter Id="randomGeneratorType" DataType="string" Value="INTEGER" />
    <InputParameter Id="maximumNumber" DataType="int" Value="1000" />
    <InputParameter Id="stringFormat" DataType="string" Value="OTP_{0}" />
    <InputParameter Id="base64" DataType="boolean" Value="false" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="randomNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力パラメーター:
    • randomGeneratorType:INTEGER
    • maximumNumber:1000
    • stringFormat:OTP_{0}
    • base64: false
  • 出力要求:
    • outputClaim:OTP_853

CreateStringClaim

変換で指定された入力パラメーターから文字列要求を作成します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputParameter value string 設定する文字列。 この入力パラメーターは、文字列要求変換式をサポートします。
OutputClaim createdClaim string この要求変換が呼び出された後に生成される要求は、入力パラメーターに指定された値で呼び出されています。

CreateStringClaim の例

次の要求変換では、「サービス利用規約」を含む文字列値が作成されます。

<ClaimsTransformation Id="CreateTermsOfService" TransformationMethod="CreateStringClaim">
  <InputParameters>
    <InputParameter Id="value" DataType="string" Value="Contoso terms of service..." />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="TOS" TransformationClaimType="createdClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力パラメーター:
    • value:Contoso terms of service...
  • 出力要求:
    • createdClaim: TOS 要求には「Contoso サービス利用規約...」の値が含まれています。

FormatLocalizedString

指定されたローカライズ済み書式指定文字列に従って、複数の要求の書式を設定します。 この変換では、C# の String.Format メソッドを使用します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaims string 文字列形式 {0}、{1}、{2} パラメーターとして機能する一連の入力要求。
InputParameter stringFormatId string ローカライズされた文字列StringId
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。

注意

指定できる入力要求の数に制限はありませんが、書式設定された文字列の最大長は 4000 です。

FormatLocalizedString 要求変換を使用するには:

  1. ローカライズ文字列を定義し、それをセルフアサート技術プロファイルに関連付けます。
  2. LocalizedString 要素の ElementTypeFormatLocalizedStringTransformationClaimType に設定する必要があります。
  3. StringId は、ユーザーが定義する一意識別子であり、後ほど要求変換 stringFormatId で使用します。
  4. 要求変換で、ローカライズされた文字列を使用して設定される要求の一覧を指定します。 次に、stringFormatId を ローカライズされた文字列要素の StringId に設定します。
  5. セルフアサート技術プロファイル、または表示コントロールの入力または出力要求変換で、要求変換への参照を付けます。

FormatLocalizedString の例

次の例では、アカウントが既にディレクトリに存在する場合にエラー メッセージが生成されます。 この例では、英語 (既定値) とスペイン語のローカライズされた文字列が定義されます。

<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
   </SupportedLanguages>

  <LocalizedResources Id="api.localaccountsignup.en">
    <LocalizedStrings>
      <LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">The email '{0}' is already an account in this organization. Click Next to sign in with that account.</LocalizedString>
      </LocalizedStrings>
    </LocalizedResources>
  <LocalizedResources Id="api.localaccountsignup.es">
    <LocalizedStrings>
      <LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">Este correo electrónico "{0}" ya es una cuenta de esta organización. Haga clic en Siguiente para iniciar sesión con esa cuenta.</LocalizedString>
    </LocalizedStrings>
  </LocalizedResources>
</Localization>

要求変換では、ローカライズされた文字列に基づいて応答メッセージが作成されます。 メッセージには、ローカライズされた文字列 ResponseMessge_EmailExists に埋め込まれているユーザーのメールアドレスが含まれます。

<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessge_EmailExists" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim: sarah@contoso.com
  • 入力パラメーター:
    • stringFormat: ResponseMessge_EmailExists
  • 出力要求:
    • Outputclaim: 電子メール 'sarah@contoso.com' は既にこの組織のアカウントです。 [次へ] を選んで、そのアカウントでサインインします。

FormatStringClaim

指定された書式設定文字列に従って要求の書式を設定します。 この変換では、C# の String.Format メソッドを使用します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim string 文字列形式 {0} パラメーターとして機能する要求。
InputParameter stringFormat string {0} パラメーターを含む文字列形式。 この入力パラメーターは、文字列要求変換式をサポートします。
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。

注意

文字列形式の最大許容サイズは 4000 です。

FormatStringClaim の例

この要求変換を使用して 1 つのパラメーター {0} を持つ任意の文字列の書式を設定します。 次の例では、userPrincipalName を作成します。 Facebook-OAUTH などのすべてのソーシャル ID プロバイダーの技術プロファイルは、CreateUserPrincipalName を呼び出して userPrincipalName を生成します。

<ClaimsTransformation Id="CreateUserPrincipalName" TransformationMethod="FormatStringClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormat" DataType="string" Value="cpim_{0}@{RelyingPartyTenantId}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim:5164db16-3eee-4629-bfda-dcc3326790e9
  • 入力パラメーター:
    • stringFormat: cpim_{0}@{RelyingPartyTenantId}
  • 出力要求:
    • outputClaim: cpim_5164db16-3eee-4629-bfda-dcc3326790e9@b2cdemo.onmicrosoft.com

FormatStringMultipleClaims

指定された書式設定文字列に従って、2 つの要求の書式を設定します。 この変換では、C# の String.Format メソッドを使用します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim1 string 文字列形式 {0} パラメーターとして機能する要求。
InputClaim inputClaim2 string 文字列形式 {1} パラメーターとして機能する要求。
InputParameter stringFormat string {0} および {1} パラメーターを含む文字列の形式。 この入力パラメーターは、文字列要求変換式をサポートします。
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。

注意

文字列形式の最大許容サイズは 4000 です。

FormatStringMultipleClaims の例

この要求変換を使用して 2 つのパラメーター {0} および {1} を持つ任意の文字列の書式を設定します。 次の例では、指定した形式で displayName を作成します。

<ClaimsTransformation Id="CreateDisplayNameFromFirstNameAndLastName" TransformationMethod="FormatStringMultipleClaims">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputClaim1" />
    <InputClaim ClaimTypeReferenceId="surName" TransformationClaimType="inputClaim2" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormat" DataType="string" Value="{0} {1}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim1:Joe
    • inputClaim2:Fernando
  • 入力パラメーター:
    • stringFormat: {0}{1}
  • 出力要求:
    • outputClaim:Joe Fernando

GetLocalizedStringsTransformation

ローカライズされた文字列を要求にコピーします。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
OutputClaim ローカライズされた文字列の名前 string この要求変換が呼び出された後に生成される要求の種類の一覧。

GetLocalizedStringsTransformation 要求変換を使用する場合は、次の操作を行います。

  1. api.selfasserted のように、コンテンツ定義ローカライズ文字列を定義します。

  2. LocalizedString 要素の ElementTypeGetLocalizedStringsTransformationClaimType に設定する必要があります。

  3. StringId はユーザーが定義する一意識別子であり、後ほど要求変換で使用します。

  4. 要求変換で、ローカライズされた文字列を使用して設定される要求の一覧を指定します。 ClaimTypeReferenceId は、ポリシー内の ClaimsSchema セクションに既に定義されている要求への参照です。 TransformationClaimType は、LocalizedString 要素の StringId で定義されているローカライズされた文字列の名前です。

  5. セルフアサートまたは要求変換技術プロファイルの要求変換で、自分の要求変換を参照するようにします。

  6. api.selfasserted のように、技術プロファイルをコンテンツ定義と関連付けます。 次の例は、技術プロファイルを api.selfasserted コンテンツ定義に関連付ける方法を示しています。

    <Metadata>
      <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
    </Metadata>
    

次の図は、ローカライズ要素を使って要求変換を構成する方法を示しています。

GetLocalizedStrings 要求変換の使用方法を示す図。

GetLocalizedStringsTransformation の例

次の例では、ローカライズされた文字列から電子メールの件名、本文、コード メッセージ、電子メールの署名を検索します。 要求は、後でカスタム メール確認テンプレートによって使用されます。

英語 (既定値) とスペイン語のローカライズされた文字列を定義します。

<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
   </SupportedLanguages>

  <LocalizedResources Id="api.localaccountsignup.en">
    <LocalizedStrings>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for verifying your account!</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString>
     </LocalizedStrings>
   </LocalizedResources>
   <LocalizedResources Id="api.localaccountsignup.es">
     <LocalizedStrings>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Código de verificación del correo electrónico de la cuenta de Contoso</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Gracias por comprobar la cuenta de </LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Su código es</LocalizedString>
      <LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Atentamente</LocalizedString>
    </LocalizedStrings>
  </LocalizedResources>
</Localization>

要求変換では、StringId email_subject の値を使用して要求の種類 subject の値が設定されます。

<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" />
    <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" />
    <OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" />
    <OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" />
   </OutputClaims>
</ClaimsTransformation>
  • 出力要求:
    • subject: Contoso アカウントの電子メール確認コード
    • message:アカウントの確認が完了しました!
    • codeIntro:お客様のコード
    • signature:ご利用ありがとうございます

GetMappedValueFromLocalizedCollection

入力要求の Restriction コレクションから要素をマップします。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim mapFromClaim string Restriction コレクションがある restrictionValueClaim 要求から検索するテキストを含む要求。
OutputClaim restrictionValueClaim string Restriction コレクションが含まれる要求。 要求変換が呼び出された後には、この要求の値には、選択した項目の値が含まれます。

GetMappedValueFromLocalizedCollection の例

次の例では、エラーのキーに基づいて、エラー メッセージの説明を検索します。 responseMsg 要求には、エンド ユーザーに提示する、または証明書利用者に送信するエラー メッセージのコレクションが含まれています。

<ClaimType Id="responseMsg">
  <DisplayName>Error message: </DisplayName>
  <DataType>string</DataType>
  <UserInputType>Paragraph</UserInputType>
  <Restriction>
    <Enumeration Text="B2C_V1_90001" Value="You cannot sign in because you are a minor" />
    <Enumeration Text="B2C_V1_90002" Value="This action can only be performed by gold members" />
    <Enumeration Text="B2C_V1_90003" Value="You have not been enabled for this operation" />
  </Restriction>
</ClaimType>

要求変換では、項目のテキストを検索し、その値を返します。 制限が <LocalizedCollection> を使用してローカライズされている場合、要求変換はローカライズされた値を返します。

<ClaimsTransformation Id="GetResponseMsgMappedToResponseCode" TransformationMethod="GetMappedValueFromLocalizedCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="responseCode" TransformationClaimType="mapFromClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="restrictionValueClaim" />        
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • mapFromClaim:B2C_V1_90001
  • 出力要求:
    • restrictionValueClaim: マイナーであるのでサインインできません。

LookupValue

別の要求の値に基づいて、値の一覧から要求の値を検索します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputParameterId string 参照値が含まれる要求
InputParameter string inputParameters のコレクションです。
InputParameter errorOnFailedLookup boolean 一致参照がない場合にエラーが返されるかどうかを制御します。
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。 一致する Id の値。

LookupValue の例

次の例では、inpuParameters コレクションの 1 つからドメイン名を検索します。 要求変換では、識別子内のドメイン名を検索し、その値 (アプリケーション ID) を返します。

 <ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
    <InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
    <InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
    <InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="false" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputParameterId: test.com
  • 入力パラメーター:
    • contoso.com:13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
    • microsoft.com:0213308f-17cb-4398-b97e-01da7bd4804e
    • test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
    • errorOnFailedLookup: false
  • 出力要求:
    • outputClaim: c7026f88-4299-4cdb-965d-3f166464b8a9

エラーが発生した LookupValue の例

errorOnFailedLookup 入力パラメーターが true に設定されると、LookupValue 要求変換は常に、セルフアサート技術プロファイルによって呼び出される検証技術プロファイル (つまり DisplayConrtol) から実行されます。 ユーザーに表示されるエラー メッセージは、セルフアサート技術プロファイルの LookupNotFound メタデータによって制御されます。

LookupValue 要求変換の使用方法を示す図。

次の例では、inpuParameters コレクションの 1 つからドメイン名を検索します。 要求変換では、識別子内のドメイン名を検索し、その値 (アプリケーション ID) を返します。つまり、エラー メッセージが生成されます。

 <ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
    <InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
    <InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
    <InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputParameterId: live.com
  • 入力パラメーター:
    • contoso.com:13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
    • microsoft.com:0213308f-17cb-4398-b97e-01da7bd4804e
    • test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
    • errorOnFailedLookup: true
  • エラー:
    • 一連の入力パラメーターの ID に入力要求値との一致が見つかりませんでした。また、errorOnFailedLookup は true になっています。

NullClaim

特定の要求の値を消去します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
OutputClaim claim_to_null string 要求の値を Null に設定します。

NullClaim の例

この要求変換を使用して、不要なデータを要求プロパティ バッグから削除し、セッション Cookie のサイズを縮小します。 次の例では、TermsOfService 要求の種類の値を削除します。

<ClaimsTransformation Id="SetTOSToNull" TransformationMethod="NullClaim">
  <OutputClaims>
  <OutputClaim ClaimTypeReferenceId="TermsOfService" TransformationClaimType="claim_to_null" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • outputClaim:Welcome to Contoso App. この Web サイトを継続して参照および使用する場合には、次の使用条件に従い、制約を受けることに同意していただくものとします。
  • 出力要求:
    • outputClaim:NULL

ParseDomain

電子メール アドレスのドメイン部分を取得します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim emailAddress string 電子メール アドレスが含まれている 要求。
OutputClaim domain string この要求変換が呼び出された後に生成される要求 - ドメイン。

ParseDomain の例

この要求変換は、ユーザーの @ 記号の後のドメイン名を解析するために使用します。 次の要求変換は、email 要求からドメイン名を解析する方法を示しています。

<ClaimsTransformation Id="SetDomainName" TransformationMethod="ParseDomain">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="domain" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • emailAddress: joe@outlook.com
  • 出力要求:
    • domain: outlook.com

SetClaimIfBooleansMatch

ブール型の要求が true または false であることを確認します。 「はい」の場合は、outputClaimIfMatched 入力パラメーターに存在する値を使用して出力要求を設定します。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim claimToMatch string チェックする要求の種類。 Null 値の場合は例外がスローされます。
InputParameter matchTo string claimToMatch 入力要求と比較する値。 指定できる値: true または false
InputParameter outputClaimIfMatched string 入力要求が matchTo 入力パラメーターと等しい場合に設定する値。
OutputClaim outputClaim string claimToMatch 入力要求が matchTo 入力パラメーターと等しい場合、この出力要求には outputClaimIfMatched 入力パラメーターの値が含まれます。

SetClaimIfBooleansMatch の例

たとえば、以下の要求変換では hasPromotionCode 要求の値が true と等しいかどうかがチェックされます。 「はい」の場合は、値を Promotion code not found に戻します。

<ClaimsTransformation Id="GeneratePromotionCodeError" TransformationMethod="SetClaimIfBooleansMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="hasPromotionCode" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="true" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="Promotion code not found." />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="promotionCode" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • claimToMatch: true
  • 入力パラメーター:
    • matchTo: true
    • outputClaimIfMatched: "Promotion code not found."
  • 出力要求:
    • outputClaim: "Promotion code not found."

SetClaimsIfRegexMatch

文字列要求の claimToMatchmatchTo の入力パラメーターが等しいことをチェックし、出力要求を outputClaimIfMatched 入力パラメーターにある値で設定します。同時に結果の出力要求を比較します。これは比較の結果に基づいて true または false として設定されます。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
inputClaim claimToMatch string 比較する要求の種類。
InputParameter matchTo string 照合する正規表現。
InputParameter outputClaimIfMatched string 文字列が等しい場合に設定する値。
InputParameter extractGroups boolean [省略可能] Regex の一致でグループ値を抽出するかどうかを指定します。 指定できる値: true または false (既定値)。
OutputClaim outputClaim string 正規表現が一致する場合は、この出力要求に outputClaimIfMatched 入力パラメーターの値が含まれます。 一致するものがない場合は null になります。
OutputClaim regexCompareResultClaim boolean 正規表現で結果の出力要求の種類が照合されます。これは照合の結果に基づいて、true または false として設定されます。
OutputClaim 要求の名前 string extractGroups 入力パラメーターが true に設定されている場合は、この要求変換が呼び出された後に生成される要求の種類の一覧です。 要求の名前は、Regex グループ名と一致する必要があります。

SetClaimsIfRegexMatch の例

電話番号の正規表現パターンに基づいて、指定された電話番号が有効かどうかをチェックします。

<ClaimsTransformation Id="SetIsPhoneRegex" TransformationMethod="SetClaimsIfRegexMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="phone" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="^[0-9]{4,16}$" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="iPhone" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
    <OutputClaim ClaimTypeReferenceId="isPhoneBoolean" TransformationClaimType="regexCompareResultClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • claimToMatch:"64854114520"
  • 入力パラメーター:
    • matchTo: "^[0-9]{4,16}$"
    • outputClaimIfMatched: "Phone"
  • 出力要求:
    • outputClaim: "iPhone"
    • regexCompareResultClaim: true

抽出グループを含む SetClaimsIfRegexMatch の例

指定された電子メール アドレスが有効かどうかを確認し、電子メールの別名を返します。 抽出グループを使ったこの要求変換のライブ デモをご覧ください。

<ClaimsTransformation Id="GetAliasFromEmail" TransformationMethod="SetClaimsIfRegexMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="(?&lt;mailAlias&gt;.*)@(.*)$" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="isEmail" />
    <InputParameter Id="extractGroups" DataType="boolean" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
    <OutputClaim ClaimTypeReferenceId="isEmailString" TransformationClaimType="regexCompareResultClaim" />
    <OutputClaim ClaimTypeReferenceId="mailAlias" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • claimToMatch: "emily@contoso.com"
  • 入力パラメーター:
    • matchTo: (?&lt;mailAlias&gt;.*)@(.*)$
    • outputClaimIfMatched: "isEmail"
    • extractGroups: true
  • 出力要求:
    • outputClaim: "isEmail"
    • regexCompareResultClaim: true
    • mailAlias: emily

SetClaimsIfStringsAreEqual

文字列要求と matchTo 入力パラメーターが等しいことをチェックし、出力要求を stringMatchMsg および stringMatchMsgCode 入力パラメーターにある値で設定します。同時に結果の出力要求を比較します。これは比較の結果に基づいて true または false として設定されます。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim string 比較する要求の種類。
InputParameter matchTo string inputClaim と比較する文字列。
InputParameter stringComparison string 指定できる値: Ordinal または OrdinalIgnoreCase
InputParameter stringMatchMsg string 文字列が等しい場合に設定する最初の値。
InputParameter stringMatchMsgCode string 文字列が等しい場合に設定する 2 番目の値。
OutputClaim outputClaim1 string 文字列が等しい場合は、この出力要求に stringMatchMsg 入力パラメーターの値が含まれます。
OutputClaim outputClaim2 string 文字列が等しい場合は、この出力要求に stringMatchMsgCode 入力パラメーターの値が含まれます。
OutputClaim stringCompareResultClaim boolean 比較の結果の出力要求の種類。これは比較の結果に基づいて、true または false として設定されます。

SetClaimsIfStringsAreEqual の例

この要求変換を使用して、要求が、指定した値と等しいかどうかをチェックできます。 たとえば、以下の要求変換は termsOfUseConsentVersion 要求の値が v1 と等しいかどうかをチェックします。 等しい場合、値を v2 に変更します。

<ClaimsTransformation Id="CheckTheTOS" TransformationMethod="SetClaimsIfStringsAreEqual">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="v1" />
    <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
    <InputParameter Id="stringMatchMsgCode" DataType="string" Value="B2C_V1_90005" />
    <InputParameter Id="stringMatchMsg" DataType="string" Value="The TOS is upgraded to v2" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="outputClaim1" />
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeCode" TransformationClaimType="outputClaim2" />
    <OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeResult" TransformationClaimType="stringCompareResultClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim: v1
  • 入力パラメーター:
    • matchTo:V1
    • stringComparison: ordinalIgnoreCase
    • stringMatchMsgCode: B2C_V1_90005
    • stringMatchMsg: TOS は v2 にアップグレードされます
  • 出力要求:
    • outputClaim1:B2C_V1_90005
    • outputClaim2:TOS は v2 にアップグレードされます
    • stringCompareResultClaim: true

SetClaimsIfStringsMatch

文字列の要求と matchTo 入力パラメーターが等しいことをチェックし、出力要求を outputClaimIfMatched 入力パラメーターにある値で設定します。同時に結果の出力要求を比較します。これは比較の結果に基づいて true または false として設定されます。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim claimToMatch string 比較する要求の種類。
InputParameter matchTo string inputClaim と比較する文字列。
InputParameter stringComparison string 指定できる値: Ordinal または OrdinalIgnoreCase
InputParameter outputClaimIfMatched string 文字列が等しい場合に設定する値。
OutputClaim outputClaim string 文字列が等しい場合は、この出力要求に outputClaimIfMatched 入力パラメーターの値が含まれます。 または、文字列が一致しない場合は null です。
OutputClaim stringCompareResultClaim boolean 比較の結果の出力要求の種類。これは比較の結果に基づいて、true または false として設定されます。

SetClaimsIfStringsMatch の例

たとえば、以下の要求変換は ageGroup 要求の値が Minor と等しいかどうかをチェックします。 等しい場合は、値を B2C_V1_90001 に返します。

<ClaimsTransformation Id="SetIsMinor" TransformationMethod="SetClaimsIfStringsMatch">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="ageGroup" TransformationClaimType="claimToMatch" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="matchTo" DataType="string" Value="Minor" />
    <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
    <InputParameter Id="outputClaimIfMatched" DataType="string" Value="B2C_V1_90001" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isMinor" TransformationClaimType="outputClaim" />
    <OutputClaim ClaimTypeReferenceId="isMinorResponseCode" TransformationClaimType="stringCompareResultClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • claimToMatch:Minor
  • 入力パラメーター:
    • matchTo:Minor
    • stringComparison: ordinalIgnoreCase
    • outputClaimIfMatched: B2C_V1_90001
  • 出力要求:
    • isMinorResponseCode: true
    • isMinor: B2C_V1_90001

StringContains

指定した substring が入力要求内に出現しているかどうかが確認されます。 結果は、true または false の値を含む新しいブール値要求です。 値パラメーターがこの文字列内に存在する場合は true、それ以外の場合は false

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim string 検索する要求の種類。
InputParameter contains string 検索する値。
InputParameter ignoreCase string この比較で比較対象の文字列の大文字と小文字を無視するかどうかを指定します。
OutputClaim outputClaim string この要求変換が呼び出された後に生成される要求。 入力要求内で substring が出現した場合のブール値インジケーター。

StringContains の例

この要求変換は、文字列要求の種類に substring が含まれているかどうかをチェックする場合に使用します。 次の例では、roles 文字列要求の種類に admin の値が含まれているかどうかをチェックしています。

<ClaimsTransformation Id="CheckIsAdmin" TransformationMethod="StringContains">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim"/>
  </InputClaims>
  <InputParameters>
    <InputParameter  Id="contains" DataType="string" Value="admin"/>
    <InputParameter  Id="ignoreCase" DataType="string" Value="true"/>
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isAdmin" TransformationClaimType="outputClaim"/>
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim:"Admin, Approver, Editor"
  • 入力パラメーター:
    • contains: "admin,"
    • ignoreCase: true
  • 出力要求:
    • outputClaim: true

StringSubstring

指定した位置にある文字から始まる文字列要求の種類の一部が抽出され、指定した文字数が返されます。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim string 文字列を含む要求の種類。
InputParameter startIndex INT このインスタンス内の substring の 0 から始まる開始文字位置。
InputParameter length INT substring の文字数。
OutputClaim outputClaim string このインスタンスの startIndex から始まる長さの substring と等価な文字列。startIndex がこのインスタンスの長さと等しく、length がゼロの場合は空になります。

StringSubstring の例

たとえば、電話番号の国または地域のプレフィックスを取得します。

<ClaimsTransformation Id="GetPhonePrefix" TransformationMethod="StringSubstring">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
  </InputClaims>
<InputParameters>
  <InputParameter Id="startIndex" DataType="int" Value="0" />
  <InputParameter Id="length" DataType="int" Value="2" />
</InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="phonePrefix" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim: "+1644114520"
  • 入力パラメーター:
    • startIndex: 0
    • length: 2
  • 出力要求:
    • outputClaim: "+1"

StringReplace

要求の種類の文字列で指定した値が検索され、新しい要求の種類の文字列が返されます。ここでは、現在の文字列内の指定した文字列のすべての出現箇所が、別の指定した文字列に置き換えられます。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim string 文字列を含む要求の種類。
InputParameter oldValue string 検索対象の文字列。
InputParameter newValue string 出現するすべての oldValue を置換する文字列
OutputClaim outputClaim boolean oldValue のすべてのインスタンスが newValue で置き換えられることを除いて、現在の文字列と等価な文字列。 oldValue が現在のインスタンス内に見つからない場合、メソッドにより現在のインスタンスが変更せずに返されます。

StringReplace の例

たとえば、電話番号の - 文字が削除されて正規化されます

<ClaimsTransformation Id="NormalizePhoneNumber" TransformationMethod="StringReplace">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
  </InputClaims>
<InputParameters>
  <InputParameter Id="oldValue" DataType="string" Value="-" />
  <InputParameter Id="newValue" DataType="string" Value="" />
</InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim: "+164-411-452-054"
  • 入力パラメーター:
    • oldValue: "-"
    • newValue: ""
  • 出力要求:
    • outputClaim: "+164411452054"

StringJoin

指定した文字列コレクションの要求の種類の要素を連結します。各要素またはメンバーの間には、指定した区切り記号が使用されます。

この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim stringCollection 連結する文字列を格納しているコレクション。
InputParameter delimiter string 区切り記号として使用する文字列 (コンマ , など)。
OutputClaim outputClaim string inputClaim 文字列コレクションのメンバーからなる、delimiter 入力パラメーターで区切られた文字列。

StringJoin の例

次の例では、ユーザー ロールの文字列コレクションが取得され、それがコンマ区切り文字列に変換されています。 このメソッドを使用して、Azure AD B2C ユーザー アカウントに文字列コレクションを保存できます。 後でディレクトリからアカウントを読み取るときに、StringSplit を使用してコンマ区切り文字列を文字列コレクションに戻します。

<ClaimsTransformation Id="ConvertRolesStringCollectionToCommaDelimiterString" TransformationMethod="StringJoin">
  <InputClaims>
   <InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter DataType="string" Id="delimiter" Value="," />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="rolesCommaDelimiterConverted" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim: [ "Admin", "Author", "Reader" ]
  • 入力パラメーター:
    • delimiter: ","
  • 出力要求:
    • outputClaim: "Admin,Author,Reader"

StringSplit

指定された文字列の要素で区切られた、このインスタンスの substring を格納する文字列配列が返されます。 この要求変換のライブ デモをご覧ください。

要素 TransformationClaimType データ型 Notes
InputClaim inputClaim string 分割する substring を含む文字列要求の種類。
InputParameter delimiter string 区切り記号として使用する文字列 (コンマ , など)。
OutputClaim outputClaim stringCollection delimiter 入力パラメーターで区切られた文字列の要素に substring を格納する文字列コレクション。

注意

OutputClaim stringCollection 内の既存の要素はすべて削除されます。

StringSplit の例

次の例では、ユーザー ロールのコンマ区切り文字列が取得され、それが文字列コレクションに変換されています。

<ClaimsTransformation Id="ConvertRolesToStringCollection" TransformationMethod="StringSplit">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="rolesCommaDelimiter" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
  <InputParameter DataType="string" Id="delimiter" Value="," />
    </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="roles" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 入力要求:
    • inputClaim: Admin,Author,Reader
  • 入力パラメーター:
    • delimiter: ","
  • 出力要求:
    • outputClaim: [ "Admin", "Author", "Reader" ]

文字列要求変換式

Azure AD B2C のカスタム ポリシーにおける要求変換式は、テナント ID と技術プロファイル ID についてのコンテキスト情報を提供します。

説明
{TechnicalProfileId} 技術プロファイル ID の名前。 Facebook-OAUTH
{RelyingPartyTenantId} 証明書利用者ポリシーのテナント ID。 your-tenant.onmicrosoft.com
{TrustFrameworkTenantId} 信頼フレームワークのテナント ID。 your-tenant.onmicrosoft.com

次の手順

  • その他の要求変換のサンプルについては、Azure AD B2C コミュニティの GitHub リポジトリをご覧ください