如何将JSON对象数组传递给REST API作为自定义策略中的输入声明

时间:2019-07-31 07:07:10

标签: azure azure-active-directory azure-ad-b2c

我正在通过自定义策略调用REST API。 我在请求正文中发送JSON数据,示例JSON数据为“

我有点困惑如何从自定义策略中发送以下JSON(地址和联系人)作为输入声明。

{
  "firstName": "sampleuser",
  "lastName": "qa",
  "addresses": [
    {
      "countryCode": "IN"
    }
  ],
  "contacts": {
    "email": {
      "address": "sampleuserqa@mailinator.com"
    }
  }
}

1 个答案:

答案 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