En esta página se describe cómo añadir compatibilidad en tu API para la autenticación de usuarios desde aplicaciones cliente mediante Cloud Endpoints Frameworks. Ten en cuenta que, por el momento, se admiten clientes de Android y JavaScript.
Endpoints Frameworks admite la autenticación de usuarios desde aplicaciones cliente que utilicen cualquiera de las siguientes metodologías:
Independientemente del método de autenticación que utilices, en cada método de la API en el que quieras comprobar que la autenticación es correcta, debes buscar un User
válido, tal como se describe en las siguientes secciones:
Requisitos previos
En esta página se da por hecho que ya has hecho lo siguiente:
Se ha creado un Google Cloud proyecto.
- Si usas JWT en tu cliente para enviar solicitudes autenticadas a la API, el JWT debe estar en el encabezado de autorización de una solicitud HTTP. El JWT debe tener las siguientes reclamaciones obligatorias:
-
iss
-
sub
-
aud
-
iat
-
exp
-
Autenticarse con Firebase Authentication
Para admitir llamadas de clientes que usan Firebase Auth, haz lo siguiente:
Importa la API de Cloud Endpoints de App Engine en tu clase de API:
import endpoints
Añade un objeto de emisor de Firebase para cada cliente al decorador de la API. Por ejemplo:
@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', issuers={'firebase': endpoints.Issuer( 'https://securetoken.google.com/YOUR_PROJECT_ID, 'https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com')})
- Sustituye
YOUR_API_NAME
por el nombre de tu API. - Sustituye
VERSION_NUMBER
por tu versión de la API (por ejemplo,v1
). - Sustituye code>YOUR_PROJECT_ID por el Google Cloud ID de proyecto del cliente.
- Sustituye
En cada método de API en el que quieras comprobar que la autenticación es correcta, busca un
User
válido y genera unerror 401
si no lo hay, como se muestra en esta definición de método de ejemplo:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Despliega la API Endpoints. Debe volver a implementar la API Endpoints cada vez que añada clientes nuevos.
Añadir autenticación de Firebase a un cliente
Puedes añadir la autenticación de Firebase a tu código tal como se describe en la documentación de Firebase. El cliente debe tener un Google Cloud proyecto asociado y el ID del proyecto debe figurar en la configuración del emisor de Firebase de la API.
Autenticarse con Auth0
Para admitir llamadas de clientes que usen Auth0, sigue estos pasos:
Importa la API Endpoints de App Engine en tu clase de API:
import endpoints
Añade un objeto de emisor de Auth0 para cada cliente al decorador de la API. Por ejemplo:
@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', issuers={'auth0': endpoints.Issuer( 'https://YOUR_ACCOUNT_NAME.auth0.com', 'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})
- Sustituye
YOUR_API_NAME
por el nombre de tu API. - Sustituye
VERSION_NUMBER
por tu versión de la API (por ejemplo,v1
). - Sustituye
YOUR_ACCOUNT_NAME
por el nombre de la cuenta de Auth0 que se usa en el cliente.
- Sustituye
En cada método de API en el que quieras comprobar que la autenticación es correcta, busca un
User
válido y genera unerror 401
si no lo hay, como se muestra en esta definición de método de ejemplo:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Despliega la API. Deberás volver a implementar la API cada vez que añadas nuevos clientes.
Añadir autenticación de Auth0 a un cliente
Puedes añadir la autenticación de Auth0 a tu código tal como se describe en la documentación de Auth0. El cliente debe figurar en la configuración del emisor de Auth0 de la API.
Autenticarse con tokens de ID de Google
Para admitir llamadas de clientes que se autentican mediante tokens de ID de Google, haz lo siguiente:
Obtén un ID de cliente de OAuth 2 para cada aplicación cliente. El propietario de la aplicación cliente debe generar el ID de cliente desde la Google Cloud consola. Para obtener instrucciones, consulta el artículo Crear IDs de cliente.
Importa la API Endpoints de App Engine en tu clase de API:
import endpoints
Especifica todos los IDs de cliente a los que quieras dar acceso a tu API en
allowed_client_ids
. También puedes especificar los IDs de cliente que pertenezcan a clientes Android en el campoaudiences
del decorador de la API. Por ejemplo:@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', allowed_client_ids=ALLOWED_CLIENT_IDS, audiences=[ANDROID_AUDIENCE]) class AuthedGreetingApi(remote.Service): # ...
Sustituye
ALLOWED_CLIENT_IDS
por la lista de IDs de cliente de OAuth 2 generados a partir del proyecto de cada cliente yANDROID_AUDIENCE
por la lista de IDs de cliente web de Android. El ID de cliente web es el ID de cliente con.apps.googleusercontent.com
al final. Por ejemplo:YOUR_CLIENT_ID.apps.googleusercontent.com
.En cada método de API en el que quieras comprobar que la autenticación es correcta, busca un
User
válido y genera unerror 401
si no lo hay, como se muestra en esta definición de método de ejemplo:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Despliega la API Endpoints. Debe volver a implementar la API Endpoints cada vez que añada clientes nuevos.
Añadir la autenticación con tokens de ID de Google a un cliente
Para obtener información sobre cómo añadir un código de autenticación a los clientes, consulta lo siguiente:
Siguientes pasos
Para obtener información general sobre la autenticación de usuarios y en qué se diferencia de la autorización con claves de API, consulta Por qué y cuándo utilizar claves de API.