Сетевой доступ RavenDB

Мне сложно найти информацию о том, как заставить RavenDB работать в сети. Внутри той же сети у меня может быть экземпляр моего приложения, и он будет показывать данные из моего RavenDB. Однако, когда я пытаюсь записать данные, я получаю 401 Unauthorized исключение.

Каков правильный способ установки RavenDB для доступа по сети?

Сейчас у меня это в Raven.Server.exe.config, что является лишь краткосрочным решением:

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

Я не понимаю, что веб-сайт RavenDB говорит, чтобы использовать что-то вроде этого:

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

Хорошо, это отлично подходит для запуска приложения, но как установить сервер RavenDB для разрешения этого пользователя и пароля? Это просто неправильный способ сделать это (как-то настроить конфигурационный файл RavenDB, чтобы разрешить эти учетные данные)? Если это неправильно, как я должен определять учетные данные на стороне сервера?

Изменить: Вот мои попытки и результаты:

Я запускаю RavenDB, дважды щелкнув Raven.Server.exe.

Сценарий 1

Клиент app.Config:

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

Установка DocumentStore:

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

Сохранить операцию:

Session.Store(objectToSave);

Результат: "Удаленный сервер ответил на ошибку: (401)" Неавторизованный ".

Сценарий 2

Клиент app.config:

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

Установка DocumentStore:

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

Сохранить операцию:

Session.Store(objectToSave);

Результат: "Удаленный сервер ответил на ошибку: (401)" Неавторизованный ". Внутреннее исключение: "Неправильное целевое имя участника"

Ответы

Ответ 1

Создайте локального пользователя на машине RavenDB, чтобы запустить и использовать любые учетные данные, которые вы хотите. Затем назначьте права на чтение/запись для каталога /Data (и каталог/Арендаторов, если это необходимо) этому пользователю.

Если вы используете RavenDB как службу или отдельное приложение, удаленный auth должен работать с учетными данными пользователей Windows. Если вы работаете в IIS, убедитесь, что включена проверка подлинности Windows (отключено по умолчанию!).

Ответ 2

Для меня мне пришлось добавить домен в строку подключения на машине prod, но НЕ при обращении к тому же самому удаленному компьютеру... Я не знаю.

Примечание. Я создал пользователя Windows с именем RAVENDB и назначил ему полные разрешения для каталога данных.

поэтому моя строка соединения, которая отлично работала удаленно, была

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

тогда как на реальном сервере мне пришлось использовать

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

Ответ 3

Боб, По умолчанию RavenDB использует проверку подлинности Windows. Поэтому, если вы создадите пользователя на серверной машине, он примет его. Альтернативой является определение определенных пользователей ravendb, но многие люди просто используют Windows Auth.