本文提供了有关在 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”
 
 
后续步骤
- 在 Azure AD B2C 社区 GitHub 存储库上查找更多声明转换示例