Este artigo mostra como aceder programaticamente a um recurso protegido pelo Identity-Aware Proxy (IAP) através de identidades externas.
Existem várias situações em que pode querer fazê-lo:
A sua aplicação de front-end tira partido da Identity Platform diretamente. O servidor da API de back-end é criado com o App Engine e protegido pelo IAP através de identidades externas.
A sua aplicação foi concebida para utilização num ambiente de navegador não tradicional, como no Android, iOS ou na linha de comandos, onde a utilização de um redirecionamento do navegador para autenticar utilizadores é inviável.
Aceder a recursos
Para aceder a um recurso de forma programática através de um JWT de conta de serviço, consulte o artigo Autenticação com um JWT de conta de serviço.
Para aceder a um recurso programaticamente através de um token de ID, siga estes passos:
Obtenha o token de ID do utilizador.
Node.js
Certifique-se de que o utilizador tem sessão iniciada. O código abaixo mostra um exemplo simples de início de sessão de um utilizador com um email e uma palavra-passe:
// If signing in using project-level email/password IdP. // auth.tenantId = null; // This is null by default. // For signing in to a specific tenant using email/password. auth.tenantId = 'myTenantId'; auth.signInWithEmailAndPassword(email, password) .then((user) => { // User signed in. ID token can now be retrieved. }) .catch((error) => { // Handler error. });
Em seguida, pode obter um token de ID no objeto
user
:user.getIdToken() .then((idToken) => { // idToken is now available and can be sent to API server. }) .catch((error) => { // Handler error. });
REST
A chamada
signInWithPassword
devolve um token de ID na resposta:curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=API-KEY' \ -H 'Content-Type: application/json' \ --data-binary '{ "email":"EMAIL", "password":"PASSWORD", "returnSecureToken":true, "tenantId":"TENANT-ID" # Only used in multi-tenancy }'
Inclua o token de ID no cabeçalho de autorização quando chamar um ponto final protegido pelo IAP.
curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"