Differenze tra le versioni di "RequisitiEntita"

Da WIKI IDEM GARR.
Jump to navigation Jump to search
(Commenti Barbara + Codici con "0")
 
(28 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
In questa pagina sono indicati i requisiti richiesti dalla Federazione Italiana delle Identità Digitali IDEM GARR AAI.<br />
+
= Profilo Tecnico Operativo per le Entità della Federazione IDEM =
 +
In questa pagina sono indicati i requisiti delle entità che si intende registrare nella Federazione Italiana delle Identità Digitali IDEM GARR AAI.
  
 
__TOC__
 
__TOC__
 +
 +
===Definizioni===
 +
Le parole chiave utilizzate in questo documento, sempre scritte in maiuscolo ed indicate nella tabella di seguito con a fianco la loro versione originale in lingua inglese, devono essere interpretate secondo quanto indicato nella [<nowiki>RFC 2119</nowiki>].
 +
{| class="wikitable"
 +
|+
 +
|DEVE/OBBLIGATORIO
 +
|MUST/SHALL/REQUIRED
 +
|-
 +
|NON DEVE
 +
|MUST NOT/SHALL NOT
 +
|-
 +
|DOVREBBE/RACCOMANDATO
 +
|SHOULD
 +
|-
 +
|NON DOVREBBE
 +
|SHOULD NOT
 +
|-
 +
|PUÒ/FACOLTATIVO
 +
|MAY/OPTIONAL
 +
|}
 +
 +
[[#top|[TOP]]]
  
 
===Security (SEC) - Identity Provider & Service Provider===
 
===Security (SEC) - Identity Provider & Service Provider===
Riga 8: Riga 31:
 
Non riguardano invece i certificati utilizzati dagli Identity e Service Provider per cifrare e firmare digitalmente le asserzioni presenti nei metadata.  
 
Non riguardano invece i certificati utilizzati dagli Identity e Service Provider per cifrare e firmare digitalmente le asserzioni presenti nei metadata.  
 
====SEC01 - Grado di robustezza SSL====
 
====SEC01 - Grado di robustezza SSL====
il certificato SSL utilizzato sulla porta HTTPS del servizio DEVE riportare '''almeno un grado B''' su SSL Labs: https://www.ssllabs.com/ssltest/  
+
Il certificato SSL utilizzato sulla porta HTTPS del servizio DEVE riportare <u>almeno un grado B</u> su SSL Labs: https://www.ssllabs.com/ssltest/  
  
 
[[#top|[TOP]]]  
 
[[#top|[TOP]]]  
 
====SEC02 - Chain issue====
 
====SEC02 - Chain issue====
il certificato SSL utilizzato sulla porta HTTPS del servizio DEVE essere '''privo di "Chain issues"''' (errori sulla catena della CA) --- verificabile con SSL Labs.
+
Il certificato SSL utilizzato sulla porta HTTPS del servizio DEVE essere <u>privo di "Chain issues"</u> (errori sulla catena della CA) --- verificabile con SSL Labs.
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
 
==Identity Provider==
 
==Identity Provider==
 
===Metadata (IDP-MD)===
 
===Metadata (IDP-MD)===
I requisiti di seguito elencati sono relativi ai metadata di un Identity Provider (IDP) e seguono le direttive indicate in [https://kantarainitiative.github.io/SAMLprofiles/saml2int.html SAML V2.0 Deployment Profile for Federation Interoperability].
+
I requisiti di seguito elencati sono relativi ai metadata di un Identity Provider (IDP).<br />
 
 
<br />
 
 
====IDP-MD01 - validUntil====
 
====IDP-MD01 - validUntil====
<code>validUntil</code> , attributo contenuto nell'elemento <code><md:EntityDescriptor></code>, DEVE essere '''rimosso''' assieme al suo valore in quanto è la Federazione a compilarlo.
+
<code>validUntil</code>, attributo contenuto nell'elemento <code><md:EntityDescriptor></code>, DEVE essere <u>rimosso</u> assieme al suo valore in quanto verrà inserito dalla Federazione.
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
  
 
====IDP-MD02 - entityID====
 
====IDP-MD02 - entityID====
<code>entityID</code> , attributo contenuto nell'elemento <code><md:EntityDescriptor></code>, DEVE essere una URI assoluta di lunghezza <u>massima 256 caratteri</u>.  
+
<code>entityID</code>, attributo contenuto nell'elemento <code><md:EntityDescriptor></code>, DEVE essere una URL di lunghezza massima 256 caratteri.
 +
 
 +
La URL dell'entityID DOVREBBE restituire i metadata dell'entità.  
  
Si RACCOMANDA di scegliere un valore che abbia la più bassa probabilità di modifica possibile.
 
  
<nowiki>***</nowiki> The simple type entityIDType restricts the XML schema data type anyURI to a maximum length of 1024 characters. ***
 
  
 
''Esempio:''<syntaxhighlight lang="xml">
 
''Esempio:''<syntaxhighlight lang="xml">
entityID="https://idp.example.org/shibboleth"
+
entityID="https://idp.example.org/idp/shibboleth"
 
</syntaxhighlight>[[#top|[TOP]]]
 
</syntaxhighlight>[[#top|[TOP]]]
 
====IDP-MD03 - Scope====
 
====IDP-MD03 - Scope====
Riga 50: Riga 71:
 
<code><mdui:DisplayName></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
 
<code><mdui:DisplayName></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
  
*essere valorizzato con il nome del servizio da mostrare all'utente
+
*contenere il nome del servizio da mostrare all'utente;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 63: Riga 84:
 
<code><mdui:Description></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
 
<code><mdui:Description></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
  
*essere valorizzato con una breve descrizione del servizio
+
*contenere una breve descrizione del servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 76: Riga 97:
 
<code><mdui:InformationURL></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
 
<code><mdui:InformationURL></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
  
*essere valorizzato con la URL della pagina informativa del servizio
+
*contenere la URL della pagina informativa del servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
 +
 
 +
Per il contenuto della pagina informativa vedere [[RequisitiEntita#IDP-FED02 - Informazioni|IDP-FED02]].
  
  
Riga 89: Riga 112:
 
<code><mdui:PrivacyStatementURL></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
 
<code><mdui:PrivacyStatementURL></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
  
*essere valorizzato con la URL della pagina sul trattamento dei dati personali del servizio
+
*contenere la URL della pagina sul trattamento dei dati personali del servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
 +
 
 +
Per il contenuto della pagina sul trattamento dei dati personali vedere [[RequisitiEntita#IDP-FED03 - Trattamento dati personali|IDP-FED03]].
  
  
Riga 102: Riga 127:
 
<code><mdui:Logo></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
 
<code><mdui:Logo></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
  
*essere valorizzato con le URL <code>'''https://'''</code> dei loghi dell'organizzazione in formato '''PNG''' (si RACCOMANDA uno sfondo trasparente) nei formati:
+
*contenere le URL protette da SSL (<code>https://</code>) dei loghi dell'organizzazione in formato '''PNG''' (si RACCOMANDA uno sfondo trasparente) aventi dimensioni:
**'''16x16 pixel''' (o maggiore se rispetta l'aspect-ratio)
+
**'''16x16 pixel''' (o maggiore se rispetta l'aspect-ratio);
**'''80x60 pixel''' (o maggiore se rispetta l'aspect-ratio)
+
**'''80x60 pixel''' (o maggiore se rispetta l'aspect-ratio).
  
  
Riga 112: Riga 137:
 
<mdui:Logo width="80" height="60">https://...logo_80x60.png...</mdui:Logo>
 
<mdui:Logo width="80" height="60">https://...logo_80x60.png...</mdui:Logo>
 
</syntaxhighlight>
 
</syntaxhighlight>
[[#top|[TOP]]]<blockquote>'''DAVIDE - ARRIVATO QUI!'''</blockquote>
+
[[#top|[TOP]]]
 +
====IDP-MD09 - KeyDescriptor====
 +
I metadata DEVONO contenere almeno un elemento <code><md:KeyDescriptor></code> con le seguenti caratteristiche:
 +
 
 +
*privo di ulteriori attributi o con il solo attributo <code>use="signing"</code>;
 +
*che contenga un certificato X.509 in formato PEM.
  
====IDP-MD09 - KeyDescriptor====
 
<code><md:KeyDescriptor></code> DEVE contenere almeno una chiave pubblica:
 
  
*nel formato di un certificato X.509 e possibilmente:
 
**di lunga durata (30 anni)
 
**autofirmato (self-signed)
 
**valido (non scaduto)
 
**non firmato con gli algoritmi MD5 o SHA1 (*** che vuol dire? quelli sono algoritmi di hashing! ***)
 
*che corrisponda ad una chiave privata di almeno 2048 bit. Per le nuove installazioni si RACCOMANDA una lunghezza di '''3072 bit'''.
 
*con o senza l'attributo <code>use="signing"</code>
 
*
 
  
[[#top|[TOP]]]
+
''Esempio:''<syntaxhighlight lang="xml">
 +
<md:KeyDescriptor use="signing">
 +
  <ds:KeyInfo>
 +
      <ds:X509Data>
 +
        <ds:X509Certificate>
 +
        MII[..]
 +
        </ds:X509Certificate>
 +
      </ds:X509Data>
 +
  </ds:KeyInfo>
 +
</md:KeyDescriptor>
 +
 
 +
</syntaxhighlight>[[#top|[TOP]]]
 +
 
 
====IDP-MD10 - SingleSignOnService====
 
====IDP-MD10 - SingleSignOnService====
 
<code><md:SingleSignOnService></code> DEVE:
 
<code><md:SingleSignOnService></code> DEVE:
  
*esistere per il <code>Binding='<nowiki>urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect'</nowiki></code> perchè necessario alle Authentication Request (<code>AuthnRequest</code>), con una <code>Location</code> la cui URL è protetta da SSL e comincia per <code>https://</code>
+
*essere presente con l'attributo <code>Binding='<nowiki>urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect'</nowiki></code> perchè necessario alle Authentication Request (<code>AuthnRequest</code>);
*esistere per il <code>Binding='<nowiki>urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'</nowiki></code> perchè necessario alle Authentication Response (<code>AuthnResponse</code>), con una <code>Location</code> la cui URL è protetta da SSL e comincia per <code>https://</code><br />
+
*essere presente con l'attributo <code>Binding='<nowiki>urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'</nowiki></code> perchè necessario alle Authentication Response (<code>AuthnResponse</code>);
 +
*in tutti i casi, contenere un attributo <code>Location</code> valorizzato con una URL protetta da SSL (<code>https://</code>).<br />
  
 
''Esempio:''<syntaxhighlight lang="xml">
 
''Esempio:''<syntaxhighlight lang="xml">
Riga 141: Riga 174:
 
<code><md:SingleLogoutService></code> DEVE:
 
<code><md:SingleLogoutService></code> DEVE:
  
*esistere per il <code>Binding='<nowiki>urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect'</nowiki></code>  perchè necessario alle Logout Request (<code>LogoutRequest</code>), con una <code>Location</code> la cui URL è protetta da SSL e comincia per <code>https://</code><br />
+
*essere presente con l'attributo <code>Binding='<nowiki>urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect'</nowiki></code>  perchè necessario alle Logout Request (<code>LogoutRequest</code>);
 +
*contenere un attributo <code>Location</code> valorizzato con una URL protetta da SSL (<code>https://</code>).<br />
  
 
''Esempio:''<syntaxhighlight lang="xml">
 
''Esempio:''<syntaxhighlight lang="xml">
Riga 150: Riga 184:
 
<code><md:OrganizationName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
 
<code><md:OrganizationName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
  
*essere valorizzato con il nome dell'organizzazione a cui afferisce il servizio
+
*contenere il nome dell'organizzazione a cui afferisce il servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 163: Riga 197:
 
<code><md:OrganizationDisplayName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
 
<code><md:OrganizationDisplayName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
  
*essere valorizzato con il nome dell'organizzazione che verrà mostrato nelle interfacce utente
+
*contenere il nome dell'organizzazione che verrà mostrato nelle interfacce utente;
*essere definito sia per la lingua <u>italiana,</u> sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana,</u> sia per la lingua <u>inglese</u>.
  
  
Riga 176: Riga 210:
 
<code><md:OrganizationURL></code>, contenuto nell'elemento <code><md:Organization></code>, DEVE:
 
<code><md:OrganizationURL></code>, contenuto nell'elemento <code><md:Organization></code>, DEVE:
  
*essere valorizzato con la URL del sito principale dell'organizzazione a cui afferisce il servizio
+
*contenere la URL del sito principale dell'organizzazione a cui afferisce il servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 188: Riga 222:
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
 
====IDP-MD15 - ContactPerson====
 
====IDP-MD15 - ContactPerson====
<code><md:ContactPerson></code> DEVE:
+
I metadata DEVONO contenere <u>almeno</u> un elemento <code><md:ContactPerson></code> con le seguenti caratteristiche:
 +
 
 +
*contenere l'indirizzo email del contatto tecnico del servizio;
 +
*contenere l'attributo <code>contactType="technical"</code>;
  
*essere valorizzato con l'indirizzo email del contatto tecnico del servizio identificato dall'attributo <code>contactType="technical"</code>.<br />Si RACCOMANDA l'utilizzo di un indirizzo impersonale (mailing-list)
+
Si RACCOMANDA di utilizzare un indirizzo <u>impersonale</u> (ad esempio una mailing-list).
  
  
Riga 202: Riga 239:
 
<br />
 
<br />
 
===Federation (IDP-FED)===
 
===Federation (IDP-FED)===
I requisiti di seguito elencati sono dettate dalla Federazione e destinate agli Identity Provider.
+
I requisiti di seguito elencati sono dettati dalla Federazione e destinati agli Identity Provider.
  
 
====IDP-FED01 - Data====
 
====IDP-FED01 - Data====
un Identity Provider in IDEM DEVE essere in grado di rilasciare le seguenti informazioni:
+
Un Identity Provider in IDEM DEVE essere in grado di rilasciare le seguenti informazioni:
  
#Un identificativo univoco persistente e targhettizzato per i suoi utenti:
+
#un identificativo univoco, persistente, diverso per ogni servizio e trasmissibile in una delle seguenti forme:
#*<code>persistent-id</code> '''(persistent NameID)''' (o ''eduPersonTargetedID'' se non è possibile rilasciarlo)
+
#*nell'elemento <code><NameID></code> con attributo <code>Format="<nowiki>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</nowiki>"</code> se indicato nei metadata del Service Provider;
#L'affiliazione dell'utente con scopo:
+
#*nell'attributo <code>eduPersonTargetedID</code> per i Service Provider che lo richiedono nell'elemento <code><md:RequestedAttribute></code>.
#*<code>affiliation</code> '''(eduPersonScopedAffiliation)'''<br />
+
#l'attributo <code>eduPersonScopedAffiliation</code>, ovvero l'affiliazione dell'utente con l'aggiunta dello <code>scope</code>.<br />
  
 
''Esempio con [https://sp.aai-test.garr.it/secure sp.aai-test.garr.it]:''<syntaxhighlight lang="xml">
 
''Esempio con [https://sp.aai-test.garr.it/secure sp.aai-test.garr.it]:''<syntaxhighlight lang="xml">
affiliation = member@aai-test.garr.it;staff@aai-test.garr.it
+
eduPersonScopedAffiliation = member@aai-test.garr.it;staff@aai-test.garr.it
persistent-id = https://garr-idp-test.irccs.garr.it/idp/shibboleth!https://sp.aai-test.garr.it/shibboleth!eYfN....Q1rU=
+
persistent = https://garr-idp-test.irccs.garr.it/idp/shibboleth!https://sp.aai-test.garr.it/shibboleth!eYfN....Q1rU=
 +
</syntaxhighlight>
 +
 
 +
[[#top|[TOP]]]
  
</syntaxhighlight>[[#top|[TOP]]]
+
====IDP-FED02 - Informazioni====
====IDP-FED02 - Info Page====
+
La pagina informativa esposta in lingua <u>italiana</u> e in lingua <u>inglese</u> DEVE contenere:
La pagina informativa esposta in lingua <u>italiana</u> e in lingua <u>inglese</u> DEVE opportunamente contenere:
 
  
#un indirizzo di posta elettronica per il supporto agli utenti in merito a IDEM e alle credenziali di autenticazione
+
#un riferimento per il supporto agli utenti (ad esempio un indirizzo di posta, o un web form, ecc.);
#la Privacy Policy per l’utente contenente gli attributi che potrebbe rilasciare alle risorse federate
+
#un collegamento alla pagina sul trattamento dei dati personali;
#il Logo di IDEM e il link al Sito di IDEM ('''fortemente raccomandato''')
+
#il Logo di IDEM e il link al Sito di IDEM.
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
  
====IDP-FED03 - Privacy Page====
+
====IDP-FED03 - Trattamento dati personali====
La pagina sul trattamento dei dati personali (Privacy Policy) seguita dall'istituzione ed esposta in lingua <u>italiana</u> e in lingua <u>inglese</u> DEVE opportunamente contenere le adeguate informazioni per gli utenti.
+
La pagina sul trattamento dei dati personali DEVE contenere tutte le informazioni previste dagli artt. 13 e 14 del Regolamento UE 679/2016.
  
A titolo esemplificativo, IDEM fornisce la pagina: [[InformativaDatiPersonaliIdP|InformativaDatiPersonaliIdP.]]
+
A titolo esemplificativo, Il Servizio IDEM GARR AAI rende disponibile il seguente modello: [[InformativaDatiPersonaliIdP|InformativaDatiPersonaliIdP.]]
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
  
====IDP-FED04 - Login Page====
+
====IDP-FED04 - Login====
 
La pagina di login di un Identity Provider federato in IDEM DEVE contenere:
 
La pagina di login di un Identity Provider federato in IDEM DEVE contenere:
  
*il riferimento alla pagina informativa indicata da <code><mdui:InformationURL></code>
+
*il collegamento alla pagina informativa indicata da <code><mdui:InformationURL></code> ([[RequisitiEntita#IDP-MD06%20-%20InformationURL|IDP-MD06]]);
*il riferimento alla pagina sul trattamento dei dati personali indicata da <code><mdui:PrivacyStatementURL></code>
+
*il collegamento alla pagina sul trattamento dei dati personali indicata da <code><mdui:PrivacyStatementURL></code> ([[RequisitiEntita#IDP-MD07%20-%20PrivacyStatementURL|IDP-MD07]]);
*il logo di IDEM ([[:File:IDEM logo big.png|Logo IDEM]])
+
*il logo di IDEM ([https://idem.garr.it/tutti-i-documenti/idem-archivio/banner-e-loghi Logo IDEM]);
*il riferimento al Contatto Tecnico o al Contatto di Supporto per la risoluzione delle problematiche legate all'accesso alle risorse da parte degli utenti
+
*il riferimento al <u>Contatto Tecnico</u> o al <u>Contatto di Supporto</u> per la risoluzione delle problematiche legate all'accesso alle risorse da parte degli utenti.
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
  
<br />
+
====IDP-FED05 - Certificati metadata====
 +
Il certificato o i certificati utilizzati per <u>firmare e cifrare</u> le asserzioni dell'IdP DOVREBBERO essere:
 +
 
 +
*di lunga durata (30 anni);
 +
*autofirmati (self-signed);
 +
*validi (non scaduto);
 +
*non firmati con algoritmi di firma basati su MD5 o SHA1;
 +
*corrispondenti ad una chiave privata di almeno 3072 bit.
 +
 
 +
In ogni caso la chiave privata corrispondente NON DEVE avere una lunghezza minore di 2048 bit.
  
 
===Esempio IdP Metadata===
 
===Esempio IdP Metadata===
Riga 268: Riga 316:
 
     <ds:X509Data>
 
     <ds:X509Data>
 
     <ds:X509Certificate>
 
     <ds:X509Certificate>
         ...idp-backchannel.crt...
+
         MII...
    </ds:X509Certificate>
 
    </ds:X509Data>
 
  </ds:KeyInfo>
 
  </md:KeyDescriptor>
 
  <md:KeyDescriptor use="signing">
 
  <ds:KeyInfo>
 
    <ds:X509Data>
 
    <ds:X509Certificate>
 
        ... idp-signing.crt ...
 
    </ds:X509Certificate>
 
    </ds:X509Data>
 
  </ds:KeyInfo>
 
  </md:KeyDescriptor>
 
  <md:KeyDescriptor use="encryption">
 
  <ds:KeyInfo>
 
    <ds:X509Data>
 
    <ds:X509Certificate>
 
        ... idp-encryption.crt ...
 
 
     </ds:X509Certificate>
 
     </ds:X509Certificate>
 
     </ds:X509Data>
 
     </ds:X509Data>
Riga 315: Riga 345:
 
==Service Provider==
 
==Service Provider==
 
===Metadata (SP-MD)===
 
===Metadata (SP-MD)===
I requisiti di seguito elencati sono relativi ai metadata che descrivono un Service Provider (SP)
+
I requisiti di seguito elencati sono relativi ai metadata che descrivono un Service Provider (SP).
 +
 
 +
<br />
 +
 
 +
====SP-MD01 - validUntil====
 +
<code>validUntil</code> , attributo contenuto nell'elemento <code><md:EntityDescriptor></code>, DEVE essere <u>rimosso</u> assieme al suo valore in quanto verrà inserito dalla Federazione.
 +
 
 +
[[RequisitiEntita#top|[TOP]]]
 +
 
 +
====SP-MD02 - entityID====
 +
<code>entityID</code> , attributo contenuto nell'elemento <code><md:EntityDescriptor></code>, DEVE essere una URL di lunghezza massima 256 caratteri.
  
====SP-MD01 - DisplayName====
+
La URL dell'entityID DOVREBBE restituire i metadata dell'entità.
 +
 
 +
 
 +
 
 +
''Esempio:''<syntaxhighlight lang="xml">
 +
entityID="https://sp.example.org/shibboleth"
 +
</syntaxhighlight>[[RequisitiEntita#top|[TOP]]]
 +
 
 +
====SP-MD03 - DisplayName====
 
<code><mdui:DisplayName></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
 
<code><mdui:DisplayName></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
  
*essere valorizzato con il nome del servizio da mostrare all'utente senza contenere il valore "'''IDEM'''" riservato al [https://idem.garr.it/federazione-idem/la-federazione#servizio Servizio].
+
*contenere il nome della risorsa da mostrare all'utente. '''Attenzione''': il nome <u>non deve usare</u> la parola "IDEM" perchè riservata al [https://idem.garr.it/federazione-idem/la-federazione#servizio Servizio];
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 330: Riga 378:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-MD02 - Description====
+
====SP-MD04 - Description====
 
<code><mdui:Description></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
 
<code><mdui:Description></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
  
*essere valorizzato con una breve descrizione del servizio
+
*contenere una breve descrizione del servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 346: Riga 394:
 
<code><mdui:InformationURL></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
 
<code><mdui:InformationURL></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
  
*essere valorizzato con la URL della pagina informativa del servizio
+
*contenere la URL della pagina informativa del servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
 +
 
 +
Per il contenuto della pagina informativa vedere [[RequisitiEntita#SP-FED02%20-%20Informazioni|SP-FED02]].
 +
 
  
 
''Esempio:''   
 
''Esempio:''   
Riga 358: Riga 409:
 
<code><mdui:PrivacyStatementURL></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
 
<code><mdui:PrivacyStatementURL></code>, contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:   
  
*essere valorizzato con la URL della pagina sul trattamento dei dati personali del servizio
+
*contenere la URL della pagina sul trattamento dei dati personali del servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
 +
 
 +
Per il contenuto della pagina sul trattamento dei dati personali vedere [[RequisitiEntita#SP-FED03%20-%20Trattamento%20dati|SP-FED03]].
  
  
Riga 368: Riga 421:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-MD05 - Logo====
+
====SP-MD07 - Logo====
<code><mdui:Logo></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DEVE:
+
<code><mdui:Logo></code> , contenuto nell'elemento <code><mdui:UIInfo></code>, DOVREBBE:
  
*essere valorizzato con una URL <code>https://</code> riportante il logo dell'organizzazione in formato '''PNG''' (si RACCOMANDA uno sfondo possibilmente trasparente) con:
+
*contenere una URL protetta da SSL ( <code>https://</code> ) del logo dell'organizzazione in formato '''PNG''' (si RACCOMANDA uno sfondo possibilmente trasparente) con:
**''base'': dai 64 px ai 350 px
+
**''base'': dai 64 px ai 350 px;
**''altezza'': dai 64px ai 146px
+
**''altezza'': dai 64px ai 146px;
 
 
Se viene fornito di dimensioni maggiori, <u>DEVE rispettare l'aspect-ratio</u>.
 
  
  
Riga 383: Riga 434:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-MD06 - RequestedAttribute====
+
 
 +
====SP-MD08 - KeyDescriptor====
 +
I metadata DEVONO contenere <u>almeno</u> un elemento <code><md:KeyDescriptor></code> con le seguenti caratteristiche:
 +
 
 +
*privo di ulteriori attributi o con il solo attributo <code>use="encryption"</code>;
 +
*contenente un certificato X.509 in formato PEM.
 +
<syntaxhighlight lang="xml">
 +
<md:KeyDescriptor use="encryption">
 +
  <ds:KeyInfo>
 +
      <ds:X509Data>
 +
        <ds:X509Certificate>
 +
            MII[..]
 +
        </ds:X509Certificate>
 +
      </ds:X509Data>
 +
  </ds:KeyInfo>
 +
</md:KeyDescriptor>
 +
</syntaxhighlight>Se il Service Provider supporta il Single Logout, DEVE essere presente un <u>ulteriore</u> elemento <code><md:KeyDescriptor></code> con l'attributo <code>use="signing"</code>.
 +
 
 +
[[#top|[TOP]]]
 +
 
 +
====SP-MD09 - RequestedAttribute====
 
<code><md:RequestedAttribute></code> , contenuto nell'elemento <code><md:AttributeConsumingService></code>, DEVE:
 
<code><md:RequestedAttribute></code> , contenuto nell'elemento <code><md:AttributeConsumingService></code>, DEVE:
  
*contenere tutti e soli gli attributi SAML richiesti dal servizio
+
*contenere tutti e soli gli attributi SAML richiesti dalla risorsa;
*indicare gli attributi <u>indispensabili</u> all'accesso e all'utilizzo del servizio con il parametro <code>isRequired="true"</code>
+
*indicare gli attributi <u>indispensabili</u> all'accesso e all'utilizzo della risorsa con il parametro <code>isRequired="true"</code>
*indicare gli attributi <u>non indispensabili</u> all'accesso e all'utilizzo del servizio con il parametro <code>isRequired="false"</code>
+
*indicare gli attributi <u>non indispensabili</u> all'accesso e all'utilizzo della risorsa con il parametro <code>isRequired="false"</code>
  
  
Riga 398: Riga 469:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-MD07 - OrganizationName====
+
====SP-MD10 - OrganizationName====
 
<code><md:OrganizationName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
 
<code><md:OrganizationName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
  
*essere valorizzato con il nome dell'organizzazione che offre il servizio
+
*contenere il nome dell'organizzazione che offre il servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 411: Riga 482:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-MD08 - OrganizationDisplayName====
+
====SP-MD11 - OrganizationDisplayName====
 
<code><md:OrganizationDisplayName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
 
<code><md:OrganizationDisplayName></code> , contenuto nell'elemento <code><md:Organization></code>, DEVE:
  
*essere valorizzato con il nome dell'organizzazione che offre il servizio da mostrare all'utente
+
*contenere il nome dell'organizzazione che offre il servizio da mostrare all'utente;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 421: Riga 492:
 
<syntaxhighlight lang="xml">
 
<syntaxhighlight lang="xml">
 
<md:OrganizationDisplayName xml:lang="en">Resource provided by Example University</md:OrganizationDisplayName>
 
<md:OrganizationDisplayName xml:lang="en">Resource provided by Example University</md:OrganizationDisplayName>
<md:OrganizationDisplayName xml:lang="it">Risorsa fornita da Università di Esempio</md:OrganizationDisplayName>
+
<md:OrganizationDisplayName xml:lang="it">Risorsa erogata da Università di Esempio</md:OrganizationDisplayName>
 
</syntaxhighlight>
 
</syntaxhighlight>
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-MD09 - OrganizationURL====
+
====SP-MD12 - OrganizationURL====
 
<code><md:OrganizationURL></code>, contenuto nell'elemento <code><md:Organization></code>, DEVE:
 
<code><md:OrganizationURL></code>, contenuto nell'elemento <code><md:Organization></code>, DEVE:
  
*essere valorizzato con la URL del sito principale dell'organizzazione che offre il servizio
+
*contenere la URL del sito principale dell'organizzazione che offre il servizio;
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>
+
*essere definito sia per la lingua <u>italiana</u>, sia per la lingua <u>inglese</u>.
  
  
Riga 438: Riga 509:
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-MD10 - ContactPerson====
+
====SP-MD13 - ContactPerson====
<code><md:ContactPerson></code> DEVE:
+
I metadata DEVONO contenere <u>almeno</u> un elemento <code><md:ContactPerson></code> con le seguenti caratteristiche:
 +
 
 +
*contenere l'indirizzo email del contatto tecnico del servizio;
 +
*contenere l'attributo <code>contactType="technical"</code>;
  
*essere valorizzato con l'indirizzo email del contatto tecnico del servizio identificato dall'attributo <code>contactType="technical"</code>.<br />Si RACCOMANDA l'utilizzo di un <u>indirizzo impersonale</u> (mailing-list)
+
Si RACCOMANDA di utilizzare un indirizzo <u>impersonale</u> (ad esempio una mailing-list).
  
  
Riga 452: Riga 526:
  
 
===Federation (SP-FED)===
 
===Federation (SP-FED)===
I requisiti di seguito elencati sono dettate dalla Federazione e destinate ai Service Provider
+
I requisiti di seguito elencati sono dettate dalla Federazione e destinate ai Service Provider.
  
 
====SP-FED01 - Data====
 
====SP-FED01 - Data====
Riga 470: Riga 544:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
<u>Ogni informazione aggiuntiva richiesta</u> per l'utilizzo della/e risorsa/e protetta/e dal Service Provider <u>va motivata adeguatamente</u> a <code>idem-help@garr.it</code>.
+
<u>Ogni informazione aggiuntiva richiesta</u> per l'utilizzo della/e risorsa/e protetta/e dal Service Provider <u>va motivata adeguatamente</u> via mail a <code>idem-help@garr.it</code>.
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
====SP-FED02 - Info Page====
+
 
 +
====SP-FED02 - Informazioni====
 
La pagina informativa esposta in lingua <u>italiana</u> e in lingua <u>inglese</u> DEVE contenere:
 
La pagina informativa esposta in lingua <u>italiana</u> e in lingua <u>inglese</u> DEVE contenere:
  
#la descrizione del servizio
+
#la descrizione del servizio;
#il pubblico a cui si rivolge il servizio
+
#il pubblico a cui si rivolge il servizio;
#la denominazione dell'organizzazione che lo condivide
+
#la denominazione dell'organizzazione che lo gestisce;
#indirizzo email per il supporto degli utenti e dei gestori di Identity Provider
+
#il riferimento al supporto utenti;
#un riferimento alla Privacy Policy seguita dal servizio
+
#il collegamento alla pagina sul trattamento dei dati personali.
  
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
  
====SP-FED03 - Privacy Page====
+
====SP-FED03 - Trattamento dati====
La pagina della privacy esposta in lingua <u>italiana</u> e in lingua <u>inglese</u> DEVE contenere le adeguate informazioni circa il trattamento dei dati personali utilizzati.
+
La pagina sul trattamento dei dati personali DEVE contenere tutte le informazioni previste dagli artt. 13 e 14 del Regolamento UE 679/2016.
  
 
Per la stesura della privacy policy IDEM suggerisce di seguire le linee guida di REFEDS:
 
Per la stesura della privacy policy IDEM suggerisce di seguire le linee guida di REFEDS:
Riga 493: Riga 568:
 
[[#top|[TOP]]]
 
[[#top|[TOP]]]
  
====SP-FED04 - Login Page / Discovery Service====
+
====SP-FED03 - Login Page / Discovery Service====
 
La pagina di accesso ad una risorsa federata in IDEM DEVE contenere:
 
La pagina di accesso ad una risorsa federata in IDEM DEVE contenere:
  
*il logo di IDEM ([[:File:IDEM logo big.png|Logo IDEM]]) [e il logo di eduGAIN ([https://edugain.org/wp-content/uploads/2018/02/eduGAIN.jpg JPG] | [https://edugain.org/wp-content/uploads/2018/02/eduGAIN.png PNG]) se vi ha aderito]
+
*l'elenco degli IdP abilitati provenienti da IDEM ed eduGAIN;
*un elenco degli IdP in IDEM [e di quelli in eduGAIN se vi ha aderito]
+
*un riferimento alla pagina informativa del servizio ([[RequisitiEntita#SP-MD3%20-%20InformationURL|SP-MD3]])
*un riferimento alla pagina informativa del servizio
+
 
 +
Il Servizio suggerisce di seguire le ''REFEDS Best Practices:'' https://discovery.refeds.org/
  
 +
[[#top|[TOP]]]
 +
====SP-FED04 - Certificati metadata====
 +
Il certificato o i certificati utilizzati per firmare e cifrare le asserzioni dell'IdP DOVREBBERO essere:
  
''REFEDS Best Practices:'' https://discovery.refeds.org/
+
*di lunga durata (30 anni);
 +
*autofirmati (self-signed);
 +
*validi (non scaduto);
 +
*non firmati con algoritmi di firma basati su MD5 o SHA1;
 +
*corrispondenti ad una chiave privata di almeno 3072 bit.
  
[[#top|[TOP]]]
+
In ogni caso la chiave privata corrispondente NON DEVE avere una lunghezza minore di 2048 bit.
  
 
===Esempio Metadata Service Provider===
 
===Esempio Metadata Service Provider===
Riga 512: Riga 595:
 
                     xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
 
                     xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
 
                     xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
 
                     xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
 
 
 
   <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
 
   <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
 
       <md:Extensions>
 
       <md:Extensions>
Riga 530: Riga 612:
 
             <mdui:InformationURL xml:lang="en">HTTPS ENG INFORMATION PAGE URL</mdui:InformationURL>
 
             <mdui:InformationURL xml:lang="en">HTTPS ENG INFORMATION PAGE URL</mdui:InformationURL>
 
             <mdui:InformationURL xml:lang="it">HTTPS ITA INFORMATION PAGE URL</mdui:InformationURL>
 
             <mdui:InformationURL xml:lang="it">HTTPS ITA INFORMATION PAGE URL</mdui:InformationURL>
             <mdui:Logo height="16" width="16">HTTPS RESOURCE FAVICON PNG</mdui:Logo>
+
             <mdui:Logo height="64" width="64">HTTPS RESOURCE LOGO PNG</mdui:Logo>
            <mdui:Logo height="60" width="80">HTTPS RESOURCE LOGO PNG</mdui:Logo>
 
 
             <mdui:PrivacyStatementURL xml:lang="en">HTTPS ENG PRIVACY POLICY PAGE URL</mdui:PrivacyStatementURL>
 
             <mdui:PrivacyStatementURL xml:lang="en">HTTPS ENG PRIVACY POLICY PAGE URL</mdui:PrivacyStatementURL>
 
             <mdui:PrivacyStatementURL xml:lang="it">HTTPS ITA PRIVACY POLICY PAGE URL</mdui:PrivacyStatementURL>
 
             <mdui:PrivacyStatementURL xml:lang="it">HTTPS ITA PRIVACY POLICY PAGE URL</mdui:PrivacyStatementURL>
 
         </mdui:UIInfo>
 
         </mdui:UIInfo>
 
       </md:Extensions>
 
       </md:Extensions>
 
 
 
       <md:KeyDescriptor>
 
       <md:KeyDescriptor>
 
         <ds:KeyInfo>
 
         <ds:KeyInfo>
 
             <ds:X509Data>
 
             <ds:X509Data>
 
               <ds:X509Certificate>
 
               <ds:X509Certificate>
                   SP_SELF-SIGNED_SUGGESTED_CERTIFICATE_USED_TO_
+
                   MII...
                  SIGN_AND_ENCRYPT_THE_ASSERTIONS_EXCHANGED_WITH_A_IDP-CHANGE_IT
 
 
               </ds:X509Certificate>
 
               </ds:X509Certificate>
 
             </ds:X509Data>
 
             </ds:X509Data>
 
         </ds:KeyInfo>
 
         </ds:KeyInfo>
 
       </md:KeyDescriptor>
 
       </md:KeyDescriptor>
 
 
      <md:ArtifactResolutionService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
 
        Location="https://sp.example.com/Shibboleth.sso/Artifact/SOAP"
 
        index="1" />
 
 
 
      <md:SingleLogoutService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
 
        Location="https://sp.example.com/Shibboleth.sso/SLO/SOAP" />
 
 
       <md:SingleLogoutService
 
       <md:SingleLogoutService
 
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
 
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Riga 562: Riga 632:
 
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 
         Location="https://sp.example.com/Shibboleth.sso/SLO/POST" />
 
         Location="https://sp.example.com/Shibboleth.sso/SLO/POST" />
      <md:SingleLogoutService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
 
        Location="https://sp.example.com/Shibboleth.sso/SLO/Artifact" />
 
 
 
      <md:ManageNameIDService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
 
        Location="https://sp.example.com/Shibboleth.sso/NIM/SOAP" />
 
      <md:ManageNameIDService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
 
        Location="https://sp.example.com/Shibboleth.sso/NIM/Redirect" />
 
      <md:ManageNameIDService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 
        Location="https://sp.example.com/Shibboleth.sso/NIM/POST" />
 
      <md:ManageNameIDService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
 
        Location="https://sp.example.com/Shibboleth.sso/NIM/Artifact" />
 
 
 
 
       <md:AssertionConsumerService
 
       <md:AssertionConsumerService
 
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 
         Location="https://sp.example.com/Shibboleth.sso/SAML2/POST"
 
         Location="https://sp.example.com/Shibboleth.sso/SAML2/POST"
 
         index="1" />
 
         index="1" />
      <md:AssertionConsumerService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"
 
        Location="https://sp.example.com/Shibboleth.sso/SAML2/POST-SimpleSign"
 
        index="2" />
 
      <md:AssertionConsumerService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
 
        Location="https://sp.example.com/Shibboleth.sso/SAML2/Artifact"
 
        index="3" />
 
      <md:AssertionConsumerService
 
        Binding="urn:oasis:names:tc:SAML:2.0:bindings:PAOS"
 
        Location="https://sp.example.com/Shibboleth.sso/SAML2/ECP"
 
        index="4" />
 
 
 
 
       <md:AttributeConsumingService index="1">
 
       <md:AttributeConsumingService index="1">
 
         <!-- example for the required attribute: mail -->
 
         <!-- example for the required attribute: mail -->
Riga 602: Riga 642:
 
             NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
 
             NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
 
             isRequired="true" />
 
             isRequired="true" />
 
 
 
         <!-- example for the desired attribute: eduPersonPrincipalName -->
 
         <!-- example for the desired attribute: eduPersonPrincipalName -->
 
         <md:RequestedAttribute FriendlyName="eppn"
 
         <md:RequestedAttribute FriendlyName="eppn"
Riga 610: Riga 649:
 
       </md:AttributeConsumingService>
 
       </md:AttributeConsumingService>
 
   </md:SPSSODescriptor>
 
   </md:SPSSODescriptor>
 
 
 
   <md:Organization>
 
   <md:Organization>
 
       <md:OrganizationName xml:lang="en">ENG ORGANIZATION NAME</md:OrganizationName>
 
       <md:OrganizationName xml:lang="en">ENG ORGANIZATION NAME</md:OrganizationName>
Riga 619: Riga 657:
 
       <md:OrganizationURL xml:lang="it">ITA ORGANIZATION URL</md:OrganizationURL>
 
       <md:OrganizationURL xml:lang="it">ITA ORGANIZATION URL</md:OrganizationURL>
 
   </md:Organization>
 
   </md:Organization>
 
 
 
   <md:ContactPerson contactType="technical">
 
   <md:ContactPerson contactType="technical">
 
       <md:EmailAddress>mailto:technical.contact.mailing.list@example.org</md:EmailAddress>
 
       <md:EmailAddress>mailto:technical.contact.mailing.list@example.org</md:EmailAddress>
   </md:ContactPerson>
+
   </md:ContactPerson>  
 
 
 
</md:EntityDescriptor>
 
</md:EntityDescriptor>
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
===Riferimenti===
 +
[RFC 2119]  Key words for use in RFCs to Indicate Requirement Levels
 +
 +
http://www.rfc-editor.org/rfc/rfc2119.txt
 +
 +
 +
[SAML2Core] Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0
 +
 +
http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf
 +
 +
 +
[SAML2Bind] Bindings for the OASIS Security Assertion Markup Language (SAML) V2.0
 +
 +
http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf
 +
 +
 +
[SAML2Meta] Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0
 +
 +
http://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf
 +
 +
 +
[SAML2MDIOP] SAML V2.0 Metadata Interoperability Profile Version 1.0
 +
 +
http://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.pdf
 +
 +
 +
[SAML2Int] SAML V2.0 Deployment Profile for Federation Interoperability
 +
 +
https://kantarainitiative.github.io/SAMLprofiles/saml2int.html

Versione attuale delle 18:03, 31 mag 2021

Profilo Tecnico Operativo per le Entità della Federazione IDEM

In questa pagina sono indicati i requisiti delle entità che si intende registrare nella Federazione Italiana delle Identità Digitali IDEM GARR AAI.

Indice

Definizioni

Le parole chiave utilizzate in questo documento, sempre scritte in maiuscolo ed indicate nella tabella di seguito con a fianco la loro versione originale in lingua inglese, devono essere interpretate secondo quanto indicato nella [RFC 2119].

DEVE/OBBLIGATORIO MUST/SHALL/REQUIRED
NON DEVE MUST NOT/SHALL NOT
DOVREBBE/RACCOMANDATO SHOULD
NON DOVREBBE SHOULD NOT
PUÒ/FACOLTATIVO MAY/OPTIONAL

[TOP]

Security (SEC) - Identity Provider & Service Provider

I requisiti di seguito elencati sono relativi al certificato SSL utilizzato per l'interfaccia HTTPS del servizio.

Non riguardano invece i certificati utilizzati dagli Identity e Service Provider per cifrare e firmare digitalmente le asserzioni presenti nei metadata.

SEC01 - Grado di robustezza SSL

Il certificato SSL utilizzato sulla porta HTTPS del servizio DEVE riportare almeno un grado B su SSL Labs: https://www.ssllabs.com/ssltest/

[TOP]

SEC02 - Chain issue

Il certificato SSL utilizzato sulla porta HTTPS del servizio DEVE essere privo di "Chain issues" (errori sulla catena della CA) --- verificabile con SSL Labs.

[TOP]

Identity Provider

Metadata (IDP-MD)

I requisiti di seguito elencati sono relativi ai metadata di un Identity Provider (IDP).

IDP-MD01 - validUntil

validUntil, attributo contenuto nell'elemento <md:EntityDescriptor>, DEVE essere rimosso assieme al suo valore in quanto verrà inserito dalla Federazione.

[TOP]

IDP-MD02 - entityID

entityID, attributo contenuto nell'elemento <md:EntityDescriptor>, DEVE essere una URL di lunghezza massima 256 caratteri.

La URL dell'entityID DOVREBBE restituire i metadata dell'entità.


Esempio:

entityID="https://idp.example.org/idp/shibboleth"

[TOP]

IDP-MD03 - Scope

<shibmd:Scope>, contenuto nell'elemento <md:Extension>, DEVE:

  • assumere valori di dominio nella disponibilità dell'organizzazione (strumento di verifica WHOIS)


Esempio:

<shibmd:Scope>example.org</shibmd:Scope>

[TOP]

IDP-MD04 - DisplayName

<mdui:DisplayName>, contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere il nome del servizio da mostrare all'utente;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<mdui:DisplayName xml:lang="en">Example University</mdui:DisplayName>
<mdui:DisplayName xml:lang="it">Università di Esempio</mdui:DisplayName>

[TOP]

IDP-MD05 - Description

<mdui:Description>, contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere una breve descrizione del servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<mdui:Description xml:lang="en">Identity provider for Example University user</mdui:Description> 
<mdui:Description xml:lang="it">Identity provider per gli utenti di Università di Esempio</mdui:Description>

[TOP]

IDP-MD06 - InformationURL

<mdui:InformationURL>, contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere la URL della pagina informativa del servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.

Per il contenuto della pagina informativa vedere IDP-FED02.


Esempio:

<mdui:InformationURL xml:lang="en">https://...info page in english...</mdui:InformationURL> 
<mdui:InformationURL xml:lang="it">https://...pagina di informazioni in italiano...</mdui:InformationURL>

[TOP]

IDP-MD07 - PrivacyStatementURL

<mdui:PrivacyStatementURL>, contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere la URL della pagina sul trattamento dei dati personali del servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.

Per il contenuto della pagina sul trattamento dei dati personali vedere IDP-FED03.


Esempio:

<mdui:PrivacyStatementURL xml:lang="en">https://...privacy policy in english...</mdui:PrivacyStatementURL>  
<mdui:PrivacyStatementURL xml:lang="it">https://...privacy policy in italiano...</mdui:PrivacyStatementURL>

[TOP]

<mdui:Logo>, contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere le URL protette da SSL (https://) dei loghi dell'organizzazione in formato PNG (si RACCOMANDA uno sfondo trasparente) aventi dimensioni:
    • 16x16 pixel (o maggiore se rispetta l'aspect-ratio);
    • 80x60 pixel (o maggiore se rispetta l'aspect-ratio).


Esempio:

<mdui:Logo width="16" height="16">https://...favicon_16x16.png...</mdui:Logo>
<mdui:Logo width="80" height="60">https://...logo_80x60.png...</mdui:Logo>

[TOP]

IDP-MD09 - KeyDescriptor

I metadata DEVONO contenere almeno un elemento <md:KeyDescriptor> con le seguenti caratteristiche:

  • privo di ulteriori attributi o con il solo attributo use="signing";
  • che contenga un certificato X.509 in formato PEM.


Esempio:

<md:KeyDescriptor use="signing">
   <ds:KeyInfo>
      <ds:X509Data>
         <ds:X509Certificate>
         MII[..]
         </ds:X509Certificate>
      </ds:X509Data>
   </ds:KeyInfo>
</md:KeyDescriptor>

[TOP]

IDP-MD10 - SingleSignOnService

<md:SingleSignOnService> DEVE:

  • essere presente con l'attributo Binding='urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect' perchè necessario alle Authentication Request (AuthnRequest);
  • essere presente con l'attributo Binding='urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST' perchè necessario alle Authentication Response (AuthnResponse);
  • in tutti i casi, contenere un attributo Location valorizzato con una URL protetta da SSL (https://).

Esempio:

<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://..."/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://..."/>

[TOP]

IDP-MD11 - SingleLogoutService

<md:SingleLogoutService> DEVE:

  • essere presente con l'attributo Binding='urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect' perchè necessario alle Logout Request (LogoutRequest);
  • contenere un attributo Location valorizzato con una URL protetta da SSL (https://).

Esempio:

<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://..."/>

[TOP]

IDP-MD12 - OrganizationName

<md:OrganizationName> , contenuto nell'elemento <md:Organization>, DEVE:

  • contenere il nome dell'organizzazione a cui afferisce il servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<md:OrganizationName xml:lang="en">Example University</md:OrganizationName> 
<md:OrganizationName xml:lang="it">Università di Esempio</md:OrganizationName>

[TOP]

IDP-MD13 - OrganizationDisplayName

<md:OrganizationDisplayName> , contenuto nell'elemento <md:Organization>, DEVE:

  • contenere il nome dell'organizzazione che verrà mostrato nelle interfacce utente;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<md:OrganizationDisplayName xml:lang="en">Example University</md:OrganizationDisplayName>
<md:OrganizationDisplayName xml:lang="it">Università di Esempio</md:OrganizationDisplayName>

[TOP]

IDP-MD14 - OrganizationURL

<md:OrganizationURL>, contenuto nell'elemento <md:Organization>, DEVE:

  • contenere la URL del sito principale dell'organizzazione a cui afferisce il servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<md:OrganizationURL xml:lang="en">https://...institutional site in english...</md:OrganizationURL> 
<md:OrganizationURL xml:lang="it">https://...sito istituzionalein italiano...</md:OrganizationURL>

[TOP]

IDP-MD15 - ContactPerson

I metadata DEVONO contenere almeno un elemento <md:ContactPerson> con le seguenti caratteristiche:

  • contenere l'indirizzo email del contatto tecnico del servizio;
  • contenere l'attributo contactType="technical";

Si RACCOMANDA di utilizzare un indirizzo impersonale (ad esempio una mailing-list).


Esempio:

<ContactPerson contactType="technical">mailto:mailing-list@domain</md:ContactPerson>

[TOP]


Federation (IDP-FED)

I requisiti di seguito elencati sono dettati dalla Federazione e destinati agli Identity Provider.

IDP-FED01 - Data

Un Identity Provider in IDEM DEVE essere in grado di rilasciare le seguenti informazioni:

  1. un identificativo univoco, persistente, diverso per ogni servizio e trasmissibile in una delle seguenti forme:
    • nell'elemento <NameID> con attributo Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" se indicato nei metadata del Service Provider;
    • nell'attributo eduPersonTargetedID per i Service Provider che lo richiedono nell'elemento <md:RequestedAttribute>.
  2. l'attributo eduPersonScopedAffiliation, ovvero l'affiliazione dell'utente con l'aggiunta dello scope.

Esempio con sp.aai-test.garr.it:

eduPersonScopedAffiliation = member@aai-test.garr.it;staff@aai-test.garr.it
persistent = https://garr-idp-test.irccs.garr.it/idp/shibboleth!https://sp.aai-test.garr.it/shibboleth!eYfN....Q1rU=

[TOP]

IDP-FED02 - Informazioni

La pagina informativa esposta in lingua italiana e in lingua inglese DEVE contenere:

  1. un riferimento per il supporto agli utenti (ad esempio un indirizzo di posta, o un web form, ecc.);
  2. un collegamento alla pagina sul trattamento dei dati personali;
  3. il Logo di IDEM e il link al Sito di IDEM.

[TOP]

IDP-FED03 - Trattamento dati personali

La pagina sul trattamento dei dati personali DEVE contenere tutte le informazioni previste dagli artt. 13 e 14 del Regolamento UE 679/2016.

A titolo esemplificativo, Il Servizio IDEM GARR AAI rende disponibile il seguente modello: InformativaDatiPersonaliIdP.

[TOP]

IDP-FED04 - Login

La pagina di login di un Identity Provider federato in IDEM DEVE contenere:

  • il collegamento alla pagina informativa indicata da <mdui:InformationURL> (IDP-MD06);
  • il collegamento alla pagina sul trattamento dei dati personali indicata da <mdui:PrivacyStatementURL> (IDP-MD07);
  • il logo di IDEM (Logo IDEM);
  • il riferimento al Contatto Tecnico o al Contatto di Supporto per la risoluzione delle problematiche legate all'accesso alle risorse da parte degli utenti.

[TOP]

IDP-FED05 - Certificati metadata

Il certificato o i certificati utilizzati per firmare e cifrare le asserzioni dell'IdP DOVREBBERO essere:

  • di lunga durata (30 anni);
  • autofirmati (self-signed);
  • validi (non scaduto);
  • non firmati con algoritmi di firma basati su MD5 o SHA1;
  • corrispondenti ad una chiave privata di almeno 3072 bit.

In ogni caso la chiave privata corrispondente NON DEVE avere una lunghezza minore di 2048 bit.

Esempio IdP Metadata

<md:EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui" entityID="https://idp.example.org/idp/shibboleth">
 <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  <md:Extensions>
   <shibmd:Scope regexp="false">example.org</shibmd:Scope>
   <mdui:UIInfo>
    <mdui:DisplayName xml:lang="en">ENG IDP DISPLAYNAME</mdui:DisplayName>
    <mdui:DisplayName xml:lang="it">ITA IDP DISPLAYNAME</mdui:DisplayName>
    <mdui:Description xml:lang="en">ENG IDP DESCRIPTION</mdui:Description>
    <mdui:Description xml:lang="it">ITA IDP DESCRIPTION</mdui:Description>
    <mdui:InformationURL xml:lang="en">HTTPS URL ENG INFO PAGE</mdui:InformationURL>
    <mdui:InformationURL xml:lang="it">HTTPS URL ITA INFO PAGE</mdui:InformationURL>
    <mdui:PrivacyStatementURL xml:lang="en">URL ENG PRIVACY POLICY PAGE</mdui:PrivacyStatementURL>
    <mdui:PrivacyStatementURL xml:lang="it">URL ITA PRIVACY POLICY PAGE</mdui:PrivacyStatementURL>
    <mdui:Logo width="80" height="60">HTTPS URL LOGO</mdui:Logo>
    <mdui:Logo width="16" height="16">HTTPS URL FAVICON</mdui:Logo>
   </mdui:UIInfo>
  </md:Extensions>
  <md:KeyDescriptor use="signing">
   <ds:KeyInfo>
    <ds:X509Data>
     <ds:X509Certificate>
        MII...
     </ds:X509Certificate>
    </ds:X509Data>
   </ds:KeyInfo>
  </md:KeyDescriptor>
  <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://idp.example.org/idp/profile/SAML2/Redirect/SLO"/>
  <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
  <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
  <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://idp.example.org/idp/profile/SAML2/Redirect/SSO"/>
  <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://idp.example.org/idp/profile/SAML2/POST/SSO"/>
 </md:IDPSSODescriptor>
 <md:Organization>
  <md:OrganizationName xml:lang="it">ITA IDP ORGANIZATION NAME</md:OrganizationName>
  <md:OrganizationName xml:lang="en">ENG IDP ORGANIZATION NAME</md:OrganizationName>
  <md:OrganizationDisplayName xml:lang="it">ITA IDP DISPLAYNAME ORGANIZATION</md:OrganizationDisplayName>
  <md:OrganizationDisplayName xml:lang="en">ENG IDP DISPLAYNAME ORGANIZATION</md:OrganizationDisplayName>
  <md:OrganizationURL xml:lang="it">https://example.org/it</md:OrganizationURL>
  <md:OrganizationURL xml:lang="en">https://example.org/en</md:OrganizationURL>
 </md:Organization>
 <md:ContactPerson contactType="technical">
  <md:GivenName>EXAMPLE CONTACT NAME</md:GivenName>
  <md:SurName>EXAMPLE CONTACT SURNAME</md:SurName>
  <md:EmailAddress>mailto:technical.contact@example.org</md:EmailAddress>
 </md:ContactPerson>
</md:EntityDescriptor>

Service Provider

Metadata (SP-MD)

I requisiti di seguito elencati sono relativi ai metadata che descrivono un Service Provider (SP).


SP-MD01 - validUntil

validUntil , attributo contenuto nell'elemento <md:EntityDescriptor>, DEVE essere rimosso assieme al suo valore in quanto verrà inserito dalla Federazione.

[TOP]

SP-MD02 - entityID

entityID , attributo contenuto nell'elemento <md:EntityDescriptor>, DEVE essere una URL di lunghezza massima 256 caratteri.

La URL dell'entityID DOVREBBE restituire i metadata dell'entità.


Esempio:

entityID="https://sp.example.org/shibboleth"

[TOP]

SP-MD03 - DisplayName

<mdui:DisplayName> , contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere il nome della risorsa da mostrare all'utente. Attenzione: il nome non deve usare la parola "IDEM" perchè riservata al Servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<mdui:DisplayName xml:lang="en">Resource provided by Example Organization</mdui:DisplayName>
<mdui:DisplayName xml:lang="it">Risorsa erogata da Organizzazione di Esempio</mdui:DisplayName>

[TOP]

SP-MD04 - Description

<mdui:Description> , contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere una breve descrizione del servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<mdui:Description xml:lang="en">The resource allow you to ...</mdui:Description> 
<mdui:Description xml:lang="it">La risorsa ti permette di ...</mdui:Description>

[TOP]

SP-MD03 - InformationURL

<mdui:InformationURL> , contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere la URL della pagina informativa del servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.

Per il contenuto della pagina informativa vedere SP-FED02.


Esempio:

<mdui:InformationURL xml:lang="en">https://...info page in english...</mdui:InformationURL> 
<mdui:InformationURL xml:lang="it">https://...informativa in italiano...</mdui:InformationURL>

[TOP]

SP-MD04 - PrivacyStatementURL

<mdui:PrivacyStatementURL>, contenuto nell'elemento <mdui:UIInfo>, DEVE:

  • contenere la URL della pagina sul trattamento dei dati personali del servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.

Per il contenuto della pagina sul trattamento dei dati personali vedere SP-FED03.


Esempio:

<mdui:PrivacyStatementURL xml:lang="en">https://...privacy policy in english...</mdui:PrivacyStatementURL>  
<mdui:PrivacyStatementURL xml:lang="it">https://...privacy policy in italiano...</mdui:PrivacyStatementURL>

[TOP]

<mdui:Logo> , contenuto nell'elemento <mdui:UIInfo>, DOVREBBE:

  • contenere una URL protetta da SSL ( https:// ) del logo dell'organizzazione in formato PNG (si RACCOMANDA uno sfondo possibilmente trasparente) con:
    • base: dai 64 px ai 350 px;
    • altezza: dai 64px ai 146px;


Esempio:

<mdui:Logo width="64" height="64">https://...logo.png</mdui:Logo>

[TOP]

SP-MD08 - KeyDescriptor

I metadata DEVONO contenere almeno un elemento <md:KeyDescriptor> con le seguenti caratteristiche:

  • privo di ulteriori attributi o con il solo attributo use="encryption";
  • contenente un certificato X.509 in formato PEM.
<md:KeyDescriptor use="encryption">
   <ds:KeyInfo> 
      <ds:X509Data> 
         <ds:X509Certificate>
            MII[..]
         </ds:X509Certificate>
      </ds:X509Data>
   </ds:KeyInfo>
</md:KeyDescriptor>

Se il Service Provider supporta il Single Logout, DEVE essere presente un ulteriore elemento <md:KeyDescriptor> con l'attributo use="signing".

[TOP]

SP-MD09 - RequestedAttribute

<md:RequestedAttribute> , contenuto nell'elemento <md:AttributeConsumingService>, DEVE:

  • contenere tutti e soli gli attributi SAML richiesti dalla risorsa;
  • indicare gli attributi indispensabili all'accesso e all'utilizzo della risorsa con il parametro isRequired="true"
  • indicare gli attributi non indispensabili all'accesso e all'utilizzo della risorsa con il parametro isRequired="false"


Esempio:

<md:RequestedAttribute FriendlyName="givenName" Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true"/>
<md:RequestedAttribute FriendlyName="displayName" Name="urn:oid:2.16.840.1.113730.3.1.241" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/>

[TOP]

SP-MD10 - OrganizationName

<md:OrganizationName> , contenuto nell'elemento <md:Organization>, DEVE:

  • contenere il nome dell'organizzazione che offre il servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<md:OrganizationName xml:lang="en">Example Organization</md:OrganizationName> 
<md:OrganizationName xml:lang="it">Organizzazione di Esempio</md:OrganizationName>

[TOP]

SP-MD11 - OrganizationDisplayName

<md:OrganizationDisplayName> , contenuto nell'elemento <md:Organization>, DEVE:

  • contenere il nome dell'organizzazione che offre il servizio da mostrare all'utente;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<md:OrganizationDisplayName xml:lang="en">Resource provided by Example University</md:OrganizationDisplayName>
<md:OrganizationDisplayName xml:lang="it">Risorsa erogata da Università di Esempio</md:OrganizationDisplayName>

[TOP]

SP-MD12 - OrganizationURL

<md:OrganizationURL>, contenuto nell'elemento <md:Organization>, DEVE:

  • contenere la URL del sito principale dell'organizzazione che offre il servizio;
  • essere definito sia per la lingua italiana, sia per la lingua inglese.


Esempio:

<md:OrganizationURL xml:lang="en">https://...institutional site in english...</md:OrganizationURL> 
<md:OrganizationURL xml:lang="it">https://...sito istituzionalein italiano...</md:OrganizationURL>

[TOP]

SP-MD13 - ContactPerson

I metadata DEVONO contenere almeno un elemento <md:ContactPerson> con le seguenti caratteristiche:

  • contenere l'indirizzo email del contatto tecnico del servizio;
  • contenere l'attributo contactType="technical";

Si RACCOMANDA di utilizzare un indirizzo impersonale (ad esempio una mailing-list).


Esempio:

<ContactPerson contactType="technical">mailto:mailing-list@domain</md:ContactPerson>

[TOP]

Federation (SP-FED)

I requisiti di seguito elencati sono dettate dalla Federazione e destinate ai Service Provider.

SP-FED01 - Data

un Service Provider in IDEM riceve automaticamente le seguenti informazioni:

  1. Un identificativo univoco persistente e targhettizzato dell'utente:
    • persistent-id (persistent NameID) (o eduPersonTargetedID se non è possibile rilasciarlo)
  2. L'affiliazione dell'utente con scopo:
    • affiliation (eduPersonScopedAffiliation)


Esempio con sp.aai-test.garr.it:

affiliation = member@aai-test.garr.it;staff@aai-test.garr.it
persistent-id = https://garr-idp-test.irccs.garr.it/idp/shibboleth!https://sp.aai-test.garr.it/shibboleth!eYfN....Q1rU=

Ogni informazione aggiuntiva richiesta per l'utilizzo della/e risorsa/e protetta/e dal Service Provider va motivata adeguatamente via mail a idem-help@garr.it.

[TOP]

SP-FED02 - Informazioni

La pagina informativa esposta in lingua italiana e in lingua inglese DEVE contenere:

  1. la descrizione del servizio;
  2. il pubblico a cui si rivolge il servizio;
  3. la denominazione dell'organizzazione che lo gestisce;
  4. il riferimento al supporto utenti;
  5. il collegamento alla pagina sul trattamento dei dati personali.

[TOP]

SP-FED03 - Trattamento dati

La pagina sul trattamento dei dati personali DEVE contenere tutte le informazioni previste dagli artt. 13 e 14 del Regolamento UE 679/2016.

Per la stesura della privacy policy IDEM suggerisce di seguire le linee guida di REFEDS:

https://wiki.refeds.org/display/CODE/Privacy+policy+guidelines+for+Service+Providers

[TOP]

SP-FED03 - Login Page / Discovery Service

La pagina di accesso ad una risorsa federata in IDEM DEVE contenere:

  • l'elenco degli IdP abilitati provenienti da IDEM ed eduGAIN;
  • un riferimento alla pagina informativa del servizio (SP-MD3)

Il Servizio suggerisce di seguire le REFEDS Best Practices: https://discovery.refeds.org/

[TOP]

SP-FED04 - Certificati metadata

Il certificato o i certificati utilizzati per firmare e cifrare le asserzioni dell'IdP DOVREBBERO essere:

  • di lunga durata (30 anni);
  • autofirmati (self-signed);
  • validi (non scaduto);
  • non firmati con algoritmi di firma basati su MD5 o SHA1;
  • corrispondenti ad una chiave privata di almeno 3072 bit.

In ogni caso la chiave privata corrispondente NON DEVE avere una lunghezza minore di 2048 bit.

Esempio Metadata Service Provider

<md:EntityDescriptor entityID="https://sp.example.com/shibboleth"
                     xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
                     xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
   <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
      <md:Extensions>
         <init:RequestInitiator
            xmlns:init="urn:oasis:names:tc:SAML:profiles:SSO:request-init"
            Binding="urn:oasis:names:tc:SAML:profiles:SSO:request-init"
            Location="https://sp.example.com/Shibboleth.sso/Login" />
         <idpdisc:DiscoveryResponse
            xmlns:idpdisc="urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol"
            Binding="urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol"
            Location="https://sp.example.com/Shibboleth.sso/DS" index="1" />
         <mdui:UIInfo>
            <mdui:DisplayName xml:lang="en">ENG DISPLAY NAME</mdui:DisplayName>
            <mdui:DisplayName xml:lang="it">ITA DISPLAY NAME</mdui:DisplayName>
            <mdui:Description xml:lang="en">ENG DESCRIPTION</mdui:Description>
            <mdui:Description xml:lang="it">ITA DESCRIPTION</mdui:Description>
            <mdui:InformationURL xml:lang="en">HTTPS ENG INFORMATION PAGE URL</mdui:InformationURL>
            <mdui:InformationURL xml:lang="it">HTTPS ITA INFORMATION PAGE URL</mdui:InformationURL>
            <mdui:Logo height="64" width="64">HTTPS RESOURCE LOGO PNG</mdui:Logo>
            <mdui:PrivacyStatementURL xml:lang="en">HTTPS ENG PRIVACY POLICY PAGE URL</mdui:PrivacyStatementURL>
            <mdui:PrivacyStatementURL xml:lang="it">HTTPS ITA PRIVACY POLICY PAGE URL</mdui:PrivacyStatementURL>
         </mdui:UIInfo>
      </md:Extensions>
      <md:KeyDescriptor>
         <ds:KeyInfo>
            <ds:X509Data>
               <ds:X509Certificate>
                  MII...
               </ds:X509Certificate>
            </ds:X509Data>
         </ds:KeyInfo>
      </md:KeyDescriptor>
      <md:SingleLogoutService
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
         Location="https://sp.example.com/Shibboleth.sso/SLO/Redirect" />
      <md:SingleLogoutService
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
         Location="https://sp.example.com/Shibboleth.sso/SLO/POST" />
      <md:AssertionConsumerService
         Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
         Location="https://sp.example.com/Shibboleth.sso/SAML2/POST"
         index="1" />
      <md:AttributeConsumingService index="1">
         <!-- example for the required attribute: mail -->
         <md:RequestedAttribute FriendlyName="mail"
            Name="urn:oid:0.9.2342.19200300.100.1.3"
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
            isRequired="true" />
         <!-- example for the desired attribute: eduPersonPrincipalName -->
         <md:RequestedAttribute FriendlyName="eppn"
            Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6"
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
            isRequired="false" />
      </md:AttributeConsumingService>
   </md:SPSSODescriptor>
   <md:Organization>
      <md:OrganizationName xml:lang="en">ENG ORGANIZATION NAME</md:OrganizationName>
      <md:OrganizationName xml:lang="it">ITA ORGANIZATION NAME</md:OrganizationName>
      <md:OrganizationDisplayName xml:lang="en">ENG ORGANIZATION DISPLAY NAME</md:OrganizationDisplayName>
      <md:OrganizationDisplayName xml:lang="it">ITA ORGANIZATION DISPLAY NAME</md:OrganizationDisplayName>
      <md:OrganizationURL xml:lang="en">ENG ORGANIZATION URL</md:OrganizationURL>
      <md:OrganizationURL xml:lang="it">ITA ORGANIZATION URL</md:OrganizationURL>
   </md:Organization>
   <md:ContactPerson contactType="technical">
      <md:EmailAddress>mailto:technical.contact.mailing.list@example.org</md:EmailAddress>
   </md:ContactPerson> 
</md:EntityDescriptor>

Riferimenti

[RFC 2119] Key words for use in RFCs to Indicate Requirement Levels

http://www.rfc-editor.org/rfc/rfc2119.txt


[SAML2Core] Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0

http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf


[SAML2Bind] Bindings for the OASIS Security Assertion Markup Language (SAML) V2.0

http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf


[SAML2Meta] Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0

http://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf


[SAML2MDIOP] SAML V2.0 Metadata Interoperability Profile Version 1.0

http://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.pdf


[SAML2Int] SAML V2.0 Deployment Profile for Federation Interoperability

https://kantarainitiative.github.io/SAMLprofiles/saml2int.html