Доступ К Сети RavenDB
мне трудно найти информацию о том, как заставить RavenDB работать в сети. В той же сети у меня может быть экземпляр моего приложения, и он будет показывать данные из моего RavenDB. Однако, когда я пытаюсь записать данные, я получаю 401 несанкционированное исключение.
Как правильно настроить RavenDB для доступа по сети?
сейчас, у меня есть это Рейвен.Сервер.исполняемый.config, что является лишь краткосрочным решение:
<add key="Raven/AnonymousAccess" value="All" />
чего я не понимаю, так это то, что веб-сайт RavenDB говорит использовать что-то вроде этого:
<connectionStrings>
<add name="RavenDb"
connectionString="Url=http://serverName:8080;user=user;password=password"/>
</connectionStrings>
хорошо, это отлично подходит для запущенного приложения, но как установить сервер RavenDB, чтобы разрешить этому пользователю и паролю? Это просто неправильный способ сделать это (каким-то образом установив файл конфигурации RavenDB, чтобы разрешить эти учетные данные)? Если это неправильно, как я должен определить учетные данные на стороне сервера?
Edit: вот мои попытки и результаты:
я запускаю RavenDB, дважды щелкнув Raven.Сервер.исполняемый.
Сценарий 1
приложение клиента.Config:
<connectionStrings>
<add name="RavenDb" connectionString="Url = http://server:8080;domain=Xx;user=Xxuser;password=pw"/>
</connectionStrings>
Настройка DocumentStore:
DocumentStore documentStore = new DocumentStore();
documentStore.ConnectionStringName = "RavenDb";
documentStore.Initialize();
Сохранить Операции:
Session.Store(objectToSave);
результат: "Удаленный сервер вернул ошибку: (401) Unauthorized."
Сценарий 2
приложение клиента.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) Unauthorized." Внутреннее исключение:"неверное имя целевого участника"
3 ответов
создайте локального пользователя на машине, на которой работает RavenDB, и используйте любые учетные данные. Затем назначьте этому пользователю разрешения на чтение/запись для каталога /Data (и каталога /Tenants, если необходимо).
Если вы используете RavenDB как службу или автономное приложение, удаленная аутентификация должна работать с учетными данными пользователей (windows). Если вы работаете в IIS, убедитесь, что включена проверка подлинности Windows (по умолчанию отключена!).
для меня мне пришлось добавить домен в строку подключения на машине 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" />
Боб, По умолчанию, RavenDB использует проверку подлинности Windows. Поэтому, если вы создадите пользователя на серверной машине, он примет его. Альтернативой является определение конкретных пользователей ravendb, но многие люди просто используют Windows Auth.