我有一个安全的node.js后端运行在云运行。我一直有一个问题是,一些用户面临403不足的范围从“谷歌前端”服务器,客户端没有权限获得URL。
这很奇怪,因为并非所有用户都遇到这种情况。事实上,我的一个测试账户面临这个问题,而我的实际账户却没有。为了获得auth头,我使用firebase+google identity来获得oidc令牌。我比较了两个账户之间的oidc令牌,一切似乎都是一样的,这需要是一样的(除电子邮件、sub、hash等之外)。jwt令牌的iss、aud、azp、hd部分都相同。
我不是100%了解服务帐户,所以我认为问题可能是与服务帐户权限连接到云运行服务,但事实上,这是工程的一些用户和不够的其他用户是奇怪的。
我看到这两个帐户之间的主要区别是Cookie:
工作账户:
GCP_IAAP_AUTH_TOKEN_F3BA....
__Host-GCP_IAP_AUTH_TOKEN_F3BA....
GCP_IAP_UID
_ga
_ga_K...
_ga_S...
_ga_F...
GCP_IAP_XSRF_NONCE_1vp....
403请求帐户:
GCP_IAAP_AUTH_TOKEN_F3BA....
__Host-GCP_IAP_AUTH_TOKEN_F3BA....
GCP_IAP_UID
_ga
_ga_F...
如您所见,2 ga... cookie丢失(不确定是什么),但更重要的是(我相信),GCP_IAP_XSRF_NONCE_丢失。由于用户成功通过IAP,因此我不知道为什么丢失。
更新没关系,GCP_IAP_XSRF_NONCE_不是问题,一些用户帐户仍然得到403。
1条答案
按热度按时间kadbb4591#
几天后我想明白了,原来有些人在cloud run中没有run.invoker角色,所以我创建了一个我想访问的google群组(内部应用程序)