StringCollection 声明转换
本文提供了在 Azure Active Directory B2C (Azure AD B2C) 中使用标识体验框架架构的字符串集合声明转换的示例。 有关详细信息,请参阅声明转换。
AddItemToStringCollection
将 string 声明添加到新的唯一值 stringCollection 声明。 查看此声明转换的实时演示。
元素 | TransformationClaimType | 数据类型 | 说明 |
---|---|---|---|
InputClaim | 元素 | string | 要添加到输出声明的 ClaimType。 |
InputClaim | collection | stringCollection | 要添加到输出声明的字符串集合。 如果集合包含项,则声明转换会复制这些项,并将这些项添加到输出集合声明的末尾。 |
OutputClaim | collection | stringCollection | 调用此声明转换后生成的 ClaimType,其值在输入声明中指定。 |
使用此声明转换将字符串添加到新的或现有的 stringCollection。 它通常用于 AAD-UserWriteUsingAlternativeSecurityId 技术配置文件。 在创建新的社交帐户之前,CreateOtherMailsFromEmail 声明转换会读取 ClaimType,并将值添加到 otherMails ClaimType。
AddItemToStringCollection 示例
以下声明转换会将 email 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 | collection | stringCollection | 要添加到输出声明的字符串集合。 如果集合包含项,则声明转换会复制这些项,并将这些项添加到输出集合声明的末尾。 |
InputParameter | 元素 | string | 要添加到输出声明的值。 |
OutputClaim | collection | 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 | collection | stringCollection | 由声明转换用于获取项的 ClaimTypes。 |
OutputClaim | extractedItem | string | 调用此 ClaimsTransformation 后生成的 ClaimType。 集合中的第一项。 |
GetSingleItemFromStringCollection 示例
以下示例读取 otherMails 声明,并将第一项返回到 email 声明中。
<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 | item | string | 要搜索的值。 |
InputParameter | ignoreCase | string | 指定此比较是否应忽略所比较字符串的大小写。 |
OutputClaim | outputClaim | boolean | 调用此 ClaimsTransformation 后生成的 ClaimType。 布尔指示符(如果集合包含这样的字符串) |
StringCollectionContains 示例
以下示例检查 roles
stringCollection 声明类型是否包含 admin 值。
<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"]
- 输入参数:
- item:“Admin”
- ignoreCase: "true"
- 输出声明:
- outputClaim: "true"
StringCollectionContainsClaim
检查 StringCollection 声明类型是否包含声明值。 查看此声明转换的实时演示。
元素 | TransformationClaimType | 数据类型 | 说明 |
---|---|---|---|
InputClaim | collection | stringCollection | 要搜索的声明。 |
InputClaim | item | string | 包含要搜索的值的声明类型。 |
InputParameter | ignoreCase | string | 指定此比较是否应忽略所比较字符串的大小写。 |
OutputClaim | outputClaim | boolean | 调用此 ClaimsTransformation 后生成的 ClaimType。 布尔指示符(如果集合包含这样的字符串) |
StringCollectionContainsClaim 示例
以下示例检查 roles
stringCollection 声明类型是否包含 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"]
- item:“Admin”
- 输入参数:
- ignoreCase: "true"
- 输出声明:
- outputClaim: "true"
后续步骤
- 在 Azure AD B2C 社区 GitHub 存储库中查看更多声明转换示例