我正在通过自定义策略调用REST API。 我在请求正文中发送JSON数据,示例JSON数据为“
我有点困惑如何从自定义策略中发送以下JSON(地址和联系人)作为输入声明。
{
"firstName": "sampleuser",
"lastName": "qa",
"addresses": [
{
"countryCode": "IN"
}
],
"contacts": {
"email": {
"address": "sampleuserqa@mailinator.com"
}
}
}
答案 0 :(得分:1)
B2C只能根据其自己的声明类型原语构建JSON。分别是int,boolean,datetime,string,stringCollection。
例如,通过在REST API技术资料中输出以下声明:
<OutputClaim ClaimTypeReferenceId="firstName" />
<OutputClaim ClaimTypeReferenceId="lastName" />
<OutputClaim ClaimTypeReferenceId="addresses" />
具有以下定义:
<ClaimType Id="firstName">
<DisplayName>firstName</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="lastName">
<DisplayName>lastName</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="addresses">
<DisplayName>addresses</DisplayName>
<DataType>stringCollection</DataType>
</ClaimType>
API的最终JSON负载将是
{
"firstName": "sampleuser",
"lastName": "qa",
"addresses": "X, Y, Z",
}
由于我们自己不对json对象建模,因此我们无法构建JSON负载,如:
"addresses": [
{
"countryCode": "IN"
}
],
"contacts": {
"email": {
"address": "sampleuserqa@mailinator.com"
}
}
根据您如何从用户或后端系统获取此信息,此JSON声明转换可能有助于将数据拆分为string / stringCollections以将数据发送至API。
https://docs.microsoft.com/en-us/azure/active-directory-b2c/json-transformations
https://docs.microsoft.com/en-us/azure/active-directory-b2c/stringcollection-transformations