我正在嘗試將以下命令從 CLI(有效)轉(zhuǎn)換為 python,但遇到一些問題。curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL問題是我無法使用應(yīng)用程序默認本地憑據(jù)令牌請求有效的承載來向 Google Cloud Run 發(fā)出授權(quán)請求。如果我從 CLI 生成 Bearer 令牌gcloud auth print-identity-token并在 python 請求中使用它,一切正常request_url = 'https://<my endpoint>'identity_token = '<>' # response of gcloud auth print-identity-token)header= {'Authorization': f'Bearer {identity_token}'}requests.get(url=request_url, headers=receiving_service_headers)從谷歌身份驗證文檔中,我了解到 Cloud Run 通信基于支持模擬身份驗證的身份令牌,但我無法生成有效的憑據(jù)。from google.auth import impersonated_credentials, defaultfrom google.auth.transport.requests import AuthorizedSessionrequest_url = 'https://<my endpoint>'source_credentials, project = default()creds = impersonated_credentials.IDTokenCredentials(? ? source_credentials,? ? target_audience=request_url)authed_session = AuthorizedSession(creds)resp = authed_session.get(request_url)print(resp)bui 我收到以下錯誤google.auth.exceptions.GoogleAuthError: Provided Credential must be impersonated_credentials謝謝
2 回答

慕運維8079593
TA貢獻1876條經(jīng)驗 獲得超5個贊
您需要一個服務(wù)帳戶才能使用 Google Auth 庫生成有效的 JWT 令牌。所有庫和所有語言都存在同樣的問題。
在本地環(huán)境中,如果您想在本地和云中使用相同的代碼,則必須生成服務(wù)帳戶密鑰文件并將其與 ADC 一起使用??杀氖?,這是一個安全問題......

慕尼黑的夜晚無繁華
TA貢獻1864條經(jīng)驗 獲得超6個贊
如果您想將curl命令轉(zhuǎn)換為python請求,這是轉(zhuǎn)換后的代碼:
導(dǎo)入請求
headers = { '授權(quán)': '承載 $(gcloud auth print-identity-token)', }
響應(yīng) = requests.get('http://SERVICE_URL', headers=headers)
添加回答
舉報
0/150
提交
取消