Autentica usuarios

En esta página, se describe cómo agregar compatibilidad en tu API para la autenticación de usuarios desde aplicaciones cliente mediante el uso de Cloud Endpoints Frameworks. Ten en cuenta que los clientes de Android y JavaScript son compatibles en este momento.

Endpoints Frameworks admite la autenticación de usuarios desde aplicaciones cliente que usen cualquiera de las siguientes metodologías:

Sin importar qué método de autenticación uses, en cada método de API en el que desees comprobar la autenticación correcta debes buscar un User válido, como se describe en las secciones que aparecen a continuación:

Requisitos previos

En esta página, se supone que ya hiciste lo siguiente:

  • Creaste un proyecto de Google Cloud.

  • Agregaste administración de API.

  • 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

Cómo autenticar con Firebase Auth

Para admitir llamadas de clientes que usan Firebase Auth:

  1. Importa la API de App Engine para Cloud Endpoints en tu clase de API :

    import endpoints
        
  2. Agrega un objeto de entidad emisora de Firebase para cada cliente en el decorador de 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/VERSION_NUMBER/metadata/x509/securetoken@system.gserviceaccount.com')})
        
    • Reemplaza YOUR_API_NAME por el nombre de tu API.
    • Reemplaza VERSION_NUMBER por la versión de tu API, por ejemplo, v1.
    • Reemplaza el código YOUR_PROJECT_ID por el ID del proyecto de Google Cloud del cliente.
  3. En cada método de API en el que quieras verificar la autenticación correcta, comprueba si hay un User válido y genera un error 401 si no hay ninguno, como se muestra en esta definición del método de muestra:

    user = endpoints.get_current_user()
        # If there's no user defined, the request was unauthenticated, so we
        # raise 401 Unauthorized.
        
  4. Implementa la API de Endpoints. Cada vez que agregues clientes nuevos, tienes que volver a implementar la API de Endpoints.

Agrega la autenticación de Firebase a un cliente

Puedes agregar la autenticación de Firebase a tu código como se explica en la documentación de Firebase. El cliente debe tener un proyecto de Google Cloud asociado, y el ID del proyecto debe aparecer en la configuración de la entidad emisora de Firebase de la API.

Autentica con Auth0

Para admitir llamadas de clientes que usan Auth0, sigue estos pasos:

  1. Importa la API de App Engine para Cloud Endpoints en tu clase de API:

    import endpoints
        
  2. Agrega un objeto de entidad emisora de Auth0 para cada cliente en el decorador de 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')})
        
    • Reemplaza YOUR_API_NAME por el nombre de tu API.
    • Reemplaza VERSION_NUMBER por la versión de tu API, por ejemplo, v1.
    • Reemplaza YOUR_ACCOUNT_NAME por el nombre de la cuenta de Auth0 que se usa para el cliente.
  3. En cada método de API en el que quieras verificar la autenticación correcta, comprueba si hay un User válido y genera un error 401 si no hay ninguno, como se muestra en esta definición del método de muestra:

    user = endpoints.get_current_user()
        # If there's no user defined, the request was unauthenticated, so we
        # raise 401 Unauthorized.
        
  4. Implementa la API. Cada vez que agregues clientes nuevos, tienes que volver a implementar la API de Endpoints.

Agrega la autenticación de Auth0 a un cliente

Puedes agregar la autenticación de Auth0 a tu código como se explica en la documentación de Auth0. El cliente debe aparecer en la configuración del emisor de Auth0 de la API.

Cómo autenticar con tokens de ID de Google

Para admitir llamadas de clientes que usan tokens de ID de Google, sigue estos pasos:

  1. Obtén un ID de cliente de OAuth 2 para cada aplicación cliente. El propietario de la aplicación del cliente debe generar el ID de cliente a partir de Google Cloud Console. Para obtener instrucciones, consulta Cómo crear varios ID de cliente.

  2. Importa la API de App Engine Endpoints en tu clase de API:

    import endpoints
        
  3. Especifica todos los ID de cliente a los que deseas otorgar acceso a tu API en allowed_client_ids y los ID de cliente que pertenecen a clientes de Android en el campo audiences en el decorador de 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):
            # ...
        

    Reemplaza ALLOWED_CLIENT_IDS por la lista de ID del cliente de OAuth 2 generados a partir del proyecto de cada cliente y reemplaza ANDROID_AUDIENCE por la lista de ID web de Android. El ID de cliente web es el ID de cliente con .apps.googleusercontent.com anexado, por ejemplo: YOUR_CLIENT_ID.apps.googleusercontent.com.

  4. En cada método de API en el que quieras verificar la autenticación correcta, comprueba si hay un User válido y genera un error 401 si no hay ninguno, como se muestra en esta definición del método de muestra:

    user = endpoints.get_current_user()
        # If there's no user defined, the request was unauthenticated, so we
        # raise 401 Unauthorized.
        
  5. Implementa la API de Endpoints. Cada vez que agregues clientes nuevos, tienes que volver a implementar la API de Endpoints.

Cómo agregar la autenticación de token de ID de Google a un cliente

Para obtener información sobre cómo agregar código de autenticación a los clientes, consulta lo siguiente:

Próximos pasos

Para obtener más información de referencia sobre la autenticación de usuarios y cómo difiere de la autorización de clave de API, consulta Por qué y cuándo usar las claves de API.