我有一个内部应用程序,用户应该可以使用我们公司的G Suite凭据登录。我在G Suite中做了几个自定义角色,我打算在应用程序中使用这些角色来确定他们可以在其中做什么。
我正在使用Passport进行OAuth2调用,而我正在使用的范围如下:
scope: [
'email',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly'
]
列表中的最后一个授予我访问权限,以列出我的应用程序中已登录用户的所有角色。
然后我打电话给https://www.googleapis.com/admin/directory/v1/customer/<MY_CUSTOMER_ID>/roleassignments?userKey=<MY_USER_ID>
,并获得用户已分配给他们的角色列表。
问题是,如果我使用我的超级管理员用户,一切都很好,但是当使用没有超级管理员权限的测试用户时,我会从Google API中获得以下信息:
{
errors: [
{
domain: 'global',
reason: 'forbidden',
message: 'Not Authorized to access this resource/api'
}
],
code: 403,
message: 'Not Authorized to access this resource/api'
}
我很确定我需要授予对在G Suite中创建的自定义角色的访问权限,但是我不知道该怎么做。我尝试在Role Admin Privileges视图中打勾所有内容,但没有任何效果。仅当我赋予我的测试帐户“超级管理员”特权时,对Google API的调用才能起作用。
经过一些调查,显然不可能这样做。
出于某种原因,即使通过身份验证,用户也无法获得自己的自定义角色。因此,我必须创建一个服务帐户,并使该帐户模拟具有管理员权限的用户,以获取角色分配。