italia/spid-django

Aggiunta AttributeConsumingService - Eidas

infoFactorySRL opened this issue · 13 comments

Buongiorno,
poiche sto implementanto un login spid di livello 2 è necessario abilitare il nodo eidas.

Seguendo le note di implimentazione è necessario implementare i seguenti AttributeConsumingService (esempio)
<md:AttributeConsumingService index="99">
<md:ServiceName xml:lang="it">eIDAS Natural Person Minimum Attribute Set</md:ServiceName>
<md:RequestedAttribute Name="dateOfBirth"/>
<md:RequestedAttribute Name="familyName"/>
<md:RequestedAttribute Name="name"/>
<md:RequestedAttribute Name="spidCode"/>
</md:AttributeConsumingService>
<md:AttributeConsumingService index="100">
<md:ServiceName xml:lang="it">eIDAS Natural Person Full Attribute Set</md:ServiceName>
<md:RequestedAttribute Name="address"/>
<md:RequestedAttribute Name="dateOfBirth"/>
<md:RequestedAttribute Name="familyName"/>
<md:RequestedAttribute Name="gender"/>
<md:RequestedAttribute Name="name"/>
<md:RequestedAttribute Name="placeOfBirth"/>
<md:RequestedAttribute Name="spidCode"/>
</md:AttributeConsumingService>

Come posso aggiungerli? Ho provato a modificare l'ogetto "service" nel dizionario "SAML_CONFIG" aggiungendo un ulteriore voce ma il metadato generato sembra ignorarla. Come posso inserire il valore index a 99 e 100?

Grazie per la cortese risposta e mi scuso anticipatamente se questo non è il posto gisuto dove porre la domanda

Figurati, è uno tra i posti "giusti" :)

Ti spiego subito, nel mio fork di pysaml2 ho risolto un bug relativo a questo problema, eccolo:
IdentityPython/pysaml2#757

Nonostante questo per SPID preferisco costruire gli oggetti di Response a mano, così da seguire con stretta aderenza le molteplici specifiche tecniche che si "aggiungono" volta per volta.

ecco il tuo riferimento:

# this will renumber acs starting from 0 and set index=0 as is_default

Qui puoi aggiungere il tuo endpoint e sistemargli arbitrariamente il valore di index.
Quindi userai la tua funzione (oppure se ti va rifattorizza in ClassView così fai l'overload esclusivamente della parte interessante). Se ti andasse, in aggiunta, sarò lieto di accettare il tuo contributo nella release ufficiale, affinchè poi tu non debba "sopravvivere" di fork per mantenere il tuo asset in produzione.

Sei il benvenuto!

Ciao @infoFactorySRL
come va con questo task?
Se hai aggiornamenti potremmo aggiungerli alal futura roadmpa del progetto

Ciao @peppelinux purtroppo non ho avuto ancora modo di vedere la questione. Appena possibile (in settimana) ti aggiorno.

@infoFactorySRL mi trovi sul canale #spid di developers italia per qualsiasi considerazione "diretta" 👍

relativo anche a questa
#32

Ti chiedo di testare questo approccio
https://github.com/italia/spid-django/tree/additional_acs

il tuo caso d'uso dovrebbe integrarsi su questo branch prima dell'unione su dev branch

Ciao, hai avuto modo di capire se questa proposta può integrarsi con il tuo caso d'uso?
#37

se così non fosse, ti andrebbe di contribuire per realizzare tutto questo?

Ciao, mi riprometto di testare il branch entro questa settimana. Ti faccio sapere.

@peppelinux tuo ultimo commento era per avvisare @freddy34. Possibile riprendere questa issues? ho aggiornato alla @latest e mi ritrovo (come mi aspettavo) a non poter utilizzare l'autenticazione di SPID. Necessito quindi di ripristinare il mio fork "casareccio" (in modo più strutturato e condiviso) che basandosi sulla versione 0.8.x mi ha consentito in questo ultimo anno di far funzionare le cose.

  • @infoFactorySRL vi sono stati sviluppi da parte Vostra?
  • @peppelinux il branch "additional_acs" è up-to-date? lo si potrebbe allineare nel caso con il main prima di apportare le modifiche?
    grazie a tutti

Si, procediamo, unisciti main e risolvi i conflitti, fai pr su main, la uniamo e facciamo release

scopo dell'intervento dove si ipotizza url del metadato pari a https://app2.example.com/spid/metatada/

Importante è poter settare il "current index" (che non so erro è sempre impostato a 0 hard-coded) applicativo in quanto in un caso, a parità di XML generato (e validato da AGID) l'applicazione potrebbe essere la app1.example.com o la app2.example.com

Possibile avere un feedback sulla fattibilità e approvazione di tali modifiche, delle quali mi farei carico ovviamente. Grazie a tutti

L'index è quello conforme a spid e il codice è per questo. Per una lib generale per saml2 si usa djangosaml2

Come app di esempio lasciamo l'attuale localhost, per altri ACS usiamo risorse interne

Procedi pure, andiamo di revisione sulla pr