Project

General

Profile

Segnalazione #915

Segnalazione #789: Integrazione in octonet

Passare l'autenticazione da octonet a fuss-manager

Added by Elena Grandi over 2 years ago. Updated over 2 years ago.

Status:
Chiuso
Priority:
Normale
Assignee:
Start date:
10/23/2019
Due date:
% Done:

10%

Resolution:

Associated revisions

Revision e4a345c3 (diff)
Added by Enrico Zini over 2 years ago

Make use of django.core.signing without access to django settings module. refs: #915

Revision 577ae3c0 (diff)
Added by Enrico Zini over 2 years ago

Implemented auth forward view. refs: #915

Revision 46cf6b3e (diff)
Added by Enrico Zini over 2 years ago

In mock mode, use a auth_forward_secret. refs: #915

History

#1 Updated by Enrico Zini over 2 years ago

Possiamo passare l'autenticazione usando la struttura User di fuss-manager encodata in un HMAC firmato da Django. Entrambi i siti devono condividere una secret key (diversa dalla secret key del sito) apposta per il passaggio dell'autenticazione.

Lato octonet, si può usare django.core.signing.dumps (https://docs.djangoproject.com/en/2.2/topics/signing/) con la key custom.

Lato fuss-manager server reimplementare django.core.signing.loads (prendendo i pezzi che servono, se servono, dai sorgenti di django, ma comunque in buona parte è tutto basato sul modulo python hmac https://docs.python.org/3.5/library/hmac.html)

Fuss-manager può ricevere questo token in una view di login alternativa, autenticare e decodificare il token, e inserire la struttura User risultante direttamente nella session senza avere bisogno nemmeno di toccare ldap.

Questo sistema di autenticazione in fuss-manager è disabilitato per default, e si abilita se è presente il secret di passaggio autenticazione nella configurazione.

In fase di deploy, sarà fuss-server a impostare questo valore, per non averlo abilitato per default fuori da fuss.

#2 Updated by Enrico Zini over 2 years ago

  • Assignee set to Enrico Zini

#3 Updated by Enrico Zini over 2 years ago

  • Status changed from Nuovo to In elaborazione
  • Assignee changed from Enrico Zini to Mark Caglienzi
  • % Done changed from 0 to 10

Ho implementato una view di forwarding dell'autenticazione.

Per usarlo, si usa django.core.signing.dumps per codificare e firmare una struttura che contiene i dati dell'utente e l'url a cui ridirigere dopo l'autenticazione.

Per esempio:

        from django.core import signing

        token = signing.dumps({
            "url": "/test",
            "user": {
                "name": "test",
                "id": 2,
                "display_name": "Test User",
                "groups": [{"name": "test", "id": 1}, {"name": "users", "id": 2}],
            },
        }, key=self._app.config.auth_forward_secret, salt="fuss_manager.auth")

        # Visit "/auth-forward" + "?t=" + token

Ora rimane da provare il lato octonet: creare un iframe, generare il token in base ai dati dell'utente corrente, e aprire l'iframe sulla view di auth-forward.

Mark, ti passo la palla, e rimango a disposizione per aiuto se serve

#4 Updated by Enrico Zini over 2 years ago

Nota, il secret usato qui è diverso dal secret di django: serve aggiungere un nuovo secret nei setting da condividere con fuss-manager per firmare/autenticare i token di forward dell'autenticazione

#5 Updated by Enrico Zini over 2 years ago

  • Assignee changed from Mark Caglienzi to Elena Grandi

Ho fatto push della parte di embedding preparata al 99% da mark in octonet, e il forward dell'autenticazione sembra funzionare.

Manca un po' di code review, e manca decidere cosa consentire di fuss-manager agli utenti anonimi.

Passo a Elena per review e per discutere di questa cosa.

#6 Updated by Enrico Zini over 2 years ago

Dopo aver sentito simone, guarda lui ora la situazione di quali utenti possano accedere a cosa e a cosa possono accedere gli anonimi

#7 Updated by Elena Grandi over 2 years ago

  • Status changed from In elaborazione to Chiuso
  • Assignee changed from Elena Grandi to Enrico Zini

Mergiato in master.

Riguardo agli accessi per i vari utenti c'è #742

Also available in: Atom PDF