Docs Italia beta

Documenti pubblici, digitali.

Metadata

Ciascuna entità presente nella federazione SPID è descritta da un file di metadati, che ne riporta il certificato X509, gli endpoint e le altre informazioni necessarie alla comunicazione con le altre entità.

Nota

La distribuzione dei metadati a tutti i soggetti è operata dall’Agenzia per l’Italia Digitale attraverso il Registro.

Identity Provider

Le caratteristiche dell’Identity provider sono definite attraverso metadata conformi allo standard SAML v2.0 (SAML-Metadata) e rispettano le condizioni di seguito indicate:

SI DEVE

  • Nell’elemento <EntityDescriptor> deve essere presente il seguente attributo:

    • entityID indicante l’identificativo (URI) dell’entità univoco in ambito SPID
  • L’elemento <IDPSSODescriptor> specifico che contraddistingue l’entità di tipo Identity Provider deve riportare i seguenti attributi:

    • protocolSupportEnumeration: che enumera gli URI indicanti i protocolli supportati dall’entità (poiché si tratta di un’entità SAML 2.0, deve indicare almeno il valore del relativo protocollo: urn:oasis:names:tc:SAML:2.0:protocol)
    • WantAuthnRequestSigned: attributo con valore booleano che impone ai Service Provider che fanno uso di questo Identity provider l’obbligo della firma delle richieste di autenticazione;

    all’interno di <IDPSSODescriptor> devono essere presenti:

    • l’elemento <KeyDescriptor> che contiene l’elenco dei certificati e delle corrispondenti chiavi pubbliche dell’entità, utili per la verifica della firma dei messaggi prodotti da tale entità nelle sue interazioni con le altre (SAMLMetadata, par. 2.4.1.1)

    • l’elemento <KeyDescriptor> che contiene il certificato della corrispondente chiave pubblica dell’entità, utile per la verifica della firma dei messaggi prodotti da tale entità nelle sue interazioni con le altre (SAML-Metadata, par. 2.4.1.1)

    • l’elemento <NameIDFormat> riportante l’attributo:

      • format, indicante il formato urn:oasis:names:tc:SAML:2.0:nameidformat:transient come quello supportato per l’elemento di <NameID> utilizzato nelle richieste e risposte SAML per identificare il subject cui si riferisce un’asserzione
    • uno o più elementi <SingleSignOnService> che specificano l’indirizzo del Single Sign-On Service riportanti i seguenti attributi:

      • Location URL endpoint del servizio per la ricezione delle richieste

      • Binding che può assumere uno dei valori

        • urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
        • urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
    • uno o più elementi <SingleLogoutService> che specificano l’indirizzo del Single Logout Service riportanti i seguenti attributi:

      • Location URL endpoint del servizio per la ricezione delle richieste di Single Logout;

      • Binding che può assumere uno dei valori

        • urn:oasis:names:tc:SAML:2.0:bindings:SOAP
        • urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
        • urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

        Nota

        Ad oggi, nessun Identity Provider espone un SingleLogoutService basato su SOAP.

      • ResponseLocation (opzionale): URL endpoint del servizio per la ricezione delle risposte alle richieste di Single Logout.

    opzionalmente possono essere presenti:

    • uno o più elementi <Attribute> ad indicare nome e formato degli attributi SPID certificabili dell’Identity Provider (cfr. Tabella attributi SPID), riportanti gli attributi:

      • Name: nome dell’attributo SPID (colonna identificatore della Tabella attributi SPID)
      • xsi:type: tipo dell’attributo (colonna tipo della Tabella attributi SPID)
  • Deve essere presente l’elemento <Signature> riportante la firma sui metadata. La firma deve essere prodotta secondo il profilo specificato per SAML (SAML-Metadata, cap. 3) utilizzando chiavi RSA almeno a 1024 bit e algoritmo di digest SHA-256 o superiore;

SI PUÒ

  • È consigliata la presenza di un elemento <Organization> a indicare l’organizzazione a cui afferisce l’entità specificata, riportante gli elementi:

    • <OrganizationName> indicante un identificatore language-qualified dell’organizzazione a cui l’entità afferisce
    • <OrganizationURL> riportante in modalità language-qualified la URL istituzionale dell’organizzazione.

