2010-09-10 12 views
50

Come posso creare utenti normali e non amministratori in CouchDB?Creazione di utenti regolari in CouchDB

+1

Potresti essere interessato a questo articolo wiki. http://wiki.apache.org/couchdb/How_to_create_users_via_script – user2247543

+0

Quali sono le regole di denominazione? Non riesco a trovare una risposta da nessuna parte. Un nome utente può essere un indirizzo email? – Costa

risposta

16

Il CouchDB Wiki ha un breve articolo su l'security features di CouchDB e come configurare un "lettore" che è quello che assomiglia ad un utente in un database relazionale.

+3

Questo è corretto. La breve risposta alla domanda di IDanil è: "crea un documento nel database di _user". Tuttavia il tuo link spiega tutti i dettagli e le implicazioni. – JasonSmith

-10

Penso che devi mettere un framework web in primo piano per fare ciò come fanno molti siti. I ruoli di amministratore di Couchdb non funzionano su un record per base, quindi se crei un lettore in grado di leggere i profili o la tabella degli account, possono leggere i record.

76

Prima di inserire l'utente nel database _users. L'ID del documento deve essere org.couchdb.user:username, ad es.

Con CouchDB 1.2.0 o successivo utilizzare questo:

{ 
    "_id": "org.couchdb.user:dbreader", 
    "name": "dbreader", 
    "type": "user", 
    "roles": [], 
    "password": "plaintext_password" 
} 

CouchDB sarà hash & sale la password per voi sul lato server e salvare i valori nei campi password_sha e salt (vedi sotto).

Con CouchDB < 1.2.0 del documento utente deve assomigliare a questo:

{ 
    "_id": "org.couchdb.user:dbreader", 
    "name": "dbreader", 
    "type": "user", 
    "roles": [], 
    "salt": "54935938852dd34f92c672ab31e397cedaf0946d", 
    "password_sha": "42253ea4461a604f967813aaff90b139d7018806" 
} 

noti che CouchDB 1.3.0 e poi useranno PBKDF2 invece di aha & sale per hashing la password.

Quindi è possibile creare un'autenticazione per database creando un documento con id _security in un database specifico che non è versionato, ad es.

{ 
    "admins": { 
     "names": ["dbadmin"], 
     "roles": ["editor"] 
    }, 
    "readers": { 
     "names": ["dbreader"], 
     "roles": ["reader"] 
    } 
} 

Questo significa che ci sono 2 utenti in _users oltre admin dbadmin e dbreader. Dovresti farlo nel caso in cui sei troppo pigro per leggere il documento che è già stato suggerito.

+0

Non riesco a capire le convenzioni di denominazione. Ci sono restrizioni su cosa può essere il nome utente? Oltre al prefisso org.couchdb.user: – Costa

+0

in modo che le password utente vengano visualizzate da tutti quando le si memorizzano? e come eliminarli? – astroanu

+0

@astroanu: lo inserisci in testo chiaro, sì, ma quando torna da te dal server (e da ogni richiesta GET successiva), è solo la versione salata e con hash della password che viene restituita. – MidnightLightning

Problemi correlati