italia / spid-django

SPID authentication for Django
Apache License 2.0
42 stars 20 forks source link

Nuovi utenti django creati su successivi login dello stesso utente SPID #17

Closed calicant closed 3 years ago

calicant commented 3 years ago

@peppelinux ho visto che sono creati nuovi utenti django quando lo stesso utente si autentica più volte via spid. Potrebbe essere utile che il backend di autenticazione tenga conto che si tratta dello stesso user, magari usando lo spidCode?

peppelinux commented 3 years ago

usa il match di djangosaml2 __iexact per il ricongiungimento degli account e condividi la configurazione. lo fixiamo subito

peppelinux commented 3 years ago

Ciao @calicant, in questo commit https://github.com/italia/spid-django/commit/70b0108502c3021b45f40a863eb8ac16d5ee777c

ho aggiunto un modello custom di utenti per la gestione in django dei fileds spid. Per l'occasione ho esemplificato un ricongiungimento basato su codice fiscale.

Spero di aver incontrato il tuo caso d'uso, a presto e grazie per l'hint

calicant commented 3 years ago

usa il match di djangosaml2 __iexact per il ricongiungimento degli account e condividi la configurazione. lo fixiamo subito

grazie. ho provato ora:

SAML_DJANGO_USER_MAIN_ATTRIBUTE = 'email' SAML_DJANGO_USER_MAIN_ATTRIBUTE_LOOKUP = '__iexact'

ma lasciando lo username vuoto si ha un IntegrityError su login di un differente utente spid

peppelinux commented 3 years ago

ti sconsiglio di lasciare username vuoto! vedi l'esempio con fiscalNumber e posta qui l'esito ed eventuali tuoi dubbi

calicant commented 3 years ago

Ciao @calicant, in questo commit 70b0108

ho aggiunto un modello custom di utenti per la gestione in django dei fileds spid. Per l'occasione ho esemplificato un ricongiungimento basato su codice fiscale.

Spero di aver incontrato il tuo caso d'uso, a presto e grazie per l'hint

grazie @peppelinux questa configurazione, anche senza scomodare il modello custom, fa proprio al caso:

SAML_USE_NAME_ID_AS_USERNAME = False SAML_DJANGO_USER_MAIN_ATTRIBUTE = 'username' SAML_CREATE_UNKNOWN_USER = True SAML_DJANGO_USER_MAIN_ATTRIBUTE_LOOKUP = '__iexact'

SAML_ATTRIBUTE_MAPPING = { 'fiscalNumber': ('username', ), }

peppelinux commented 3 years ago

esatto! ho aggiunto custom proprio per dare un esempio di come gestire anche il codice fiscale. Chiudiamo questa issue in bellezza

peppelinux commented 3 years ago

@calicant perchè non proponi un bel PR sul README? sarebbe veramente utile!

peppelinux commented 3 years ago

fatto qui https://github.com/italia/spid-django/commit/356d151eb65b6d4ce67a1a8e01b437baedc26849

grazie infinite

calicant commented 3 years ago

fatto qui 356d151

grazie infinite

grazie a te!