Gsuit admin sdk如何找到特定用户分配的角色

时间:2018-01-25 09:45:09

标签: google-admin-sdk gsuite

很好的文档here在Gsuit中有6个预建管理员角色,我们可以为用户分配任何自定义角色

  • 超级管理员
  • 群组管理员
  • 用户管理管理员
  • 帮助台管理员
  • 服务管理员
  • 经销商管理员

我可以使用admin.directory.rolemanagement获取任何gsuit帐户中的所有角色,响应项目包含所有6个角色的列表 -

  • _SEED_ADMIN_ROLE
  • _GROUPS_ADMIN_ROLE
  • _USER_MANAGEMENT_ADMIN_ROLE
  • _HELP_DESK_ADMIN_ROLE
  • _SERVICE_ADMIN_ROLE
  • _PLAY_FOR_WORK_ADMIN_ROLE

以下是样本回复。

{
 "kind": "admin#directory#roles",
 "etag": "\"BHP2ZsIq1HPrqEG_xY7Tkngn4lU/aNSm49szAAWjtQ6SLWG_peDst5I\"",
 "items": [
  {
   "kind": "admin#directory#role",
   "etag": "\"BHP2ZsIq1HPrqEG_xY7Tkngn4lU/GNyl5JrVAyPUAIIlrwnibCSKClQ\"",
   "roleId": "11870025812017153",
   "roleName": "_SEED_ADMIN_ROLE",
   "roleDescription": "Google Apps Administrator Seed Role",
   "isSystemRole": true,
   "isSuperAdminRole": true
  },
  {
  ...Role2
  },
  ....
]
}

但我无法找到特定用户分配的角色

当我使用G Suite Admin SDK获取任何用户详细信息时 得到以下样本json

{
 "kind": "admin#directory#user",
 "id": "1071482697096977",
 "etag": "\"BHP2ZsIq1HPrqEG_xY7Tkngn4lU/xqnEb7WwzCINHQT7UJn28\"",
 "primaryEmail": "xyz@demo.zxy.com",
 "name": {},
 "isAdmin": false,
 "isDelegatedAdmin": false,,
 "suspended": false,
 "ipWhitelisted": false,
 "emails": [
  {
   "address": "",
   "primary": true
  }
 ],
 "nonEditableAliases": [""],
 "customerId": "accounts customerId",
 "orgUnitPath": "/",
 "isMailboxSetup": true,
 "isEnrolledIn2Sv": false,
 "isEnforcedIn2Sv": false,
 "includeInGlobalAddressList": true
}

有没有办法识别上面6个角色中的哪一个被分配给用户,因为在admin sdk API中返回一个键 isAdmin 。这个 isAdmin 会是如果为用户分配了任何类型的管理员角色,则为true。

1 个答案:

答案 0 :(得分:1)

https://developers.google.com/admin-sdk/directory/v1/reference/roleAssignments/list?apix_params=%7B%22customer%22%3A%22C00rz37xc%22%2C%22roleId%22%3A%2241816136601305092%22%7D

您可以使用此API列出已分配了特定角色(通过传递角色ID)和特定域(客户ID)的所有用户。

用户密钥有一个可选的查询参数,如果通过该参数,它将帮助您了解是否已为该特定用户分配了该角色。

它适用于所有委派的管理员,我想这就是您所需要的,因为无论如何,超级管理员(isAdmin)都可以访问该特定角色。

P.S我知道对于提出这个问题的人来说可能为时已晚,但是任何需要弄清楚这个问题的人,这个答案都适合您。