我正在跟踪https://aws.amazon.com/blogs/security/how-to-set-up-federated-single-sign-on-to-aws-using-google-apps/并尝试设置一个脚本,为我的Google用户打上SSO AWS角色的补丁。
使用https://developers.google.com/admin-sdk/directory/v1/reference/users/patch中列出的范围,我已经正确地进行了身份验证,并通过执行以下简单操作进行了确认:
service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute()
成功返回一个用户列表。但是,当我尝试使用
执行补丁查询时: service.users().patch(body=body, userKey=user_email).execute()
响应是"Not Authorized to access this resource/api"。
这个端点在某些方面是特殊的吗?似乎成功访问此资源的唯一方法是使用超级管理员帐户进行身份验证,我不希望这样做。
请注意,在目录API:授权请求中提到,
你的应用程序必须使用OAuth 2.0来授权请求。不支持其他授权协议。如果您的应用程序使用Google Sign-In,则会为您处理授权的某些方面。
因此,我建议您使用OAuth 2.0的授权请求。
你也可以从这些SO帖子中检查为什么会遇到这样的错误的其他可能性:
- Google_Service_Directory -(403)未被授权访问此资源/api
问题的根源是服务帐户不是域的管理员,因此它无法访问Admin SDK Directory API。相反,您需要为您的服务帐户启用域范围的委托,然后让服务帐户在发出请求时模拟域管理员。
- Google Directory API调用users().list().execute()返回Not Authorized
希望有帮助!