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:
spid-django/src/djangosaml2_spid/views.py
Line 342 in f43cf34
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.
@freddy ^
@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/
- setting del valore dell'attributo entityID: es. https://identity.example.com/
- molteplici nodi <md:KeyDescriptor use="signing">
- molteplici nodi <md:KeyDescriptor use="encryption"> (in numero pari al punto precedente)
- molteplici nodi <md:SingleLogoutService ...>
- es. nodo 1: Location="https://app1.exampe.com/simplesaml/module.php/saml/sp/saml2-logout.php/customer-sp"/"
- es .nodo 2: Location="https://app2.example.com/spid/ls/post/"
- molteplici nodi <md:AssertionConsumerService ...>
- es. nodo 1: Location="https://app1.exampe.com/simplesaml/module.php/saml/sp/saml2-acs.php/customer-sp"/"
- es .nodo 2: Location="https://app2.example.com/spid/acs/"
- molteplici nodi <md:AttributeConsumingService ...> ciascuno con un set di attributi che potrebbe variare
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