Overview
Los puntos finales de la API de datos generalmente requieren que las solicitudes entrantes incluyan información de autenticación del usuario que los llama. Esto permite que el punto final aplique reglas y valide los esquemas de documentos para cada solicitud.
Las solicitudes deben incluir datos de autenticación en encabezados específicos. App Services utiliza el siguiente proceso para autenticar una solicitud:
Compruebe si hay un
Authorizationencabezado. Si está presente, intenta usar Autenticación de portador. El encabezado debe contener un token de acceso de usuario válido. Si el token no es válido, la solicitud falla.Si el encabezado
Authorizationno está presente o no utiliza el esquema "Bearer", verifica los encabezados de credenciales. Los encabezados deben contener credenciales válidas de correo electrónico/contraseña, clave API o Custom JWT para un usuario de la aplicación.
Nota
Debe activar un proveedor de autenticación antes de que los usuarios puedan autenticarse con él.
Bearer Authentication
La API de datos admite la autenticación de portador, lo que permite autenticar una solicitud incluyendo un token de acceso de usuario válido en el Authorization encabezado. Para obtener información sobre cómo obtener y administrar un token de acceso, consulte Administrar sesiones de usuario.
El encabezado de autorización utiliza el siguiente formato:
Authorization: Bearer <AccessToken>
Por ejemplo, la siguiente solicitud utiliza la autenticación Bearer:
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'
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.
Nota
Por razones de seguridad, App Services no devuelve errores detallados de autenticación Bearer a la aplicación cliente. Si tienes problemas con la Autenticación Bearer, consulta los Registros de la aplicación.
Encabezados de credenciales
You can authenticate a Data API request by including the user's login credentials in the request headers. The exact headers to include depend on the authentication provider.
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 HTTPS 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 de la API de datos desde un navegador, utilice la autenticación de portador.
Correo electrónico/Contraseña
To authenticate a Data API request as an email/password user, include the user's credentials in the request's email and password headers.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "email: bob@example" \ -H "password: Pa55w0rd!" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'
Llave API
Para autenticar una solicitud de API de datos con una clave de API, incluya la clave de API en el apiKey encabezado de la solicitud.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'
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.
JWT personalizado
Para autenticar una solicitud de la API de datos como un usuario JWT personalizado, incluye la cadena JWT en el encabezado jwtTokenString de la solicitud.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "jwtTokenString: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJteWFwcC1hYmNkZSIsInN1YiI6IjEyMzQ1Njc4OTAiLCJuYW1lIjoiSm9obiBEb2UiLCJleHAiOjIxNDU5MTY4MDB9.E4fSNtYc0t5XCTv3S8W89P9PKLftC4POLRZdN2zOICI" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'