2011-12-29 1 views
14

Ho difficoltà a trovare informazioni su come far funzionare RavenDB su una rete. All'interno della stessa rete, posso avere un'istanza della mia app in esecuzione e mostrerà i dati dal mio RavenDB. Tuttavia, quando provo a scrivere dati, ottengo un'eccezione 401 non autorizzata.Accesso alla rete RavenDB

Qual è il modo corretto di configurare un RavenDB per l'accesso sulla rete?

In questo momento, ho questo in Raven.Server.exe.config, che è solo una soluzione a breve termine:

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

Quello che non capiscono, è che il sito web RavenDB dice di usare qualcosa di simile:

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

Ok, che è grande per l'applicazione che è in esecuzione, ma come faccio a impostare il server RavenDB per consentire che l'utente e la password? È solo il modo sbagliato di farlo (in qualche modo impostare il file di configurazione RavenDB per consentire quelle credenziali)? Se questo è sbagliato, come dovrei definire le credenziali sul lato server?

Edit: Qui ci sono i miei tentativi e risultati:

sto correndo RavenDB facendo doppio clic Raven.Server.exe.

Scenario 1

Cliente app.config:

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

DocumentStore Setup:

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

operazione di salvataggio:

Session.Store(objectToSave); 

Risultato: "Il server remoto ha restituito un errore: (401) Non autorizzato."

Scenario app.config 2

Cliente:

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

DocumentStore Setup:

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

operazione di salvataggio:

Session.Store(objectToSave); 

Risultato: "Il server remoto ha restituito un errore: (401) Non autorizzato." Eccezione interna: "Il nome principale dell'obiettivo non è corretto"

risposta

7

Creare un utente locale sulla macchina su cui RavenDB gira e utilizzare le credenziali desiderate. Quindi assegnare permessi di lettura/scrittura per la directory/Data (e la directory/Tenants se necessario) a questo utente.

Se si esegue RavenDB come servizio o applicazione autonoma, l'autenticazione remota dovrebbe funzionare con le credenziali degli utenti (Windows).Se stai utilizzando IIS, assicurati di avere l'autenticazione di Windows abilitata (disabilitata di default!).

+0

Ahhhhh ... quindi è solo l'autorizzazione alla cartella dei dati. Non ho bisogno di specificare l'utente nella configurazione del server. Le connessioni client possono specificare l'utente nella configurazione e fintanto che l'utente ha accesso alla cartella Dati ... Ci proverò. –

+0

Sì, è tutto. –

+0

Provato due approcci. Vedi scenari/modifiche sopra. Cosa mi manca? –

3

Bob, Per impostazione predefinita, RavenDB utilizza l'autenticazione di Windows. Quindi se si crea l'utente sul computer server, lo accetterebbe. L'alternativa è definire utenti specifici di ravendb, ma molte persone usano solo Auth di Windows.

+0

Provato due approcci. Vedi scenari/modifiche sopra. Cosa mi manca? –

4

Per quanto mi riguarda, ho dovuto aggiungere il dominio alla stringa di connessione sulla macchina prod, ma NON quando accedevo alla stessa macchina da remoto ... Non so.

Nota: ho creato un utente Windows denominato RAVENDB e le ho assegnato autorizzazioni complete alla directory dei dati.

così la mia stringa di connessione che ha funzionato bene in remoto era

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

, mentre sul server vero e proprio, ho dovuto usare

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

dominio +1 = era davvero quello che mi serviva –

+0

+1: Molte grazie! –

Problemi correlati