italia / spid-django

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

Avviso SPID n. 19 v.4 - gestori di pubblico servizio #25

Open infoFactorySRL opened 3 years ago

infoFactorySRL commented 3 years ago

Buongiorno, a seguito della richiesta di validazione da parte di AGID del mio metadata ho ricevuto questa richiesta:

Essendo voi gestori di pubblico servizio, dovete essere conformi all’Avviso SPID n. 19 v.4 (https://www.agid.gov.it/sites/default/files/repository_files/spid-avviso-n19v4-regole_tecniche_aggregatori_0.pdf) ed in particolare:

  1. l’entityID deve contenere il codice attività pub-op-full
  2. il tag ContactPerson deve avere l’attributo spid:entityType valorizzato come spid:aggregator e deve contenere, nel tag Extensions, il tag vuoto PublicServicesFullOperator

Si rende quindi necessario aggiungere l'attributo spid:entityType valorizzato come spid:aggregator a "ContactPerson" se viene inserito il tag "PublicServicesFullOperator" Suggerisco di implementare questo cambiamento nel file: djangosaml2_spid/views.py Da

 for k,v in contact.items():
                if k in contact_kwargs: continue
                ext = saml2.ExtensionElement(
                        k, 
                        namespace=settings.SPID_PREFIXES['spid'],
                        text=v
                )
                spid_extensions.children.append(ext)

A

for k,v in contact.items():
                if k in contact_kwargs: continue
                if k=="PublicServicesFullOperator":
                    spid_contact.extension_attributes= {"spid:entityType": "PublicServicesFullOperator"}
                ext = saml2.ExtensionElement(
                        k, 
                        namespace=settings.SPID_PREFIXES['spid'],
                        text=v
                )
                spid_extensions.children.append(ext)
peppelinux commented 3 years ago

Ok mi piace, lo testo prima di unirlo e sarebbe anche l'ora di fare unit test sulle varie opzioni di contact person

Grazie ottimo contributo

infoFactorySRL commented 3 years ago

C'è un piccolo errore nella codice precedente: spid_contact.extension_attributes= {"spid:entityType": "PublicServicesFullOperator"} deve essere spid_contact.extension_attributes= {"spid:entityType": "spid:aggregator"}

Inoltre volevo segnalare che l'aggiunta del tag PublicServicesFullOperator genera errore nella verifca del XSD da parte del toolo SPID Validator.

the metadata must validate against the XSD stderr: ./data/https_64e1f4223730_ngrok_io_spid_pub_opfull/sp-metadata.xml:45: element PublicServicesFullOperator: Schemas validity error : Element '{https://spid.gov.it/saml-extensions}PublicServicesFullOperator': This element is not expected. Expected is ( {https://spid.gov.it/invoicing-extensions}CessionarioCommittente ). stderr: ./data/https_64e1f4223730_ngrok_io_spid_pub_opfull/sp-metadata.xml fails to validate

peppelinux commented 3 years ago

Questo contributo si presenterebbe sotto forma di pull request.

Te la senti di procedere? Serve anche un esempio su come parametrizzare questo comportamento all'interno del settings di spid_config

infoFactorySRL commented 3 years ago

Buongiorno, ho provato a creare un nuovo branch e "aggiungerlo" con il comando git push --set-upstream origin [nuovo_branch] per poi creare una pull request ma ottengo questo errore: remote: Permission to italia/spid-django.git denied to infoFactorySRL. fatal: unable to access 'https://github.com/italia/spid-django.git/': The requested URL returned error: 403 Sbaglio qualche cosa?

peppelinux commented 3 years ago

fai il tuo fork e pushi sul tuo fork, dopodiché fai pull request sul branch dev

peppelinux commented 3 years ago

ho unito su dev la feature da te proposta via PR credo che necessiti di test e tua revisione, senza dimenticarci di una sezione dedicata all'interno del readme che brevemente descriva questa nuova feature