Puncte:2

Cum generez un Bearer Token pentru cURL să ajungă prin IAP (GCP)?

drapel us
sts

Trebuie să curl o aplicație web găzduită în spatele IAP pe GCP.

În mod normal, utilizatorii se conectează prin IAP și folosesc aplicația web, dar trebuie să rulez câteva comenzi cURL (interactive și non-interactive) care accesează adresele URL ale aplicației web (de exemplu: https://myapp.com/get_pics/1)

Nu îmi dau seama cum să obțin un token Bearer de la GCP pe care îl pot folosi în antetul de autorizare pentru cURL.

Pot configura un cont de serviciu cu rolul „IAP Secured Web App User” și am cheia JSON pentru acest cont de serviciu, dar nu sunt sigur unde să merg după aceea pentru a obține un token Bearer adecvat pe care IAP îl va accepta.

Nadia Espinosa avatar
drapel in
Cred că aceste informații despre [genarate the authentication](https://cloud.google.com/iap/docs/programmatic-oauth-clients#service_accounts_and_gcloud) pot fi utile.
John Hanley avatar
drapel cn
@NadiaEspinosa - Link-ul tău este pentru crearea unui Token de acces. În această întrebare, este necesar un token de identitate.
John Hanley avatar
drapel cn
În cazul dvs., aveți nevoie de un token de identitate OIDC. Este identitatea un cont de utilizator sau de serviciu? În timpul dezvoltării, utilizați CLI pentru a genera acest token: **gcloud auth print-identity-token** https://cloud.google.com/sdk/gcloud/reference/auth/print-identity-token Specificați, de asemenea, serviciile pe care le aveți folosesc. Există un parametru pentru **aud** (--audience) care este adresa URL a serviciului. Sfat: utilizați Python în loc de Curl. Veți avea mult mai ușor să creați jetoane OAuth/OIDC.
sts avatar
drapel us
sts
Identitatea este un cont de serviciu.Tokenul este pentru un client iOS care lovește un API REST în spatele IAP. Tokenurile de scurtă durată sunt o prostie, deoarece sunt doar testate împotriva unui API protejat prin IAP. Python nu este de mare ajutor. Este un caz de utilizare pe care GCP nu l-a luat în considerare. Dezvoltatorul este o terță parte, așa că nu le oferim gcloud, așadar ideea contului de serviciu.
Ismael Clemente Aguirre avatar
drapel ye
@sts Deoarece acest caz este deschis de 3 luni acum, aș dori să știu dacă ați găsit o modalitate de a vă rezolva problema.
sts avatar
drapel us
sts
Nu. Ne-am aruncat.
Puncte:1
drapel us

Pentru IAP trebuie să furnizați un jeton de identitate OIDC. Poți să folosești gcloud pentru a-l crea pentru dvs. sau utilizați orice alt mijloc așa cum este descris în Autentificare programatică.

Presupun că aveți gcloud, așa că vă voi arăta cum să îl utilizați:

  1. Conectați-vă folosind contul de serviciu
gcloud auth activate-service-account --key-file service-account-key.json
  1. Trimiteți cererea dvs
curl -H „Autorizare: Purtător $(gcloud auth print-identity-token --audiences="xxx.apps.googleusercontent.com")" https://myapp.com/get_pics/1

Asigurați-vă că ați acordat contul de serviciu iap.httpsResourceAccessor-permisiune, sau tot ți se va refuza.

  • Bonus: nu utilizați fișierele cheie ale contului de serviciu. Uzurpare identitatea unui cont de serviciu din profilul dvs. de utilizator actual.
curl -H „Autorizare: Purtător $(gcloud auth print-identity-token --include-email --audiences="xxx.apps.googleusercontent.com" --impersonate-service-account=service_account@project.iam.gserviceaccount. com)" https://myapp.com/get_pics/1
Puncte:1
drapel ye

Nu îmi dau seama cum să obțin un token Bearer de la GCP pe care îl pot folosi în antetul de autorizare pentru cURL.

Conform cu Documentație publică Google

Dacă aplicația dvs. ocupă antetul Cerere de autorizare, puteți includeți jetonul ID într-un antet Proxy-Authorization: Bearer. Dacă se găsește un identificator valid într-un antet de autorizare proxy, IAP autorizează cererea cu aceasta. După autorizarea cererii, IAP transmite antetul de autorizare aplicației dvs. fără procesare continutul.

Dacă nu se găsește un simbol ID valid în antetul Proxy-Authorization, IAP continuă să proceseze antetul de autorizare și dezactivează Antetul Proxy-Authorization înainte de a transmite solicitarea către dvs aplicarea.

Bearer Token OIDC

Acest document include, de asemenea, exemple de cod pentru:

Și în acest link puteți găsi mai multe informații despre Verificați simbolul purtătorului în GCP

Autentificare jeton purtător

După câteva cercetări, am găsit două pagini care descriu Cum să oferiți autentificarea contului dvs. de serviciu ca simbol Bearer și Cum să trimiteți cererea Curl POST cu antetul de autorizare Bearer Token.

Prima face parte din Documentație publică Google Developers, și descrie procesul către obțineți un token Bearer cu contul dvs. de serviciu.

  1. Instalați instrumentul de linie de comandă gcloud.

  2. Autentificați-vă la contul de serviciu. În următoarea comandă, a inlocui ${KEY_FILE} cu calea către cheia contului dvs. de serviciu fişier:

    gcloud auth activate-service-account
    --key-file ${KEY_FILE}
    
  3. Utilizați contul de serviciu pentru a obține un simbol de autorizare:

    gcloud auth print-access-token 
    

    Comanda returnează o valoare a simbolului de acces.

Când utilizați API-ul, transmiteți valoarea simbolului ca simbol Bearer într-un Antet de autorizare. Vezi următorul exemplu:

    curl -X GET -H „X-Goog-User-Project: ${CLIENT_PROJECT}” \  
    -H „Tip de conținut: aplicație/json” \  
    -H „Autorizare: Purtător ${TOKEN}” \ 
„https://sasportal.googleapis.com/v1alpha1/customers” 

A stabilit ${CLIENT_PROJECT} la ID-ul proiectului Google Cloud din pe care le faceți cererile și apoi setați ${TOKEN} la jeton de autorizare.

Si in acest link veti gasi informatii si exemple despre Cerere de curl cu antet de autorizare a simbolului purtătorului

John Hanley avatar
drapel cn
Există două tipuri de token-uri: OAuth Access Token și OIDC Identity Tokens. Întrebarea este despre IAP (Identity Aware Proxy), răspunsul dvs. este pentru un alt serviciu. IAP necesită un token de identitate OIDC.
Ismael Clemente Aguirre avatar
drapel ye
Mulțumesc pentru comentariu, mi-am editat deja răspunsul.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.