Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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.
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 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:
Para admitir llamadas de clientes que usan Firebase Auth:
Crea un proyecto de Firebase, si aún no lo hiciste. Los proyectos de Firebase son proyectos de Google Cloud console que usan los servicios de Firebase. Para obtener más información, consulta ¿Qué es un proyecto de Firebase? y la documentación de Firebase.
Agrega lo siguiente a tu anotación del método o @Api:
Agrega un parámetro authenticators a tu anotación, configurado como el valor {EspAuthenticator.class}.
Agrega un parámetro issuers que contenga un @ApiIssuer configurado en Firebase.
Agrega un parámetro issuerAudiences que contenga un @ApiIssuerAudience configurado en Firebase y el ID de tu proyecto.
Reemplaza VERSION_NUMBER con la versión de tu API, por ejemplo, v1.
Reemplaza ambas instancias de YOUR_PROJECT_ID con el ID del proyecto de Firebase.
En el código de implementación de la API, importa Users:
importcom.google.api.server.spi.auth.common.User;
En cada método de API donde quieras verificar la autenticación correcta, comprueba si hay un User válido y arroja una excepción si no hay uno, como se muestra en la definición del método de muestra:
Cómo agregar 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 del emisor de Firebase de la API, como se muestra en la sección anterior.
Cómo autenticar con Auth0
Para admitir llamadas de clientes que usan Auth0:
Agrega lo siguiente a tu anotación del método o @Api:
Agrega un parámetro authenticators a la anotación, configurado como el valor {EspAuthenticator.class}.
Agrega un parámetro issuers que contenga un @ApiIssuer configurado en Auth0.
Agrega un parámetro issuerAudiences que contenga un @ApiIssuerAudience configurado en Auth0 y tu ID de cliente de Auth0.
Reemplaza VERSION_NUMBER con la versión de tu API, por ejemplo, v1.
Reemplaza YOUR_ACCOUNT_NAME con el nombre de cuenta de Auth0 que se usa para el cliente.
Reemplaza AUTH0_CLIENT_ID con el ID que deseas usar para el cliente.
En el código de implementación de la API, importa Users:
importcom.google.api.server.spi.auth.common.User;
En cada método de API donde quieras verificar la autenticación correcta, comprueba si hay un User válido y arroja una excepción si no hay uno, como se muestra en la definición del método de muestra:
Cómo agregar 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:
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 Cómo crear ID de cliente.
Agrega una entrada de clientIds que contenga el ID de cliente para cada aplicación cliente a la que le otorgues acceso, y también una entrada de audiences para cada cliente de Android, en tu anotación de @Api.
Por ejemplo:
@Api(
name = "YOUR_API_NAME",
version = "VERSION_NUMBER",
clientIds = {"YOUR_CLIENT_ID"},
audiences = {"YOUR_CLIENT_ID"}
)
Reemplaza YOUR_API_NAME por el nombre de tu API.
Reemplaza VERSION_NUMBER con la versión de tu API, por ejemplo, v1.
Reemplaza YOUR_CLIENT_ID con el ID de cliente de OAuth 2 que se generó en el proyecto de la aplicación cliente.
En el código de implementación de la API, importa Users:
importcom.google.api.server.spi.auth.common.User;
En cada método de API donde quieras verificar la autenticación correcta, comprueba si hay un User válido y arroja una excepción si no hay uno, como se muestra en la definición del método de muestra:
Si usas un 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
¿Qué sigue?
Para obtener más información sobre la autenticación de usuarios y cómo difiere de la autorización de clave de API, consulta Cuándo y por qué usar claves de API.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[[["\u003cp\u003eThis guide outlines how to enable user authentication in your API using Cloud Endpoints Frameworks, currently supporting Android and JavaScript clients.\u003c/p\u003e\n"],["\u003cp\u003eEndpoints Frameworks allows authentication via Firebase Auth, Auth0, or Google ID tokens, and each method requires checking for a valid \u003ccode\u003eUser\u003c/code\u003e in the API method.\u003c/p\u003e\n"],["\u003cp\u003eTo implement authentication, you must configure \u003ccode\u003e@Api\u003c/code\u003e or method annotations with appropriate \u003ccode\u003eauthenticators\u003c/code\u003e, \u003ccode\u003eissuers\u003c/code\u003e, and \u003ccode\u003eissuerAudiences\u003c/code\u003e parameters specific to your chosen authentication method (Firebase, Auth0, or Google ID).\u003c/p\u003e\n"],["\u003cp\u003eAPI methods must include a check for a valid \u003ccode\u003eUser\u003c/code\u003e, throwing an \u003ccode\u003eUnauthorizedException\u003c/code\u003e if the user is null, and you should redeploy your API after adding clients or changing any configurations.\u003c/p\u003e\n"],["\u003cp\u003eWhen using JWT in clients, the JWT should be included in the authorization header of HTTP requests and must contain \u003ccode\u003eiss\u003c/code\u003e, \u003ccode\u003esub\u003c/code\u003e, \u003ccode\u003eaud\u003c/code\u003e, \u003ccode\u003eiat\u003c/code\u003e, and \u003ccode\u003eexp\u003c/code\u003e claims.\u003c/p\u003e\n"]]],[],null,["# Authenticating users\n\nThis page describes how to add support in your API for user authentication from\nclient applications using Cloud Endpoints Frameworks. Note that\nAndroid and JavaScript clients are currently supported.\n\nEndpoints Frameworks supports user authentication from client\napplications that use any of the following methodologies:\n\n- [Firebase Auth](https://firebase.google.com/docs/auth/)\n- [Auth0](http://auth0.com)\n- [Google ID tokens](/endpoints/docs/frameworks/glossary#google_id_token)\n\nNo matter which authentication method you use, in each API method where you want\nto check for proper authentication, you must check for a valid `User` as\ndescribed in the following sections:\n\n- [Authenticating with Firebase Auth](#authenticating_with_firebase_auth)\n- [Authenticating with Auth0](#authenticating_with_auth0)\n- [Authenticating with Google ID tokens](#google-id-tokens)\n\nPrerequisites\n-------------\n\nThis page assumes that you have already:\n\n- Created a [Google Cloud\n project](/resource-manager/docs/creating-managing-projects).\n\n- [Added API management](/endpoints/docs/frameworks/java/adding-api-management).\n\nAuthenticating with Firebase Auth\n---------------------------------\n\nTo support calls from clients that use Firebase Auth:\n\n1. If you haven't already done so, create a Firebase project. Firebase projects\n are Google Cloud console projects that use Firebase services. For more\n information, see\n [What is a Firebase project?](https://support.google.com/firebase/answer/6399760?hl=en)\n and the\n [Firebase documentation](https://firebase.google.com/docs/).\n\n2. Add the following to your\n [`@Api`](/endpoints/docs/frameworks/java/annotations#api_api-scoped_annotations)\n or method annotation:\n\n - Add an `authenticators` parameter to your annotation, set to the value `{EspAuthenticator.class}`.\n - Add an `issuers` parameter containing an `@ApiIssuer` set to Firebase.\n - Add an `issuerAudiences` parameter containing an `@ApiIssuerAudience` set to Firebase and your project ID.\n\n For example: \n\n ```\n @Api(\n name = \"YOUR_API_NAME\",\n version = \"VERSION_NUMBER\",\n authenticators = {EspAuthenticator.class},\n issuers = {\n @ApiIssuer(\n name = \"firebase\",\n issuer = \"https://securetoken.google.com/YOUR_PROJECT_ID\",\n jwksUri = \"https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com\")\n },\n issuerAudiences = {\n @ApiIssuerAudience(name = \"firebase\", audiences = \"YOUR_PROJECT_ID\")\n })\n ```\n - Replace \u003cvar translate=\"no\"\u003eYOUR_API_NAME\u003c/var\u003e with the name of your API.\n - Replace \u003cvar translate=\"no\"\u003eVERSION_NUMBER\u003c/var\u003e with your API version, for example, `v1`.\n - Replace both instances of \u003cvar translate=\"no\"\u003eYOUR_PROJECT_ID\u003c/var\u003e with your Firebase project ID.\n3. In your API implementation code, import `Users`:\n\n import com.google.api.server.spi.auth.common.User;\n\n4. In each API method where you want to check for proper authentication,\n check for a valid `User` and throw an exception if there isn't one, as\n shown in this sample method definition:\n\n @ApiMethod(httpMethod = ApiMethod.HttpMethod.GET)\n public Email getUserEmail(User user) throws UnauthorizedException {\n if (user == null) {\n throw new UnauthorizedException(\"Invalid credentials\");\n }\n\n Email response = new Email();\n response.setEmail(user.getEmail());\n return response;\n }\n\n5. [Redeploy the API](/endpoints/docs/frameworks/java/test-deploy)\n whenever you add new clients.\n\n### Adding Firebase authentication to a client\n\nYou can add Firebase authentication to your code as described in the\n[Firebase](https://firebase.google.com/docs/auth/)\ndocumentation. The client must have a Google Cloud project\nassociated with it, and the project ID must be listed in the API's Firebase\nissuer configuration as shown in the preceding section.\n\nAuthenticating with Auth0\n-------------------------\n\nTo support calls from clients that use Auth0:\n\n1. Add the following to your\n [`@Api`](/endpoints/docs/frameworks/java/annotations#api_api-scoped_annotations)\n or method annotation:\n\n - Add an `authenticators` parameter to your annotation, set to the value `{EspAuthenticator.class}`.\n - Add an `issuers` parameter containing an `@ApiIssuer` set to Auth0.\n - Add an `issuerAudiences` parameter containing an `@ApiIssuerAudience` set to Auth0 and your Auth0 client ID.\n\n For example: \n\n ```\n @Api(\n name = \"YOUR_API_NAME\",\n version = \"VERSION_NUMBER\",\n authenticators = {EspAuthenticator.class},\n issuers = {\n @ApiIssuer(\n name = \"auth0\",\n issuer = \"https://YOUR_ACCOUNT_NAME.auth0.com/\",\n jwksUri = \"https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json\")\n },\n issuerAudiences = {\n @ApiIssuerAudience(name = \"auth0\", audiences = \"AUTH0_CLIENT_ID\")\n })\n ```\n - Replace \u003cvar translate=\"no\"\u003eYOUR_API_NAME\u003c/var\u003e with the name of your API.\n - Replace \u003cvar translate=\"no\"\u003eVERSION_NUMBER\u003c/var\u003e with your API version, for example, `v1`.\n - Replace \u003cvar translate=\"no\"\u003eYOUR_ACCOUNT_NAME\u003c/var\u003e with the Auth0 account name used for the client.\n - Replace \u003cvar translate=\"no\"\u003eAUTH0_CLIENT_ID\u003c/var\u003e with the ID you want to use for your client.\n2. In your API implementation code, import `Users`:\n\n import com.google.api.server.spi.auth.common.User;\n\n3. In each API method where you want to check for proper authentication,\n check for a valid `User` and throw an exception if there isn't one, as\n shown in this sample method definition:\n\n @ApiMethod(httpMethod = ApiMethod.HttpMethod.GET)\n public Email getUserEmail(User user) throws UnauthorizedException {\n if (user == null) {\n throw new UnauthorizedException(\"Invalid credentials\");\n }\n\n Email response = new Email();\n response.setEmail(user.getEmail());\n return response;\n }\n\n4. [Redeploy the API](/endpoints/docs/frameworks/java/test-deploy)\n whenever you add new clients.\n\n### Adding Auth0 authentication to a client\n\nYou can add Auth0 authentication to your code as described in the\n[Auth0](http://auth0.com)\ndocumentation. The client must be listed in the API's Auth0 issuer\nconfiguration.\n\nAuthenticating with Google ID tokens\n------------------------------------\n\nTo support calls from clients that authenticate using Google ID tokens:\n\n1. Obtain an OAuth 2 client ID for each client application. The client\n application owner must generate the client ID from the Google Cloud console.\n For instructions, see\n [Creating client IDs](/endpoints/docs/frameworks/java/creating-client-ids).\n\n2. Add a `clientIds` entry containing the client ID for each client app\n you are granting access to, and an `audiences` entry as well for each\n Android client, in your\n [`@Api` annotation](/endpoints/docs/frameworks/java/annotations#api_api-scoped_annotations).\n\n For example: \n\n ```\n @Api(\n name = \"YOUR_API_NAME\",\n version = \"VERSION_NUMBER\",\n clientIds = {\"YOUR_CLIENT_ID\"},\n audiences = {\"YOUR_CLIENT_ID\"}\n )\n ```\n - Replace \u003cvar translate=\"no\"\u003eYOUR_API_NAME\u003c/var\u003e with the name of your API.\n - Replace \u003cvar translate=\"no\"\u003eVERSION_NUMBER\u003c/var\u003e with your API version, for example, `v1`.\n - Replace \u003cvar translate=\"no\"\u003eYOUR_CLIENT_ID\u003c/var\u003e with the OAuth 2 client ID that was generated in the client application project.\n3. In your API implementation code, import `Users`:\n\n import com.google.api.server.spi.auth.common.User;\n\n4. In each API method where you want to check for proper authentication, check\n for a valid `User` and throw an exception if there isn't one, as\n shown in this sample method definition:\n\n @ApiMethod(httpMethod = ApiMethod.HttpMethod.GET)\n public Email getUserEmail(User user) throws UnauthorizedException {\n if (user == null) {\n throw new UnauthorizedException(\"Invalid credentials\");\n }\n\n Email response = new Email();\n response.setEmail(user.getEmail());\n return response;\n }\n\n5. [Redeploy the API](/endpoints/docs/frameworks/java/test-deploy)\n whenever you add new clients.\n\n### Adding Google ID tokens authentication to a client\n\nFor information on adding authentication code to clients, see the following:\n\n- [Android app](/endpoints/docs/frameworks/java/calling-from-android)\n\nSending a JWT in your client\n----------------------------\n\nIf you use a JWT in your client to send authenticated requests to the API, the\nJWT must be in the authorization header of a HTTP request. The JWT should have\nthe following required claims:\n\n- `iss`\n- `sub`\n- `aud`\n- `iat`\n- `exp`\n\nWhat's next\n-----------\n\nFor background information about user authentication and how it differs from\nAPI key authorization, see\n[When and why to use API keys](/endpoints/docs/frameworks/java/when-why-api-key)."]]