Я не могу создать базу данных в CouchDB 3.x с помощью администратора - PullRequest
0 голосов
/ 13 марта 2020

Только что установленная версия couchdb 3.00 на машине windows и настроена как один узел.

Определен админ при установке, даже после установки. Перезапущенный couchDB после определений.

Мои администраторы появляются в пользовательском интерфейсе: enter image description here

Но когда я пытаюсь создать БД с помощью сценария оболочки, он отвечает:

enter image description here

Я абсолютно уверен, что мои пароли верны.

Интересно, если я допустил ошибку или ошибку.

1 Ответ

0 голосов
/ 15 марта 2020

Проблема не связана с CouchDB, скорее разрешены методы аутентификации с Invoke-WebRequest.

Хотя я не могу найти никакой документации, в которой явно указаны учетные данные URL , не поддерживаются, я нахожу в документации PowerShell 1 список методов аутентификации, которые поддерживается:

-Аутентификация

Указывает явный тип аутентификации, который будет использоваться для запроса. По умолчанию None. Аутентификация не может использоваться с UseDefaultCredentials.

Доступные параметры аутентификации:

Нет : эта опция по умолчанию, когда аутентификация не указана; явная аутентификация не используется.

Basi c: Требуются учетные данные. Учетные данные отправляются в заголовке аутентификации RF C 7617 Basi c в формате base64 (пользователь: пароль).

Носитель : требуется токен. Посылает авторизацию RFC 6750: заголовок канала-носителя с предоставленным токеном. Это псевдоним OAuth

OAuth : требуется токен. Отправляет авторизацию RF C 6750: заголовок канала-носителя с предоставленным токеном. Это псевдоним Bearer

Я понимаю, что вышеприведенное означает, что используемый вами способ аутентификации не поддерживается.

Вот один пример, использующий аутентификацию Basi c, один из бесчисленных сотен способов выполнить вашу задачу.

 # setup variables to form a HTTP Basic Authorization
 $uid = "<username>"
 $pwd = "<password>"
 # Convert the Basic credentials to bytes
 $atob = [System.Text.Encoding]::UTF8.GetBytes($uid +":" + $pwd)
 # To Base64 encoding
 $auth = "Basic " + [System.Convert]::ToBase64String($atob)
 # Create the database
 Invoke-WebRequest -Method PUT -Url http://127.0.0.1:5964/abc -Headers @{"Authorization"=$auth}

FWIW, cURL обеспечивает простоту встроенной http-аутентификации URL, но это не может быть вариантом.

Приведенный выше код заимствован из этого SO Q / A ответа относительно аутентификации Basi c.

1 PowerShell Documentation Version 7

...