Vreau să implementez accesul bazat pe rol pe API-urile mele la nivel de metodă. de exemplu. pentru a invoca o anumită metodă pe API, apelantul trebuie să aibă un rol „myapp.api.write”. Nu găsesc o modalitate de a face acest lucru atunci când un cont de serviciu îmi apelează API-ul, dar am o soluție pentru când un utilizator final apelează API-ul.
Utilizatorii front-end sunt autentificați folosind Firebase, revendicările personalizate sunt create pentru utilizator pentru a defini rolurile pe care acesta le are. Aplicația NestJS verifică rolurile din revendicarea JWT la nivel de metodă, implementând accesul bazat pe rol pentru utilizatorii finali. Acest lucru funcționează foarte bine.
Cu toate acestea... unele API-uri sunt apelate din alte aplicații App Engine. Vreau să implementez accesul bazat pe roluri în acest context, adică App Engine A poate invoca GET pe App Engine B, dar nu POST. Mă lupt cu cum să realizez acest lucru.Pot folosi un proxy conștient de identitate, dar acesta nu va oferi control la nivelul punctului final sau al metodei - doar întreaga aplicație, este totul sau nimic. Următoarea mea abordare a fost să fac App Engine A să trimită un JWT către App Engine B și apoi să adaug un rol personalizat la contul de serviciu în care rulează App Engine A. Problema mea cu această abordare este că nu puteți crea permisiuni personalizate pentru un cont de serviciu și nu puteți crea un rol personalizat fără o permisiune. Speram să creez o permisiune personalizată, cum ar fi „myproject.data.read” și să verific dacă contul de serviciu de apelare are această permisiune în App Engine B.
A mai încercat cineva așa ceva și a făcut-o să funcționeze în alt mod?