GSuite Admin SDK > Directory API:如何将值添加到用户的自定义架构?

GSuite Admin SDK > Directory API: How do I add values to a custom schema for a user?

我们正在为 AWS 设置一些围绕 SSO 的自动化,但我 运行 遇到了问题。

有一个名为 AWSLab 的自定义用户属性,如果用户没有为此属性填充任何 IAMRole 值,那么我需要添加一个。

IAMRole 字段的 信息类型 设置为 文本 否。在 GSuite 端,值 设置为 多值 ,所以我将它放入一个数组中用于此 API 请求。

此外,当我对用户执行 GET 并查看附加的其他模式时,我看到这个名为 type 的键设置为 work,所以我也包括了它。

下面是我在 Google Apps 脚本中的函数:

function check_user_access(){
  var email = 'user@domain.com';
  var role = [
    'arn:aws:iam::123456789012:role/User',
    'arn:aws:iam::123456789012:saml-provider/GoogleAppsProvider'
  ].join(',')

  optArgs = {
    projection: "full"
  }

  var user = AdminDirectory.Users.get(email, optArgs)
  var schema = user.customSchemas

  Logger.log("typeof(schema): %s", typeof(schema))

  if(schema["AWSLab"]) {
    Logger.log("schema[\"AWSLab\"] found on user '%s': %s", email, schema["AWSLab"])
  } else {
    Logger.log("schema[\"AWSLab\"] not found! Updating...")

    Logger.log("schema before:\n\n%s\n", JSON.stringify(schema))
    schema["AWSLab"] = { "IAMRole": [{ "type": "work", "value": role }] }
    Logger.log("schema after:\n\n%s\n", JSON.stringify(schema))

    AdminDirectory.Users.update(userFull, email) // line 35
  }
}

当这个函数 运行s 时,我看到这个错误:

Invalid Input: [AWSLab] (line 35, file "Labs")

我现在有一些额外的行,可以输出一些详细信息以进行故障排除,但这并不能帮助我发现问题。

事实证明,问题出在自定义架构的名称上。

在创建时,架构有一个不同的名称,然后在某个时候进行了编辑。

解决这个问题的关键是用一些虚拟数据填充用户的相关模式字段,然后通过 API 使用 GET 将用户拉出并检查 JSON。