Badania Tło:Bezpieczne stronie klienta uwierzytelniania użytkownika couchApp/couchdb
User Signup in Couchapp/CouchDB through jquery.couch.js or Otherwise
https://issues.apache.org/jira/browse/COUCHDB-1175 - specyficznie "Ari Najarian" „s posty
Pytanie:
Aby sparafrazować pytanie SO zamieszczone powyżej:
"Zasadniczo chcę mieć formularz rejestracyjny do rejestracji konta w couchdb dla couchapp. Wymagałoby to utworzenia nowego użytkownika w bazie danych couchdb _users oraz utworzenia nowej bazy danych, z nowym użytkownikiem przypisanym do roli administratora bazy danych. Wszystko to wymaga poświadczeń administratora serwera. "
Odpowiedź na poprzednie pytanie dotyczyła użycia zewnętrznego serwera, który był zalogowany do couchdb jako administrator w celu monitorowania couchdb i modyfikowania couchdb zgodnie z oczekiwaniami w odpowiedzi na określone zdarzenia danych pochodzące od klienta
Moje pytanie brzmi - czy to jedyny sposób? Czy to nie jest sprzeczne z celem 2-warstwowej aplikacji couchdb? Czy istnieje sposób modyfikacji bazy danych couchdb z poziomu funkcji sprawdzania poprawności, która sprawdza "typ == user "document while" wewnętrznie "/ osobno zalogowany jako administrator może?
Przepraszam, jeśli istnieje prosty sposób, aby to zrobić, a ja po prostu nie zrobiłem tego". t znaleźć odpowiednią dokumentację.
Extra Problem Wyjaśnienie:
- Istnieje couchdb instancja siedzi pod adresem internetowym.
- Baza danych kanapy służy do losowego klienta strony html i osadzonego skryptu javascript zawierającego formularz rejestracji/logowania.
- Klient wprowadza informacje o rejestracji (nazwa, hasło) i przesyła
- Skrypt JS używa obiektu XMLHttpRequest do otwarcia połączenia z instancją couchdb i wysyła ... PROBLEM!
Problem # 1 - Jeśli poświadczenia są przechowywane w kodzie (do wysłania jako weryfikacja dla nowej bazy danych użytkowników), każdy może "wyświetlić źródło html" i przejąć bazę danych.
LUB
Zadanie nr 2 - Jeśli poświadczenia nie są dostarczane, a wniosek wysyłany jest anonimowy, a następnie nowy użytkownik zostanie utworzony w bazie _users a komunikat odpowiedzi sukces zostanie wysłany. Ale dla użytkownika nie utworzono nowej bazy danych (i nie można jej pominąć przy uwierzytelnianiu administratora), z którą użytkownik może wchodzić w interakcję dla celów specyficznych dla aplikacji (np. Dodawanie/usuwanie danych). I - z powyższego łącza blogu - jeśli zabezpieczyłeś bazę danych rolami/nazwami przed anonimowymi czytnikami i funkcjami walidacji, aby zapobiec anonimowym zapisom, to anonimowe konto użytkownika (np. Klient, który chce zarejestrować obszar bazy danych, aby użyć app) nie może nic zrobić, ponieważ anonimowy użytkownik nie może, z oczywistych względów bezpieczeństwa, określić żadnych ról, które chcą mieć.Co oznacza, że jedynym sposobem na to, aby użytkownicy funkcyjni mieli tworzyć konta użytkowników i powiązane bazy danych jako administrator, a następnie rozdawać te poświadczenia użytkownika - tak jak prywatny system zaproszeń, tak?
Powtórzmy, czy jest jakiś sposób, używając TYLKO couchdb i pewnej kombinacji procedur obsługi autentykacji couchdb, funkcji dokumentów projektowych, ajaxów po stronie klienta itd., Aby klient łączący się mógł zarejestrować i uzyskać osobistą bazę danych (i TYLKO tę bazę danych) oczywiście) mają dostęp i mogą wchodzić w interakcje?
możliwy duplikat [Rejestracja użytkownika w Couchapp/CouchDB przez jquery.couch.js lub Inaczej] (http://stackoverflow.com/questions/5305543/user-signup-in-couchapp-couchdb-through-jquery-couch -js-or-inaczej) –
Mam to pytanie wymienione w mojej sekcji "badania w tle" mojego pytania (a więc 2 pytania są teraz powiązane). Stworzyłem ten post, ponieważ rozwiązania sugestii w drugim pytaniu dotyczą dodania kolejnej mini-warstwy do poziomu couchdb i chcę wiedzieć, czy istnieje "czyste" rozwiązanie problemu couchdb. Chciałbym opublikować powyższy link, ale nie chciałem przejąć kontroli nad pytaniem innej osoby. – jigritsn
To pytanie jest z pewnością istotne. Chcę mieć czyste i bezpieczne rozwiązanie tylko dla couchdb. – gregm