Пользователь не может получить доступ к собственному документу в _users в CouchDB - PullRequest
1 голос
/ 28 мая 2020

У меня проблемы с CouchDB 3.1.0 на Windows. Я установил его, во время установки создал пользователя с правами администратора (admin:admin), а затем создал пользователя, как указано в документации:

$ curl -X PUT http://admin:admin@localhost:5984/_users/org.couchdb.user:jan \
>      -H "Accept: application/json" \
>      -H "Content-Type: application/json" \
>      -d '{"name": "jan", "password": "apple", "roles": [], "type": "user"}'
{"ok":true,"id":"org.couchdb.user:jan","rev":"1-fd5a90118f51fb895d594f2fdfa9b12f"}

Fine. Теперь позвольте мне заставить пользователя сделать c:

$ curl -X GET http://jan:apple@localhost:5984/_users/org.couchdb.user:jan
{"error":"forbidden","reason":"You are not allowed to access this db."}

Что я делаю не так? Что я пропустил?

Конечно, это работало в CouchDB 2.3.

Спасибо.

1 Ответ

1 голос
/ 06 июля 2020

К сожалению, документация по CouchDB 3.x устарела. На сегодняшний день в разделе База данных аутентификации в документации по безопасности указано:

Пользователи могут получать доступ только к (GET /_users/org.couchdb.user:Jan) или изменять (PUT /_users/org.couchdb.user:Jan) документы, которыми они владеют

Однако в нем не указано, что пользователи по умолчанию не имеют доступа к любым документам в базе данных _users.

Чтобы разрешить доступ, сначала нужно изменить флаг users_db_security_editable на true в настройках, а затем очистить список members -> roles в объекте безопасности _users. В этом списке по умолчанию _admin. В качестве альтернативы вы можете добавить роль для своих пользователей и вместо этого добавить эту роль в members -> roles.

Обратите внимание, что это позволит пользователям читать и права записи в свой пользовательский документ.

Существует открытая проблема Github для изменения документации.

Другие источники:

https://github.com/apache/couchdb/issues/2881

https://github.com/apache/couchdb/issues/2730

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...