2011-09-07 25 views
7

Estoy pensando en usar MongoDB como mi base de datos principal. Sin embargo, mi aplicación es completamente en JavaScript y quería usar la API REST, del lado del cliente.API REST Autenticación MongoDB

Todavía no puedo entender qué mecanismos de seguridad puedo usar para hacer una llamada JS a la base de datos sin revelar todos los datos a todos los usuarios de a los usuarios de la .

Por favor, consejo sobre este asunto.

Saludos, Donald

+0

@Brain, ¿cómo es eso de alguna manera relacionado con esta pregunta? AJAX es solo una forma de hablar asincrónicamente con otros servicios y no tiene nada que ver ni con la interfaz RESTO de MongoDB ni con la pregunta. –

Respuesta

5

En primer lugar, puede habilitar la base de datos de autenticación que hará que la interfaz REST requiere autenticación si está conectado a partir de una máquina remota.

Dicho esto, es una muy mala idea exponer su base de datos como usted sugiere. Cree una capa de abstracción de persistencia en una tecnología de servidor con la que se sienta cómodo (node.js, por ejemplo) y ponga allí todas las restricciones de seguridad y autenticación. Las ventajas son numerosas:

  • Puedes mantener estable tu API aunque cambie MongoDB. Incluso puede reemplazarlo con otra solución de persistencia si surge la necesidad en la mayoría de los casos.
  • Puede limitar la carga que un solo cliente puede poner en su base de datos. Si expone la base de datos directamente, puede hacer muy poco para evitar que las personas realicen consultas costosas o incluso corrompan las escrituras.
  • A menudo puede hacer un almacenamiento en caché y una optimización inteligente en el lado de la aplicación que no es posible si todos los clientes acceden directamente a la base de datos (aunque esto depende un poco de la aplicación en cuestión).
+0

¿Por qué no es seguro? ¿Cómo es diferente de CouchDB que ya viene con una interfaz REST? – BluePython

+0

La interfaz REST no es insegura (aunque es un posible problema de rendimiento), pero exponer una interfaz de base de datos (RESTful o no) directamente a los clientes casi siempre presenta riesgos. –

2

Echa un vistazo a Sleepy.Mongoose, es una interfaz REST API para MongoDB. No lo he probado, pero parece ser compatible con la autenticación MongoDB estándar.

+1

¿Por qué las personas pasan por todos esos problemas en lugar de usar CouchDB o por qué MongoDB no viene con la interfaz API REST estándar? ¿Cuáles son los beneficios de no hacerlo? – BluePython

1

MongoLab tiene hosting de base de datos MongoDB con una API REST que se puede acceder desde el lado del cliente, incluso a través de algunos ejemplos basados ​​en jQuery en su documentación de soporte. Dicho esto, Remon tiene razón en que sacrificas cualquier seguridad al hacerlo porque estás haciendo pública tu clave API.

0

RESTHeart es una API web para MongoDB.

Proporciona autenticación y autorización a nivel de aplicación.

Consulte la sección de documentación security.

también algunos ejemplos de aplicaciones están disponibles en github:

  • blog example (usando AngularJS a través del servicio $ htpp)
  • notes example (utilizando AngularJS a través del servicio restangular)