我是GCP的新手。我有一个云运行服务。我正在使用curl命令触发服务。
curl -X POST https://gcp.a.run.app/api/ -H“Authorization:bearer $(gcloud auth print-access-token)”-H“Content-Type:application/json”-d @anc.json -- client is not authorized 401 error.
curl -X POST https://gcp.a.run.app/api/ -H“Authorization:bearer $(gcloud auth print-identity-token)”-H“Content-Type:application/json”-d @anc.json -- working
为什么访问令牌不适用于cloud run?应该向cloud run发布http请求的系统使用oauth 2.0和访问令牌。是否有某种方式可以容纳访问令牌?
我创建了一个SA,它具有cloud run invoker访问权限,并且密钥已共享给将向cloud run发布请求的系统。我可以要求他们使用gcp元数据服务器生成Id_token,但我想了解为什么cloud run无法使用访问令牌,或者它会吗?
1条答案
按热度按时间idv4meu81#
对于Google Cloud Run,有两种类型的授权。
要管理Cloud Run服务,您必须使用OAuth 2.0访问令牌。
要授权对Cloud Run内运行的容器/应用程序的请求,您必须使用OIDC身份令牌。
不同之处在于访问令牌包含管理Google Cloud服务的范围(权限)。身份令牌提供身份信息,用于授权访问服务内运行的应用程序提供的HTTP端点。
Cloud Run前面是身份识别代理。如果您尚未启用公共(未经身份验证)访问,代理将通过HTTP授权标头验证HTTP请求。IAP验证OIDC身份令牌。身份令牌的关键部分是Google身份(电子邮件地址)和受众(服务URL)。IAP不接受或验证OAuth访问令牌。