为了账号安全,请及时绑定邮箱和手机立即绑定

无用户 自动化服务器到服务器 Oauth2 2 条腿身份验证到 Gmail

无用户 自动化服务器到服务器 Oauth2 2 条腿身份验证到 Gmail

Go
富国沪深 2022-09-19 21:18:19
我已经找到了大量关于使用用户授权步骤实现Oauth2的信息,但是我正在尝试运行一个容器,该容器会自动抓取gmail收件箱以获取附件,并将其导出到prometheus,并且我很难弄清楚如何实现此库:https://pkg.go.dev/golang.org/x/oauth2/clientcredentials#Config 或任何其他内容来检索令牌而无需手动用户步骤。在 Go 中执行此操作是否需要编写直接 API 调用,因为我找不到现有库来处理此方案?创建谷歌应用密码并使用通用用户/通过SMTP身份验证更有意义吗?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

首先,我明白你想做什么。

您有一个在容器中运行的后端系统,该系统将访问单个gmail帐户并处理电子邮件。

现在,您需要了解正在使用的 API 的限制。

有两种类型的授权用于访问私人用户数据

  1. 服务帐户 - 服务器到服务器的交互仅适用于工作区域。无需授权弹出窗口。

  2. Oauth2 - 授权普通用户的gmail帐户,需要用户交互才能授权同意屏幕

如果您没有工作区帐户,并且这是一个普通的gmail用户,那么您别无选择,必须使用Oauth2,这将要求用户至少授权一次应用程序。

使用 Oauth2,您可以请求脱机访问并接收刷新令牌,您可以随时使用它来请求新的访问令牌。问题是,您的应用程序将需要投入生产并进行验证,因为您的刷新令牌只能工作七天,然后它将过期。若要解决此问题并获取未过期的刷新令牌,意味着应用程序必须在生产中并经过验证。这意味着您需要使用受限的gmail范围进行Google的验证过程,这需要第三方安全检查,并且费用在15k - 75k之间,具体取决于您的应用程序。

我知道这是一个单用户系统,但这并不意味着你仍然需要通过验证。当Google添加应用程序验证的需求时,他们没有考虑像您这样的单用户系统。

选择

您是否考虑过直接通过SMPT服务器而不是使用Gmail API?如果您使用应用程序密码,则应通过使用登录名和应用程序密码登录来绕过所有内容。



查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 70 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信