Сетевой доступ 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.