当前位置: 首页 > 知识库问答 >
问题:

使用应用程序默认凭据使用服务帐户模拟用户

璩无尘
2023-03-14

我正在尝试在 Go 应用引擎部署上使用具有域范围委派 (DwD) 的服务帐户。

我已按照使用 Google 应用程序默认凭据的步骤将服务帐户与应用引擎配合使用。

我让代码在我的开发计算机上本地运行,但我被困在从我的域中检索实际数据。

我用的是Admin SDK。在“向您的服务帐户授予域范围的权限”一节中,它说我的“服务帐户需要模拟其中一个用户来访问Admin SDK Directory API”。

我已经阅读了有关继续使用服务帐户和用户模拟的文档,还仔细阅读了源代码。它没有指出我可以在哪里输入用户的电子邮件地址/身份以进行模拟。

这是我得到的错误:

googleapi: Error 404: Domain not found., notFound

源代码确实显示了一些线索,但在尝试使用应用程序默认凭据以外的其他内容时,我遇到了其他障碍。

有人知道吗?提前感谢。

共有2个答案

邰伟彦
2023-03-14

似乎对于AdminSDK,我需要请求用户(管理员)访问目录API的权限。这与其他API完全不同,我只需设置用户电子邮件地址即可访问指定用户的数据。

我想这是可以理解的,因为Admin SDK是一个更强大的API,它影响域,而不仅仅是个人用户。

赫连黎昕
2023-03-14

今天我们遇到了同样的问题,但使用三管齐下的OAuth2实际上并不可行,因为我们不想使用API更改目录,而是要检查通过App Engine用户API登录的用户的组成员身份。

这让我创建了这个库:https://github.com/iamacarpet/go-gae-dwd-tokensource

它创建一个支持模拟的自定义JWT,使用内置功能使用默认服务帐户对其进行签名,然后将其发送到令牌endpoint以获取access_token。

获取访问令牌的效率不如默认函数,但在我的测试中,组成员身份检查的延迟约为20毫秒,而不是450毫秒,因此这不是问题。

我在 GitHub 页面上的一个中间件中提供了一个使用它的示例。

 类似资料:
  • 问题内容: 我正在尝试在具有Go的App Engine部署中使用具有域范围委托(DwD)的服务帐户。 我已经按照步骤使用Google应用程序默认凭据在App Engine中使用服务帐户。 我的代码在我的开发机器上本地运行,但是我一直坚持从域中检索实际数据。 我正在使用Admin SDK。在“将域范围的权限委派给您的服务帐户”部分下,它说我“服务帐户需要模拟其中一个用户来访问Admin SDK Di

  • 我有一个服务帐户,并且我正在向其中一个真实用户授予此服务帐户上的“服务帐户用户”角色。用户已将“应用程序默认凭据”设置为其配置的一部分,以避免每次运行时出现登录屏幕。我不确定此用户运行操作只有服务帐户才能访问的某些资源的代码的最佳方式是什么。出于安全原因,我不想使用服务帐户密钥 JSON 文件。我正在尝试以下代码 我收到错误:属性错误:“凭据”对象没有属性“with_subject”

  • 我当前正在尝试访问云API,但收到以下错误:

  • 问题内容: 我想访问一些Google API服务: GDrive API 联系API 人物API 而且,我正在努力模拟oauth2模拟服务帐户流程(您知道一个:Google Oauth v2- 服务帐户说明。要进行模拟,您需要在google应用控制台中应用“委派域范围的授权”,请下载相应的pk12文件并在Google控制台项目中激活api。 此刻我总是得到: 这是我的代码: 我还通过stackov

  • 我已经确定,最好的方法是使用应用程序拥有的常规驱动器帐户,如下所述: 使用普通Google帐户作为应用程序拥有的帐户 这要求我们为用户获取OAuth2凭据。上面链接的文章链接到了一篇关于这样做的第二篇文章: