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。
我们正在为 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。