Segnalazione #856
interfaccia con LDAP asincrona per tornado
0%
Description
documentare poi come questa interfaccia esporta le informazioni ottenute da LDAP (utente e gruppi di cui fa parte) al resto del codice tornado.
Related issues
Associated revisions
Implemented to test authentication. refs: #856
Print auth results. refs: #856
To facilitate repeated iterations, pick the password from ldap_password if it exists. refs: #856
Lookup group information. refs: #856
Use a dataclass to model the User object. refs: #856
Moved user infrastructure in a separate submodule. refs: #856
Added a generic infrastructure for user databases. refs: #856
Fixed a race condition when it failed to stop a service before it had started. refs: #856
Added a fallback local user database to work on non-ldap systems. refs: #856
Use a Group dataclass for groups. refs: #856
Do not stick to confusing ldap names for User and Group fields. refs: #856
Revove need for ldap_bind_dn_template. refs: #856
Added a mock user database, and instantiate a user database in Manager. refs: #856
Fixed mock user db. refs: #856
Mock users only have the admin group when called root or admin. refs: #856
New auth backend: master password. refs: #856
Sync with master. refs: #856
Merged partial work into master after review. Refs: #856
Start documenting the configuration file. refs: #856
Set a sensible default for fuss as the LDAP configuration in the example. refs: #856
Load false values for the LDAP default configuration. refs: #856
Merge branch 't856'. Refs: #856
History
Updated by Elena Grandi over 5 years ago
- Blocks Segnalazione #858: file di configurazione che associa i permessi ad utenti/gruppi added
Updated by Elena Grandi over 5 years ago
- Blocks Segnalazione #860: inserire nome utente e permessi attivi all'interno dell'HTML nel template di base added
Updated by Elena Grandi over 5 years ago
- Blocks Segnalazione #861: Mostrare il nome utente corrente nei template html added
Updated by Elena Grandi over 5 years ago
- Blocks Segnalazione #863: Aggiungere permission checking a operation e API added
Updated by Elena Grandi over 5 years ago
- Target version set to 0.7 Autenticazione e autorizzazione
Updated by Elena Grandi over 5 years ago
Segnalo da #742 che oltre alle utenze ldap, nelle scuole è anche in uso un utente root
con la master password del fuss-server (in /etc/fuss-server/fuss-server.yaml
, se presente)
Updated by Enrico Zini over 5 years ago
- Status changed from Nuovo to In elaborazione
- Assignee changed from Enrico Zini to Elena Grandi
Nel branch t856
ho committato un comando di esempio, che sarà poi da rimuovere:
usage: fuss-manager ldap [-h] uid positional arguments: uid user id to use to test authentication
Che tenta l'autenticazione con un server ldap (la password la chiede con getpass()
).
In config.py
ci sono 3 parametri necessari da configurare per l'autenticazione:
'ldap_uri': "ldap://server:port", 'ldap_search_base': 'dc=fuss,dc=example,dc=it', 'ldap_bind_dn_template': 'uid={uid},dc=fuss,dc=example,dc=it',
L'implementazione è in manager/ldap.py
, asincrona.
Ho un po' di domande:
- Cosa mettiamo come configurazione di default per lo sviluppo?
- Decidiamo un formato per passare i dati su un utente invece di una Entry ldap3?
ldap_bind_dn_template
ha un senso come parametro di configurazione per mappare come passare da username a bind DN di LDAP?
Per esportare i gruppi servirà anche fare una ulteriore query in _sync_authenticate
, immagino: vediamo dopo aver deciso con quale struttura dati restituire i risultati.
Updated by Enrico Zini over 5 years ago
Ho aggiunto la lettura dei gruppi dell'utente. Per un login, e per avere informazioni su un utente, ci sono da fare 3 query LDAP: dati utente, nome gruppo primario, elenco nomi e gid gruppi secondari.
Probabilmente è possibile togliere ldap_bind_dn_template
e aggiugnere sempre uid=$UID
a ldap_user_search_base
. Chiedo feedback a Simone.
Ho improvvisato una struttura User
in ldap.py
, che sarà poi da tirar fuori da ldap.py
e mettere in un qualcosa di piú generico in fuss-manager
. Accetto suggerimenti sul suo layout.
Updated by Enrico Zini over 5 years ago
La configurazione di esempio per LDAP ora è:
'ldap_uri': "ldap://server:port", 'ldap_bind_dn_template': 'uid={uid},ou=People,dc=fuss,dc=example,dc=it', 'ldap_user_search_base': 'ou=People,dc=fuss,dc=example,dc=it', 'ldap_group_search_base': 'ou=Group,dc=fuss,dc=example,dc=it',
Updated by Simone Piccardi over 5 years ago
Allora ldap_bind_dn_template
secondo me è inutile, per ogni utente il DN sarà sempre nella forma uid=username,{{ldap_user_search_base}}
.
Inoltre sul fuss-server l'albero ha sempre la seguente struttura (creata dal playbook) sulla base del dominio specificato in fase di lancio (ex. fuss.lan) ed in genere si contatta sempre su localhost, per cui l'elenco sopra lo esprimerei come (in yaml):
ldap_uri: "ldap://localhost:port" ldap_base: dc=fuss,dc=lan ldap_user_search_base: ou=Users,{{ldap_base}} ldap_group_search_base: ou=Groups,{{ldap_base}}
ci son pure dei rami ou=Computers
e ou=Idmap
ad uso di Samba, che si possono ignorare, visto che non mi risulta usino più il fuss-server come PDC.
Updated by Enrico Zini over 5 years ago
Ho tolto ldap_bind_dn_template e uso invece ldap_user_search_base.
Ho implementato un'astrazione per User, Group, e database utenti e gruppi.
Ho implementato l'autenticazione per LDAP e per db utenti unix locale. Possiamo usare il db utenti unix locale come fallback se ldap non è configurato. Per autenticare utenti però serve essere root.
Updated by Enrico Zini over 5 years ago
A questo punto ti passo il ticket per review, e per eventualmente:
- vedere come impostare la configurazione di default
- documentare le chiavi di configurazione LDAP
Updated by Enrico Zini over 5 years ago
Per la gestione della master password si può fare un MasterPasswordMixin per i vari user database, che controlla la master password prima di fare super().authenticate(...)
Updated by Enrico Zini over 5 years ago
Ho aggiunto anche un user database mock, e l'autodetect del database da usare con lo stesso meccanismo is_viable
usato per le machine data source
Updated by Elena Grandi over 5 years ago
Fatto il merge in master, mi tengo il ticket per quanto nei commenti 13 e successivi
Updated by Elena Grandi over 5 years ago
Aggiunto un nuovo backend per la master password (al posto di un mixin, sembrava più coerente col resto).
È sul branch t853, mi tengo il ticket per il resto.
Updated by Elena Grandi about 5 years ago
- Status changed from In elaborazione to Commenti
- Assignee changed from Elena Grandi to Enrico Zini
Ho iniziato la configurazione del file di configurazione nel branch t856, per me mergiabile (le modifiche sono in doc/configuration.rst
e doc/fuss_manager.yaml.example
).
Per come funziona la is_viable
di LDAP
credo che valga la pena non mettere questi valori nei default di Config
, ma impostare un /etc/fuss-manager/fuss-manager.yaml
con fuss-server
quando lo si installa.
In base a quanto scritto da Simone, I valori da impostare dovrebbero essere quelli usati nei file di documentazione citati sopra.
Updated by Elena Grandi about 5 years ago
- Status changed from Commenti to In elaborazione
- Assignee changed from Enrico Zini to Elena Grandi
mi riprendo il ticket, mi sono accorta che al momento non avendo un valore di default la configurazione non verrebbe caricata
Updated by Elena Grandi about 5 years ago
- Status changed from In elaborazione to Commenti
- Assignee changed from Elena Grandi to Enrico Zini
Fatto caricare valori (False), ti ripasso il ticket per review (il branch è sempre t856)
Updated by Enrico Zini about 5 years ago
- Assignee changed from Enrico Zini to Elena Grandi
Ho fatto merge in master. Il ticket dice inoltre di documentare come vengono esportati i dati utenti dall'interfaccia di db utenti: se implementare funzioni di user management non è una priorità al momento, possiamo rimandare quella parte a quando implementeremo funzioni di user management, e per il momento chiudere questo ticket sbloccando la funzionalità di login.
Te lo passo per conferma: se sei d'accordo chiudi pure.
Updated by Elena Grandi about 5 years ago
- Related to Segnalazione #862: form/view di login added
Updated by Elena Grandi about 5 years ago
- Blocks deleted (Segnalazione #862: form/view di login)
Updated by Elena Grandi about 5 years ago
- Related to Segnalazione #858: file di configurazione che associa i permessi ad utenti/gruppi added
Updated by Elena Grandi about 5 years ago
- Blocks deleted (Segnalazione #858: file di configurazione che associa i permessi ad utenti/gruppi)
Updated by Elena Grandi about 5 years ago
- Related to Segnalazione #860: inserire nome utente e permessi attivi all'interno dell'HTML nel template di base added
Updated by Elena Grandi about 5 years ago
- Blocks deleted (Segnalazione #860: inserire nome utente e permessi attivi all'interno dell'HTML nel template di base)
Updated by Elena Grandi about 5 years ago
- Related to Segnalazione #861: Mostrare il nome utente corrente nei template html added
Updated by Elena Grandi about 5 years ago
- Blocks deleted (Segnalazione #861: Mostrare il nome utente corrente nei template html)
Updated by Elena Grandi about 5 years ago
- Status changed from Commenti to Chiuso
Più che altro la documentazione era su come usare le informazioni di utenza per implementare il resto dei ticket della 0.7, ma direi che nel frattempo ci stiamo lavorando e quindi chiudo.
Initial LDAP wrapper class. refs: #856