次の方法で共有

StringCollection 声明转换

本文提供了有关在 Azure Active Directory B2C(Azure AD B2C)中使用标识体验框架架构的字符串集合声明转换的示例。 有关详细信息,请参阅 声明转换

AddItemToStringCollection

将字符串声明添加到新的唯一值 stringCollection 声明。 查看此声明转换的 实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim 字符串 要添加到输出声明的 ClaimType。
InputClaim 收藏 stringCollection 要添加到输出声明的字符串集合。 如果集合包含项,则声明转换将复制项,并将该项添加到输出集合声明的末尾。
OutputClaim 收藏 stringCollection 调用此声明转换后生成的 ClaimType,并在输入声明中指定的值。

使用此声明转换将字符串添加到新的或现有的 stringCollection。 它通常用于 AAD-UserWriteUsingAlternativeSecurityId 技术配置文件。 在创建新的社交帐户之前, CreateOtherMailsFromEmail 声明转换将读取 ClaimType 并将该值添加到 其他Mails ClaimType。

AddItemToStringCollection 的示例

以下声明转换将 电子邮件 ClaimType 添加到 otherMails ClaimType。

<ClaimsTransformation Id="CreateOtherMailsFromEmail" TransformationMethod="AddItemToStringCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="item" />
    <InputClaim ClaimTypeReferenceId="otherMails" TransformationClaimType="collection" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="otherMails" TransformationClaimType="collection" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • collection: [“someone@outlook.com”]
    • item: “admin@contoso.com”
  • 输出声明:
    • collection: [“”someone@outlook.com, “admin@contoso.com”]

AddParameterToStringCollection

将字符串参数添加到新的唯一值 stringCollection 声明。 查看此声明转换的 实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim 收藏 stringCollection 要添加到输出声明的字符串集合。 如果集合包含项,则声明转换将复制项,并将该项添加到输出集合声明的末尾。
InputParameter 字符串 要添加到输出声明的值。
OutputClaim 收藏 stringCollection 调用此声明转换后生成的 ClaimType,并在输入参数中指定的值。

AddParameterToStringCollection 的示例

以下示例将常量电子邮件地址 (admin@contoso.com) 添加到 otherMails 声明。

<ClaimsTransformation Id="SetCompanyEmail" TransformationMethod="AddParameterToStringCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="otherMails" TransformationClaimType="collection" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="item" DataType="string" Value="admin@contoso.com" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="otherMails" TransformationClaimType="collection" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • collection: [“someone@outlook.com”]
  • 输入参数
    • item: “admin@contoso.com”
  • 输出声明:
    • collection: [“”someone@outlook.com, “admin@contoso.com”]

GetSingleItemFromStringCollection

从提供的字符串集合中获取第一项。 查看此声明转换的 实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim 收藏 stringCollection 声明转换用于获取项的 ClaimTypes。
OutputClaim extractedItem 字符串 调用此 ClaimsTransformation 后生成的 ClaimType。 集合中的第一项。

GetSingleItemFromStringCollection 的示例

以下示例读取 otherMails 声明,并将第一个项目返回到 电子邮件 声明。

<ClaimsTransformation Id="CreateEmailFromOtherMails" TransformationMethod="GetSingleItemFromStringCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="otherMails" TransformationClaimType="collection" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="extractedItem" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • collection: [“”someone@outlook.com, “someone@contoso.com”]
  • 输出声明:
    • extractedItem: “someone@outlook.com”

StringCollectionContains

检查 StringCollection 声明类型是否包含元素。 查看此声明转换的 实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim inputClaim stringCollection 要搜索的声明。
InputParameter 字符串 要搜索的值。
InputParameter ignoreCase 字符串 指定此比较是否应忽略要比较的字符串大小写。
OutputClaim outputClaim 布尔 调用此 ClaimsTransformation 后生成的 ClaimType。 如果集合包含此类字符串,则为布尔指示器

StringCollectionContains 的示例

以下示例检查 stringCollection 声明类型是否 roles 包含 管理员的值。

<ClaimsTransformation Id="IsAdmin" TransformationMethod="StringCollectionContains">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim"/>
  </InputClaims>
  <InputParameters>
    <InputParameter  Id="item" DataType="string" Value="Admin"/>
    <InputParameter  Id="ignoreCase" DataType="string" Value="true"/>
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="isAdmin" TransformationClaimType="outputClaim"/>
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • inputClaim: [“reader”, “author”, “admin”]
  • 输入参数:
    • 项目:“管理员”
    • ignoreCase:“true”
  • 输出声明:
    • outputClaim: “true”

StringCollectionContainsClaim

检查 StringCollection 声明类型是否包含声明值。 查看此声明转换的 实时演示

元素 TransformationClaimType 数据类型 注释
InputClaim 收藏 stringCollection 要搜索的声明。
InputClaim 字符串 包含要搜索的值的声明类型。
InputParameter ignoreCase 字符串 指定此比较是否应忽略要比较的字符串大小写。
OutputClaim outputClaim 布尔 调用此 ClaimsTransformation 后生成的 ClaimType。 如果集合包含此类字符串,则为布尔指示器

StringCollectionContainsClaim 的示例

以下示例检查 stringCollection 声明类型是否 roles 包含声明类型的值 role

<ClaimsTransformation Id="HasRequiredRole" TransformationMethod="StringCollectionContainsClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="collection" />
    <InputClaim ClaimTypeReferenceId="role" TransformationClaimType="item" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="ignoreCase" DataType="string" Value="true" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="hasAccess" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation> 
  • 输入声明:
    • collection: [“reader”, “author”, “admin”]
    • 项目:“管理员”
  • 输入参数:
    • ignoreCase:“true”
  • 输出声明:
    • outputClaim: “true”

后续步骤