oauth-2.0 为什么Google Admin API需要这个模糊的属性来确认某人是否是Google Group的成员?

bq8i3lrv  于 2022-10-31  发布在  Go
关注(0)|答案(2)|浏览(172)

我在我的应用程序前面设置了OAuth2-proxy作为反向代理,遵循their instructions。反向代理使用Google帐户进行身份验证,并使用现有的Google组进行授权,按照相同的说明。
对于群中的一些幸运成员来说,一切都正常。群中的其他被诅咒成员则被拒绝访问。
日志显示,Google Admin API的响应是,每封幸运的电子邮件实际上都是该组的成员,但每封被诅咒的电子邮件都被错误地报告为不是该组的成员。
幸运者和被诅咒者之间有什么区别?检查我的组织和项目的https://console.cloud.google.com/iam-admin/groups/时,会显示一个带有奇怪的Type图标的表。

所有五个带有图标的组成员都是幸运的:Google API会确认他们是群组的成员。2所有没有图标的四个成员都被诅咒了。
类型图标与类型google.apps.cloudidentity.groups.vx.membership.type.user相关联。五个幸运的成员都有这种类型。四个被诅咒的成员没有。这种类型是什么?在公共互联网上没有提到它,直到这个SO问题被张贴。
想想两封测试邮件freddiehubbard1971@yahoomilesdavis1959@yahoo.com。Freddie和Miles是同时创建的。它们都是雅虎的电子邮件,都有关联的谷歌账户。它们在各个方面都很相似,只是Freddie幸运,而Miles被诅咒了。
Freddie是如何被标记为google.apps.cloudidentity.groups.vx.memberization.type.user而Miles却没有?更重要的是,我如何确保组中的非测试成员也被标记为**?

f0ofjuux

f0ofjuux1#

将我的答案从评论中张贴出来,以供将来参考:

该图标通常表示该电子邮件地址不属于谷歌帐户。我能够通过向一个组添加一个没有谷歌帐户的用户的电子邮件地址来重现完全相同的行为。
解决方法是从群组中删除该电子邮件地址,并在确保用户拥有使用该电子邮件地址的活动Google帐户后再次添加。

说明:

这不是一个bug或问题,而是由于Google Groups和OAuth2 Proxy的工作方式而导致的实际预期行为,正如帖子中所提到的:
反向代理使用Google帐户进行身份验证,并使用现有的Google组进行授权,按照相同的说明。
这意味着该应用程序依赖于一个实际的谷歌帐户才能正常工作,并需要一个GAIA ID,这是只分配给临时和实际的谷歌帐户。
由于用户在被添加到组之前没有Google帐户,并且仅将电子邮件地址添加到Google组不会创建任何临时Google帐户(也称为Nori帐户),因此OAuth2代理应用程序无法连接到组中的此电子邮件地址。
现在,另一方面,当用户创建Google帐户时,GAIA ID被分配给该电子邮件地址,但用户作为邮件列表中的一部分的简单文本字符串被“卡”在组中,因为它是在创建Google帐户之前添加的,唯一的改变方法是再次添加帐户,这样系统就可以识别Google帐户,并将电子邮件地址与GAIA ID相关联,这样应用程序就能够识别用户是组的一部分并授予访问权限。

ymzxtsji

ymzxtsji2#

费尔南多·劳拉提供了答案。谢谢。
电子邮件地址可以与Google帐户关联,也可以不关联。将电子邮件添加到Google群组后,群组会跟踪该电子邮件是否与Google帐户关联。该跟踪显示为图标,并标记为类型google.apps.cloudidentity.groups.vx.membership.type.user

milesdavis1959@yahoo.com最初未与Google帐户关联。当被问及里程数时,该群回答说里程数不是成员。
milesdavis1959@yahoo.com后来获得了一个谷歌账户。但当Miles获得这个账户时,这个群组并没有更新它的追踪记录。当被问及Miles时,这个群组仍然回答Miles不是成员。Miles永远被诅咒了。

我认为这是一个bug。一旦Miles与一个Google帐户关联,群应该更新它对Miles的跟踪,并确认他是一个成员。或者,群应该确认Miles是一个成员,甚至在他的电子邮件与一个Google帐户关联之前。
正如Fernando所指出的,有一个简单的解决方案:从组中删除Miles,然后重新添加他。

相关问题