Docs Italia beta

Documenti pubblici, digitali.

5.1. SAML

La richiesta di autenticazione SAML per la firma con SPID si riferisce, nell’elemento <AuthnRequest> (namespace samlp), all’attributo AttributeConsumingServiceIndex corrispondente all’Attribute Consuming Service specifico, di indice “77”, introdotto al §4.6.

Le richieste e risposte di autenticazione SAML impiegano session ID, nei loro rispettivi attributi ID, valorizzati come stringhe uniche che cominciano con sig-. Le richieste e risposte di autenticazione contengono entrambe un’estensione <Signature> (namespace spid) contenuta nella sezione prevista dallo standard per le estentioni SAML. I metadati sopra elencati sono realizzati mediante i seguenti elementi:

  • punti a. e d. tramite elemento <Filename> (namespace spid), contenente il nome del file del documento, comprensivo della corretta estensione, composto come descritto in §4.2;
  • punti b. e f. tramite elemento <DigestValue> (namespace ds, standard XAdES), contenente un’impronta rappresentata applicandole la trasformazione Base64 (cfr. RFC 4648);
  • punti c. e g. tramite elemento <DigestMethod> (namespace ds, standard XAdES), contenente la codifica W3C della funzione di hash utilizzata per il calcolo dell’impronta del documento;
  • l’identificativo univoco di sessione è indicato nell’attributo ID dell’elemento <AuthnRequest> per la richiesta di autenticazione, il cui valore combacia con quello dell’attributo InResponseTo dell’elemento <Response> per la corrispondete risposta di autenticazione.

Qui sotto è riportato un esempio di richiesta di autenticazione SAML, comprensiva dell’Attribute Consuming Service specifica e dell’elemento <Signature> (namespace spid) per la richiesta di autenticazione, relativa a un documento in formato PDF predisposto dal SP e successivamente inviato all’IdP per la sottoscrizione.

<samlp:AuthnRequest
      AttributeConsumingService="77"
      Destination="https://url-IdP-destinatario"
      ID="sig-SessionID"
      xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
      xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
      xmlns:spid="https://spid.gov.it/saml-extensions"
      xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
    <saml:Issuer>https://url-SP-inviante</saml:Issuer>
    ...
    <samlp:Extensions>
        <spid:Signature>
            <spid:Filename>AgID_20190321T083410.tmp.pdf</spid:Filename>
            <ds:DigestMethod Algorithm="http://funzione_hash" />
            <ds:DigestValue>ImprontaDocumento1</ds:DigestValue>
        </spid:Signature>
        <spid:Signer>
            <saml:Attribute
                  xmlns:xs="http://www.w3.org/2001/XMLSchema"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
                  Name="fiscalNumber">
               <saml:AttributeValue xsi:type="xs:string">
                   CodiceFiscaleFirmatario
               </saml:AttributeValue>
           </saml:Attribute>
        </spid:Signer>
    </samlp:Extensions>
</samlp:AuthnRequest>

Qui sotto è riportato un esempio di elemento <Signature> per la risposta di autenticazione SAML relativa alla richiesta di autenticazione di cui al precedente esempio, ove l’IdP comunica al SP i metadati del documento firmato con SPID.

<samlp:Response
      xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
      Destination="https://url-SP-destinatario"
      ID="_ResponseID"
      InResponseTo="sig-SessionID">
    <saml:Issuer>https://url-IdP-inviante</saml:Issuer>
    ...
    <samlp:Extensions
          xmlns:spid="https://spid.gov.it/saml-extensions">
        <spid:Signature>
            <spid:Filename>AgID_20190321T083410.pdf</spid:Filename>
            <ds:DigestMethod Algorithm="http://funzione_hash" />
            <ds:DigestValue>ImprontaDocumento2</ds:DigestValue>
        </spid:Signature>
    </samlp:Extensions>
</samlp:Response>