Esempio: metadata IdP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<md:EntityDescriptor xmlns:md = "urn:oasis:names:tc:SAML:2.0:metadata"
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
    xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
    entityID="http://spid.identityprovider.it"
    ID="_2ini49248n98dn984n...">
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        [...]
    </ds:Signature>
    <md:IDPSSODescriptor
        protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"
        WantAuthnRequestsSigned="true">
        <md:KeyDescriptor use="signing">...</md:KeyDescriptor>
        <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
            Location="https://spid.identityprovider.it/Post-Post-saml2slo"
            ResponseLocation="https://spid.identityprovider.it/Post-Post-saml2slo"/>
        <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
            Location="https://spid.identityprovider.it/redirect-Post-saml2slo"
            ResponseLocation="https://spid.identityprovider.it/redirect-Post-saml2slo"/>
        <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
        <md:SingleSignOnService
            Location="https://spid.identityprovider.it/redirect-Post-saml2sso"
            Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"/>
        <md:SingleSignOnService
            Location="https://spid.identityprovider.it/Post-Post-saml2sso"
            Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
        <saml:Attribute xsi:type="xsi:string" Name="familyName"/>
        <saml:Attribute xsi:type="xsi:string" Name="name"/>
        <saml:Attribute xsi:type="xsi:string" Name="spidCode"/>
        <saml:Attribute xsi:type="xsi:string" Name="fiscalNumber"/>
        <saml:Attribute xsi:type="xsi:string" Name="gender"/>
        <saml:Attribute xsi:type="xsi:string" Name="dateOfBirth"/>
        <saml:Attribute xsi:type="xsi:string" Name="placeOfBirth"/>
        <saml:Attribute xsi:type="xsi:string" Name="companyName"/>
        <saml:Attribute xsi:type="xsi:string" Name="registeredOffice"/>
        <saml:Attribute xsi:type="xsi:string" Name="ivaCode"/>
        <saml:Attribute xsi:type="xsi:string" Name="idCard"/>
        <saml:Attribute xsi:type="xsi:string" Name="mobilePhone"/>
        <saml:Attribute xsi:type="xsi:string" Name="email"/>
        <saml:Attribute xsi:type="xsi:string" Name="address"/>
        <saml:Attribute xsi:type="xsi:string" Name="digitalAddress"/>
    </md:IDPSSODescriptor>
</md:EntityDescriptor>

Disponibilità dei metadata

I metadata Identity Provider saranno disponibili per tutte le entità SPID federate attraverso la URL https://<dominioGestoreIdentita>/metadata, ove non diversamente specificato nel Registro SPID, e saranno firmate in modalita detached dall’Agenzia per l’Italia Digitale. L’accesso deve essere effettuato utilizzando il protocollo TLS nella versione più recente disponibile.

Service Provider

Le caratteristiche del Service Provider devono essere definite attraverso metadata conformi allo standard SAML v2.0 (SAML-Metadata) e rispettare le condizioni di seguito indicate:

SI DEVE

  • Nell’elemento <EntityDescriptor> deve essere presente il seguente attributo:

    • entityID: indicante l’identificativo univoco (un URI) dell’entità;
  • Deve essere presente l’elemento <KeyDescriptor> contenenete il certificato della corrispondente chiave pubblica dell’entità, utile per la verifica della firma dei messaggi prodotti da tale entità nelle sue interazioni con le altre (SAML-Metadata, par. 2.4.1.1);

  • Deve essere presente l’elemento <Signature> riportante la firma sui metadata. La firma deve essere prodotta secondo il profilo specificato per SAML (SAML-Metadata, cap. 3) utilizzando chiavi RSA almeno a 1024 bit e algoritmo di digest SHA-256 o superiore;

  • Deve essere presente l’elemento <SPSSODescriptor> riportante i seguenti attributi:

    • protocolSupportEnumeration: che enumera, separati da uno spazio, gli URI associati ai protocolli supportati dall’entità (poiché si tratta di un’entità SAML 2.0, deve indicare almeno il valore del relativo protocollo: urn:oasis:names:tc:SAML:2.0:protocol);
    • AuthnRequestSigned: valorizzato true attributo con valore booleano che esprime il requisito che le richieste di autenticazione inviate dal Service Provider siano firmate;
  • Deve essere presente almeno un elemento <AssertionConsumerService> indicante il servizio (in termini di URL e relativo binding HTTP-POST) a cui contattare il Service Provider per l’invio di risposte SAML, riportante i seguenti attributi:

    • index che può assumere valori unsigned;
    • Binding posto al valore urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;
    • Location URL endpoint del servizio per la ricezione delle risposte;

    In particolare il primo di questi elementi (o l’unico elemento riportato) deve obbligatoriamente riportare:

    • l’attributo index posto al valore 0;
    • l’attributo isDefault posto al valore true;
  • Deve essere presente almeno un elemento <SingleLogoutService> indicante l’indirizzo del SingleLogoutService e riportante i seguenti attributi:

    • Location URL endpoint del servizio per la ricezione delle richieste di Single Logout;

    • Binding che può assumere uno dei valori

      • urn:oasis:names:tc:SAML:2.0:bindings:SOAP
      • urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
      • urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

    ed opzionalmente l’attributo:

    • ResponseLocation, URL endpoint del servizio per la ricezione delle risposte alle richieste di Single Logout.
  • Deve essere presente uno o più elementi <AttributeConsumingService> a descrizione dei set di attributi richiesti dal Service Provider, riportante:

    • l’attributo index, indice posizionale dell’elemento relativo all’i-esimo servizio richiamato dalla AuthnRequest mediante l’attributo AttributeConsumingServiceIndex;
    • l’elemento <ServiceName>, riportante l’identificatore dell’i-esimo set minimo di attributi necessari per l’autorizzazione all’accesso (per la massima tutela della privacy dell’utente il Service Provider deve rendere minima la visibilità dei servizi effettivamente invocati; in questa logica occorre rendere ove possibile indifferenziate le richieste relative a servizi che condividono lo stesso set minimo di attributi necessari per l’autorizzazione);

