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



我们正在为AWS中的SSO设置一些自动化,但我遇到了一个问题。

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

IAMRole字段的信息类型设置为文本编号。的值设置为Multi-value,因此我将其放入用于此API请求的数组中。

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

以下是我在谷歌应用程序脚本中的功能:

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:nn%sn", JSON.stringify(schema))
schema["AWSLab"] = { "IAMRole": [{ "type": "work", "value": role }] }
Logger.log("schema after:nn%sn", JSON.stringify(schema))
AdminDirectory.Users.update(userFull, email) // line 35
}
}

当这个功能运行时,我看到这个错误:

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

我现在有一些额外的行,用于输出一些详细信息以进行故障排除,但这无助于我发现问题。

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

在创建时,模式有一个不同的名称,然后在某个时刻进行编辑。

实现这一点的关键是用一些伪数据填充用户的相关模式字段,然后通过API用GET将用户拉出并检查JSON。

最新更新