2011-12-29 23 views
14

Estoy teniendo dificultades para encontrar información sobre cómo hacer que RavenDB funcione en una red. Dentro de la misma red, puedo tener una instancia de mi aplicación ejecutándose, y mostrará datos de mi RavenDB. Sin embargo, cuando intento escribir datos, obtengo una excepción 401 no autorizada.RavenDB Network Access

¿Cuál es la forma correcta de configurar un RavenDB para acceder a través de la red?

En este momento, tienen esto en Raven.Server.exe.config, que es sólo una solución a corto plazo:

<add key="Raven/AnonymousAccess" value="All" /> 

Lo que no entienden, es que el sitio web RavenDB dice que usar algo como esto:

<connectionStrings> 
    <add name="RavenDb" 
     connectionString="Url=http://serverName:8080;user=user;password=password"/> 
</connectionStrings> 

Ok, eso es muy bueno para la aplicación que se está ejecutando, pero ¿Cómo se configura el servidor RavenDB para permitir que el usuario y la contraseña? ¿Es esa la forma incorrecta de hacerlo (de alguna manera establecer el archivo de configuración RavenDB para permitir esas credenciales)? Si eso está mal, ¿cómo se supone que debo definir las credenciales en el servidor?

Editar: Aquí están mis intentos y resultados:

Estoy corriendo por RavenDB Raven.Server.exe doble clic.

Escenario 1

cliente App.config:

<connectionStrings> 
    <add name="RavenDb" connectionString="Url = http://server:8080;domain=Xx;user=Xx\user;password=pw"/> 
    </connectionStrings> 

DocumentStore Configuración:

DocumentStore documentStore = new DocumentStore(); 
documentStore.ConnectionStringName = "RavenDb"; 
documentStore.Initialize(); 

Guardar Operación:

Session.Store(objectToSave); 

Resultado: "El servidor remoto devolvió un error: (401) No autorizado."

Escenario app.config 2

Cliente:

<add key="databaseUrl" value="http://server:8080"/> 

DocumentStore Configuración:

string databaseUrl = ConfigurationManager.AppSettings["databaseUrl"];    
DocumentStore documentStore = new DocumentStore(); 
documentStore.Url = databaseUrl; 
documentStore.Initialize(); 

Guardar Operación:

Session.Store(objectToSave); 

Resultado: "El servidor remoto devolvió un error: (401) No autorizado." Excepción interna: "El nombre principal de destino es incorrecto"

Respuesta

7

Cree un usuario local en la máquina RavenDB se ejecuta y usa las credenciales que desee. Luego asigne permisos de lectura/escritura para el directorio/Data (y el directorio/Tenants si es necesario) a este usuario.

Si está ejecutando RavenDB como un servicio o una aplicación independiente, la autenticación remota debe funcionar con las credenciales de los usuarios (de Windows).Si está ejecutando IIS, asegúrese de tener habilitada la Autenticación de Windows (¡deshabilitada de forma predeterminada!).

+0

Ahhhhh ... Así que es sólo la autorización a la carpeta de datos. No necesito especificar el usuario en la configuración del servidor. Las conexiones del cliente pueden especificar al usuario en la configuración, y mientras ese usuario tenga acceso a la carpeta de Datos ... lo intentaré. –

+0

Sí, eso es todo. –

+0

Probé dos enfoques. Ver escenarios/ediciones arriba. ¿Qué me estoy perdiendo? –

3

Bob, De forma predeterminada, RavenDB usa la autenticación de Windows. Entonces, si crea el usuario en la máquina del servidor, lo aceptaría. La alternativa es definir usuarios específicos de ravendb, pero muchas personas solo usan Windows Auth.

+0

Probé dos enfoques. Ver escenarios/ediciones arriba. ¿Qué me estoy perdiendo? –

4

Para mí, tuve que agregar el dominio a la cadena de conexión en la máquina de pin, pero NO al acceder remotamente a la misma máquina ... No sé.

Nota: Creé un usuario de Windows llamado RAVENDB y le asigné permisos completos al directorio de datos.

así que mi cadena de conexión que funcionó bien remotamente era

<add name="raven" connectionString="Url=http://myserver.com:8080;user=RAVENDB;password=PASS" /> 

mientras que en el servidor real, lo que tenía que utilizar

<add name="raven" connectionString="Url=http://myserver:8080;DOMAIN=MYSERVERNAME;user=RAVENDB;password=PASS" /> 
+0

+1 dominio = era realmente lo que necesitaba –

+0

+1: ¡Muchas gracias! –