Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
API de GraphQL

Autenticación de solicitudes GraphQL

La API GraphQL requiere que las solicitudes entrantes incluyan información de autenticación del usuario que las realiza. Esto permite a la API aplicar reglas y validar los esquemas de documentos en cada operación.

Las solicitudes deben incluir datos de autenticación en encabezados específicos. App Services utiliza el siguiente proceso para autenticar una solicitud:

  1. Compruebe si hay un Authorization encabezado. Si está presente, la solicitud debe utilizar Autenticación de portador con un token de acceso de usuario válido. Si el token no es válido, la solicitud falla.

  2. If the Authorization header is not present, check for Credential Headers. The headers must contain valid Email/Password, API Key, or Custom JWT credentials for an App user.

Nota

Debe activar un proveedor de autenticación antes de que los usuarios puedan autenticarse con él.

La API GraphQL soporta la Autenticación Bearer, la cual permite autenticar una solicitud incluyendo un token de acceso de usuario válido en la cabecera Authorization. Para aprender cómo obtener y administrar un token de acceso, consulta Administrar Sesiones de Usuarios.

El encabezado de autorización utiliza el siguiente formato:

Authorization: Bearer <AccessToken>

Por ejemplo, la siguiente solicitud utiliza la autenticación Bearer:

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'Authorization: Bearer <AccessToken>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'

En general, la autenticación de portador con un token de acceso ofrece mayor rendimiento y es más segura que los encabezados de credenciales. Utilice un token de acceso en lugar de encabezados de credenciales siempre que sea posible. El token permite ejecutar múltiples solicitudes sin tener que volver a autenticar al usuario. También permite enviar solicitudes desde un navegador web que implemente CORS.

Importante

No uses claves API en clientes orientados al usuario

Si se autentica desde un navegador u otra aplicación cliente, evite usar una clave API para iniciar sesión. En su lugar, utilice otro proveedor de autenticación que acepte las credenciales proporcionadas por el usuario. Nunca almacene localmente claves API ni otras credenciales confidenciales.

La autenticación del portador es útil para:

  • enviando solicitudes desde un navegador web.

  • enviar múltiples solicitudes sin almacenar las credenciales del usuario ni preguntarle en cada solicitud.

  • enviar solicitudes desde una aplicación que también utilice un Realm SDK para autenticar usuarios.

Puedes autenticar una solicitud GraphQL incluyendo las credenciales de inicio de sesión del usuario en los encabezados de la solicitud. Los encabezados exactos que se deben incluir dependen del proveedor de autenticación.

Los encabezados de credenciales son útiles para:

  • requests sent from a server-side application

  • requests sent from a command-line tool

  • solicitudes manuales o de prueba enviadas desde un cliente GraphQL como Postman

Importante

No se pueden usar encabezados de credenciales para autenticar solicitudes enviadas desde un navegador web debido a restricciones de uso compartido de recursos entre orígenes. En su lugar, para autenticar solicitudes GraphQL desde un navegador, utilice la autenticación de portador.

Para autenticar una solicitud GraphQL como un usuario de correo electrónico/contraseña, incluya las credenciales del usuario en email los password encabezados y de la solicitud.

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'email: <EmailAddress>' \
--header 'password: <Password>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'

To authenticate a GraphQL request with an API Key, include the API key in the request's apiKey header.

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'apiKey: <APIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'

Importante

No uses claves API en clientes orientados al usuario

Si se autentica desde un navegador u otra aplicación cliente, evite usar una clave API para iniciar sesión. En su lugar, utilice otro proveedor de autenticación que acepte las credenciales proporcionadas por el usuario. Nunca almacene localmente claves API ni otras credenciales confidenciales.

Para autenticar una solicitud GraphQL como un usuario Custom JWT, incluya el string JWT en el encabezado jwtTokenString de la solicitud.

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'jwtTokenString: <JWT>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'

Volver

Exponer datos en una colección

En esta página