SI PUÒ

  • È consigliata la presenza di un elemento <Organization> a indicare l’organizzazione a cui afferisce l’entità specificata, riportante gli elementi:

    • <OrganizationName> indicante un identificatore language-qualified dell’organizzazione a cui l’entità afferisce;
    • <OrganizationURL> riportante in modalità language-qualified la URL istituzionale dell’organizzazione.

Esempio: metadata SP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
    entityID="https://spid.serviceprovider.it"
    ID="_0j40cj0848d8e3jncjdjss...">
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        [...]
    </ds:Signature>
    <md:SPSSODescriptor
        protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"
        AuthnRequestsSigned="true"
        WantAssertionsSigned="true">
        <md:KeyDescriptor use="signing">
            [...]
        </md:KeyDescriptor>
        <SingleLogoutService
            Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
            Location="https://spid.serviceprovider.it/slo-location"
            ResponseLocation="https://spid.serviceprovider.it/slo-location"/>
        <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat>
        <md:AssertionConsumerService
            index="0" isDefault="true"
            Location="https://spid.serviceprovider.it/sso-location"
            Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
        <md:AssertionConsumerService
            index="1"
            Location="https://spidSP.serviceProvider.it/sso-location"
            Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
        <md:AttributeConsumingService index="0">
            <md:ServiceName xml:lang="it">Set 0</md:ServiceName>
            <md:RequestedAttribute Name="name"/>
            <md:RequestedAttribute Name="familyName"/>
            <md:RequestedAttribute Name="fiscalNumber"/>
            <md:RequestedAttribute Name="email"/>
        </md:AttributeConsumingService>
            <md:AttributeConsumingService index="1">
            <md:ServiceName xml:lang="it">Set 1</md:ServiceName>
            <md:RequestedAttribute Name="spidCode"/>
            <md:RequestedAttribute Name="fiscalNumber"/>
        </md:AttributeConsumingService>
    </md:SPSSODescriptor>
    <md:Organization>
        <OrganizationName xml:lang="it">Service provider</OrganizationName>
        <OrganizationDisplayName xml:lang="it">Nome service provider</OrganizationDisplayName>
        <OrganizationURL xml:lang="it">http://spid.serviceprovider.it</OrganizationURL>
    </md:Organization>
</md:EntityDescriptor>

Disponibilità dei metadata

I metadata dei Service Provider saranno disponibili per tutte le entità SPID federate attraverso la URL https://<dominioServiceProvider>/metadata e saranno firmate dall’Agenzia per l’Italia Digitale. L’accesso deve essere effettuato utilizzando il protocollo TLS nella versione più recente disponibile.

Nota

Nonostante sia richiesta la pubblicazione dei metadata nel dominio del Service Provider, la distribuzione dei metadati agli Identity Provider è operata centralmente dall’Agenzia per l’Italia Digitale. Gli Identity Provider di conseguenza non ottengono i metadati direttamente dai Service Provider.