使用应用程序默认凭据模拟服务帐户的用户
User Impersonation with Service Account using Application Default Credentials
我正在尝试在带有 Go 的 App Engine 部署中使用具有全域委派 (DwD) 的服务帐户。
我已按照使用 Google Application Default Credentials 的步骤在 App Engine 中使用服务帐户。
我在我的开发机器上本地获得了代码 运行,但我无法从我的域中检索实际数据。
我正在使用 Admin SDK. Under the section Delegate domain-wide authority to your service account,它说我的 "service account needs to impersonate one of those users to access the Admin SDK Directory API"。
我已经查看了 Go on using service account and user impersonation 的文档,并且还仔细阅读了源代码。它没有指出我可以在哪里输入用户的电子邮件 address/identity 来模拟。
这是我得到的错误:
googleapi: Error 404: Domain not found., notFound
源代码确实显示了一些线索,但我在尝试使用应用程序默认凭据以外的东西时遇到了其他障碍。
有人知道吗?提前致谢。
对于 Admin SDK,我似乎需要请求用户(管理员)访问目录 API 的权限。这与其他 APIs 完全不同,我只是简单地设置用户电子邮件地址以访问指定用户的数据。
我想这是可以理解的,因为 Admin SDK 更强大 API 影响域而不仅仅是个人用户。
今天刚遇到同样的问题,但使用三管齐下的 OAuth2 并不可行,因为我们不想使用 API 更改目录,而是检查用户的组成员资格通过 App Engine 用户登录的用户 API.
这促使我创建了这个库:https://github.com/iamacarpet/go-gae-dwd-tokensource
它创建一个支持模拟的自定义 JWT,使用内置功能使用默认服务帐户对其进行签名,然后将其触发到令牌端点以获得 access_token。
获取访问令牌的效率不如默认函数,但在我的测试中,延迟约为 20 毫秒,而组成员检查的延迟约为 450 毫秒,因此这不是问题。
我在 GitHub 页面的 negroni 中间件中包含了一个使用它的示例。
我正在尝试在带有 Go 的 App Engine 部署中使用具有全域委派 (DwD) 的服务帐户。
我已按照使用 Google Application Default Credentials 的步骤在 App Engine 中使用服务帐户。
我在我的开发机器上本地获得了代码 运行,但我无法从我的域中检索实际数据。
我正在使用 Admin SDK. Under the section Delegate domain-wide authority to your service account,它说我的 "service account needs to impersonate one of those users to access the Admin SDK Directory API"。
我已经查看了 Go on using service account and user impersonation 的文档,并且还仔细阅读了源代码。它没有指出我可以在哪里输入用户的电子邮件 address/identity 来模拟。
这是我得到的错误:
googleapi: Error 404: Domain not found., notFound
源代码确实显示了一些线索,但我在尝试使用应用程序默认凭据以外的东西时遇到了其他障碍。
有人知道吗?提前致谢。
对于 Admin SDK,我似乎需要请求用户(管理员)访问目录 API 的权限。这与其他 APIs 完全不同,我只是简单地设置用户电子邮件地址以访问指定用户的数据。
我想这是可以理解的,因为 Admin SDK 更强大 API 影响域而不仅仅是个人用户。
今天刚遇到同样的问题,但使用三管齐下的 OAuth2 并不可行,因为我们不想使用 API 更改目录,而是检查用户的组成员资格通过 App Engine 用户登录的用户 API.
这促使我创建了这个库:https://github.com/iamacarpet/go-gae-dwd-tokensource
它创建一个支持模拟的自定义 JWT,使用内置功能使用默认服务帐户对其进行签名,然后将其触发到令牌端点以获得 access_token。
获取访问令牌的效率不如默认函数,但在我的测试中,延迟约为 20 毫秒,而组成员检查的延迟约为 450 毫秒,因此这不是问题。
我在 GitHub 页面的 negroni 中间件中包含了一个使用它的示例。