Фоновое исследование:
Регистрация пользователя в Couchapp / CouchDB через jquery.couch.js или в противном случае
http://blog.couchbase.com/what%E2%80%99s-new-couchdb-10-%E2%80%94-part-4-security%E2%80%99n-stuff-users-authentication-authorisation-and-permissions
https://issues.apache.org/jira/browse/COUCHDB-1175 - в частности, сообщения "Ари Наджарян"
Вопрос:
Перефразируя SO вопрос, который я написал выше:
"По сути, я хочу, чтобы у меня была форма регистрации для регистрации учетной записи в couchdb для couchapp. Это повлекло бы за собой создание нового пользователя в базе данных couchdb _users и создание новой базы данных, когда новый пользователь назначил бы роль администратора базы данных. Все, что требует учетных данных администратора сервера. "
Ответ на предыдущий вопрос касался использования внешнего отдельного сервера, который был зарегистрирован на couchdb как администратор, для мониторинга couchdb и изменения couchdb по желанию в ответ на определенные события данных, поступающие от клиента.
Мой вопрос - это единственный путь? Разве это не разрушает всю цель двухуровневого веб-стека couchdb? Есть ли какой-нибудь способ изменить базу данных couchdb из функции проверки, которая проверяет документ «type == user», когда «внутренне» / отдельно входит в систему как администратор, может быть?
Я прошу прощения, если есть какой-то простой способ сделать это, и я просто не нашел нужную документацию.
Дополнительное уточнение проблемы:
- На интернет-адресе сидит экземпляр couchdb.
- Эта база данных базы данных предоставляет случайному клиенту html-страницу и встроенный сценарий javascript, который содержит форму регистрации / входа в систему.
- Клиент вводит регистрационную информацию (имя, пароль) и отправляет
- JS-скрипт использует объект XMLHttpRequest, чтобы открыть соединение с экземпляром couchdb, и отправляет ... ПРОБЛЕМА!
Проблема № 1 - если учетные данные хранятся в коде (который будет отправлен в качестве проверки для новой пользовательской базы данных), тогда любой может «просмотреть исходный код HTML» и получить базу данных.
1046 * -ИЛИ- *
Проблема № 2 - Если учетные данные не предоставлены и запрос отправлен анонимно, то в базе данных _users будет создан новый пользователь и будет отправлено сообщение об успешном ответе. Но для пользователя не было создано никакой новой базы данных (и не может быть без учетных данных администратора), с которой пользователь может взаимодействовать для целей конкретного приложения (например, добавлять / удалять данные). И - из приведенной выше ссылки на блог на базе couchbase - если вы защитили свою базу данных ролями / именами от анонимных читателей и функций проверки для предотвращения анонимных записей, то сделайте анонимную учетную запись пользователя (например, клиент, который хочет зарегистрировать пространство базы данных, чтобы использовать app) ничего не может сделать, потому что анонимный пользователь по понятным причинам безопасности не может указать, какие роли он хочет иметь. Это означает, что единственный способ иметь -functional- пользователей - это заранее создать учетные записи пользователей + связанные базы данных в качестве администратора, а затем раздать эти учетные данные пользователя - так, как частная система приглашений, да?
Повторюсь, есть ли способ, использующий ТОЛЬКО couchdb и некоторую комбинацию обработчиков аутентификации couchdb, функции разработки документов, клиентский ajax и т. Д. Для подключения клиента для регистрации и получения персональной базы данных (и ТОЛЬКО этой базы данных, очевидно, ) они имеют доступ и могут взаимодействовать?