我正在寻找一种使用管理员用户冒充谷歌应用领域用户的方法。我可以使用谷歌数据文档列表api轻松完成,但我无法找到一种方法来使用新的Drive API。
准确地说,我想要做的是使用Oauth2验证我的管理员用户(我已经这样做了),检索我的域用户列表然后冒充我的用户,或者至少能够访问文件和来自这些用户的云端硬盘的文档。
在谷歌应用程序的管理面板中,有Oauth使用者密钥和Oauth使用者密钥,但这些密钥用于Oauth1 2LO,而不是Oauth2。
有没有正确的方法/解决方法/黑客来实现我想要的东西?
致以最诚挚的问候,
杰罗姆
答案 0 :(得分:2)
我只是将google-api-ruby-client视为一个例子,但您应该能够通过管理面板允许访问的服务帐户执行此操作 - >高级工具 - >管理第三方oauath客户。获得许可后,您可以在此处按照http://code.google.com/p/google-api-ruby-client/source/browse/service_account/analytics.rb?repo=samples服务帐户的示例进行操作,而不是使用
进行授权client.authorization = asserter.authorize()
你可以使用
client.authorization = asserter.authorize("id@domain.com")
我还没有做过很多这方面的事情,但在通过此方法进行身份验证后,我已经能够列出用户在我的域上拥有的所有文档。
答案 1 :(得分:2)
感谢詹姆斯伍德沃德,我已经能够冒充用户了。我发布了一个答案来提供Java特定的细节。
以这种方式创建GoogleCredential
:
GoogleCredential serviceCred = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ID)
.setServiceAccountScopes(Arrays.asList(SCOPES))
.setServiceAccountUser("impersonated.user@domain.com")
.setServiceAccountPrivateKeyFromP12File("key.p12")
.build();
现在可以使用这些凭据来验证应用在任何授权范围内发出的请求。