Differenze tra le versioni di "Erasmus Plus e ESI"

Da WIKI IDEM GARR.
Jump to navigation Jump to search
 
(37 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
Nell'ambito della European Student Card Initiative la commisione europea ha stabilito un percorso di digitalizzazione di tutti i servizi legati al programma Erasmus+ quali [https://learning-agreement.eu/user/login Online Learning Agreement] (OLA), Erasmus+ mobile application, ecc. Una parte fondamentale della digitalizzazione riguarda l'autenticazione degli studenti, per la quale è stata scelta eduGAIN, cosicché gli studenti possano accedere con le proprie credenziali istituzionali e che i servizi ricevano fin da subito tutte le informazioni necessarie ad identificare correttamente gli utenti.
+
Nell'ambito della European Student Card Initiative la Commisione Europea ha stabilito un percorso di digitalizzazione di tutti i servizi legati al programma Erasmus+ quali [https://learning-agreement.eu/user/login Online Learning Agreement] (OLA), Erasmus+ mobile application, ecc. Una parte fondamentale della digitalizzazione riguarda l'autenticazione degli studenti, per la quale è stata scelta eduGAIN, cosicché gli studenti possano accedere con le proprie credenziali istituzionali e che i servizi ricevano fin da subito tutte le informazioni necessarie ad identificare correttamente gli utenti.
  
 
===MyAcademicID proxy===
 
===MyAcademicID proxy===
L'accesso ai servizi Erasmus+ avviene mediante un proxy realizzato nell'ambito del progetto MyAcademicID e gestito da GEANT. Questo vuol dire che tutti i servizi legati ad Erasmus+ hanno un unico Service Provider con il seguente '''entityID''':
+
L'accesso ai servizi Erasmus+ avviene mediante un proxy realizzato nell'ambito del progetto [https://wiki.geant.org/display/SM/MyAcademicID+Identity+and+Access+Management+Service MyAcademicID] e gestito da GEANT. Questo vuol dire che tutti i servizi legati ad Erasmus+ hanno un unico Service Provider con il seguente '''entityID''':
  
 
<pre>
 
<pre>
 
https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml
 
https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml
</pre>Il Service Provider è pubblicato in IDEM tramite eduGAIN, quindi se state già consumando i metadata <code>edugain2idem</code> (vedi [[Metadata]]) non dovrete fare alcuna azione per accedere tramite il vostro Identity Provider. In caso contrario, in primo luogo dovete contattare il Servizio IDEM GARR AAI ([[Mailto:Idem-help@garr.it|idem-help@garr.it]]) per richiedere l'esportazione del vostro Identity Provider in eduGAIN, poi dovrete configurare i metadata di eduGAIN distributi dal Servizio (vedi [[Metadata]]).  
+
</pre>Il Service Provider è pubblicato in IDEM tramite eduGAIN, quindi se state già consumando i metadata <code>edugain2idem</code> (vedi [[Metadata]]) non dovrete fare alcuna ulteriore azione per accedere tramite il vostro Identity Provider. In caso contrario, in primo luogo dovete contattare il [mailto:idem-help@garr.it Servizio IDEM GARR AAI] per richiedere l'esportazione del vostro Identity Provider in eduGAIN, poi dovrete configurare i metadata di eduGAIN distributi dal Servizio (vedi [[Metadata]]).  
  
 
====Attributi====
 
====Attributi====
Riga 16: Riga 16:
 
!Esempio
 
!Esempio
 
|-
 
|-
|eduPersonPrincipalName
+
|''Uno qualunque dei seguenti identificatori:''
|Identificativo globalmente univoco e persistente.
+
*Persistent NameID
|<code>username@foo.bar</code>
+
*eduPersonPrincipalName
|-
+
*eduPersonTargetedID
|eduPersonTargetedID
+
|Il servizio richiede un identificatore di tipo univoco e persistente. Gli identificatori Persistent NameID ed eduPersonTargetedID sono persistenti e specifici per il servizio, mentre eduPersonPrincipalName non muta al variare del servizio e permette quindi l'identificazione dell'utente su molteplici servizi.
|Identificativo univoco, opaco, mirato (diverso per ogni Service Provider) e persistente.
+
Considerato l'elevato grado di fiducia riposto negli operatori della risorsa (GEANT), consigliamo di utilizzare l'identificatore che permette di fornire supporto all'utenza in modo più semplice, e questo tipicamente è eduPersonPrincipalName.
|<samp><code><nowiki>https://idp.foo.bar/idp/shibboleth!https://sp.example.com/shibboleth!a6c2c4d4-08b9-4ca7-8ff9-43d83e6e1d35</nowiki></code></samp>
+
 
 +
Il servizio supporta anche altri identificatori comunemente non implementati nella nostra federazione, per maggiori informazioni vedi https://wiki.geant.org/display/SM/Attributes+required+from+Higher+Education+Institutions.
 +
|
 +
*Persistent NameID: <code>0920ddf277bb2a06162e469631147f69</code>
 +
*ePPN: <code>username@foo.bar</code>
 +
*ePTID: <code>https://idp.foo.bar/idp/shibboleth!https://sp.example.com/shibboleth!a6c2c4d4-08b9-4ca7-8ff9-43d83e6e1d35</code>
 
|-
 
|-
 
|displayName
 
|displayName
 
|Nome completo. '''Rilasciare se non si rilascia già cn, o givenName+sn.'''
 
|Nome completo. '''Rilasciare se non si rilascia già cn, o givenName+sn.'''
|<code>Mario Rossi</code>
+
|
 
|-
 
|-
 
|cn
 
|cn
Riga 40: Riga 45:
 
|<code>Rossi</code>
 
|<code>Rossi</code>
 
|-
 
|-
|eduPersonAffiliation
+
|mail
|Macro ruolo all'interno della propria organizzazione.
+
|Indirizzo email dell'utente.
|<code>[member, student]</code>
+
|<code>mario.rossi@foo.bar</code>
 
|-
 
|-
 
|eduPersonScopedAffiliation
 
|eduPersonScopedAffiliation
 
|Macro ruolo all'interno della propria organizzazione con l'aggiunta del dominio.
 
|Macro ruolo all'interno della propria organizzazione con l'aggiunta del dominio.
|<code>[member@foo.bar, student@foo.bar</code>
+
|<code>[member@foo.bar, student@foo.bar]</code>
 
|-
 
|-
 
|schacPersonalUniqueCode
 
|schacPersonalUniqueCode
Riga 55: Riga 60:
 
|Dominio della propria organizzazione.
 
|Dominio della propria organizzazione.
 
|<code>foo.bar</code>
 
|<code>foo.bar</code>
|-
 
|schacHomeOrganizationType
 
|Tipo di organizzazione (URN)
 
|<code><nowiki>urn:schac:homeOrganizationType:eu:higherEducationalInstitution</nowiki></code>
 
 
|-
 
|-
 
|}
 
|}
 +
[[#top|[TOP]]]
  
 
====European Student Identifier====
 
====European Student Identifier====
Lo European Student Identifier (ESI) è un idenficatore globalmente univoco, persistente, non mirato (rimane lo stesso per tutti i Service Provider). Viene codificato e trasmesso tramite l'attributo <code>schacPersonalUniqueCode</code>. L'ESI supporta due modalità principali di codifica: per nazione, nel caso sia disponibile un codice studentesco nazionale, o per istituto. Nel caso dell'Italia l'unica forma ammessa è per istituto.
+
Lo European Student Identifier (ESI) è un identificatore globalmente univoco, persistente, non mirato (rimane lo stesso per tutti i Service Provider). Viene codificato e trasmesso tramite l'attributo <code>schacPersonalUniqueCode</code>. Lo ESI supporta due modalità principali di codifica:  
 +
 
 +
#<u>per nazione</u>: nel caso sia disponibile un codice studentesco nazionale
 +
#<u>per istituto</u>: unica forma ammessa nel caso dell'Italia
  
Lo ESI si compone di tre parti, un namespace URN invariabile, il dominio dell'organizzazione ed un codice idenficativo dello studente:
+
Lo ESI si compone di tre parti:
  
*namespace URN: <code><nowiki>urn:schac:personalUniqueCode:int:esi</nowiki>:</code>
+
*namespace URN invariabile: <code><nowiki>urn:schac:personalUniqueCode:int:esi</nowiki>:</code>
*dominio dell'organizzazione: foo.bar
+
*dominio dell'organizzazione: <code>foo.bar</code>
 
*codice identificativo dello studente (ad es. la matricola): <code>17585515</code>
 
*codice identificativo dello studente (ad es. la matricola): <code>17585515</code>
  
 
Lo ESI completo risultante:  <code><nowiki>urn:schac:personalUniqueCode:int:esi:foo.bar:17585515</nowiki></code>
 
Lo ESI completo risultante:  <code><nowiki>urn:schac:personalUniqueCode:int:esi:foo.bar:17585515</nowiki></code>
  
Le specifiche complete dello ESI sono disponibili sul wiki di GEANT: https://wiki.geant.org/display/SM/European+Student+Identifier
+
Le specifiche complete dello ESI sono disponibili sul wiki di GEANT:
 +
 
 +
https://wiki.geant.org/display/SM/European+Student+Identifier
 +
 
 +
[[#top|[TOP]]]
  
 
====Configurazione Identity Provider====
 
====Configurazione Identity Provider====
Per rilasciare lo ESI tramite un Identity Provider (IdP) si possono usare due strategie: valorizzare l'attributo <code>schacPersonalUniqueCode</code> completo di namespace URN e dominio direttamente nella propria Directory o esportare il solo codice identificativo dello studente e valorizzare <code>schacPersonalUniqueCode</code> nell'IdP. La seconda strategia è più flessibile e raccomandata dal Servizio IDEM GARR AAI Di seguito vi proponiamo un esempio di configurazione basato sulla seconda strategia per Shibboleth Identity Provider v 4.X.
+
Per supportare l'accesso alla piattaforma MyAcademicID e quindi ai servizi Erasmus+, gli Identity Provider devono rilasciare correttamente tutti gli attributi sopra elencati. Di seguito vi forniamo le informazioni necessarie per valorizzare e rilasciare lo <code>schacPersonalUniqueCode</code>, che è utilizzato per trasportare lo ESI, e lo <code>schacHomeOrganization</code> che sono comunemente meno utilizzati.
 +
 
 +
Per rilasciare lo ESI tramite un Identity Provider (IdP) si possono usare due strategie principali: valorizzare l'attributo <code>schacPersonalUniqueCode</code> completo di namespace URN e dominio direttamente nella propria Directory o esportare il solo codice identificativo dello studente e valorizzare <code>schacPersonalUniqueCode</code> tramite l'IdP. La seconda strategia è più flessibile e raccomandata dal Servizio IDEM GARR AAI. Di seguito vi proponiamo degli esempi di configurazione basati su Shibboleth Identity Provider v3.x (<u>'''End of Life dal 2020'''</u>) e su Shibboleth Identity Provider v4.x.
 +
 
 +
Per il rilascio di <code>schacHomeOrganization</code> vi proponiamo invece le impostazioni per il rilascio statico così come previsto dalle guide IDEM e dalle best practices delle federazioni.
 +
 
 +
[[#top|[TOP]]]
  
 
====Configurazione dello ESI====
 
====Configurazione dello ESI====
Per configurare lo ESI è necessario trasmettere il codice identificativo dello studente al proprio IdP. Ammesso che il codice sia contenuto in un attributo denominato <code>matricolaStudente</code>, quest'ultimo andrà aggiunto alla lista di attributi restituiti dalla Directory in risposta alla query dell'IdP.
 
  
Per creare lo ESI va definito e valorizzato l'attributo <code>schacPersonalUniqueCode</code> nel file ''attribute-resolver.xml'', come nell'esempio che segue:
+
=====Shibboleth Identity Provider v3.x - <u>'''End of Life dal'''</u> <u>'''2020 (DEPRECATA)'''</u>:=====
<AttributeDefinition id="schacPersonalUniqueCode" xsi: type = "Template">  
+
Per creare e rilasciare lo ESI verso MyAcademicID è necessario:
    <InputDataConnector ref="myLDAP" attributeNames="matricolaStudente"/>  
+
 
    <DisplayName xml:lang="it">European Student Identifier (ESI)</DisplayName>
+
#Aggiungere l'attributo <code>schacPersonalUniqueCode</code> , definendone il comportamento, nel Attribute Resolver (''conf/attribute-resolver.xml'') del proprio Identity Provider v3.x
    <DisplayName xml:lang="en">European Student Identifier (ESI)</DisplayName>
+
#Definire le regole di rilascio nel ''conf/attribute-filter.xml''
    <Template><nowiki>urn:schac:personalUniqueCode:int:esi:it:foo.bar:${matricolaStudente}</nowiki></Template >
+
 
     <AttributeEncoder xsi:type="SAML2String" name="<nowiki>urn:oid:1.3.6.1.4.1.25178.1.2.14</nowiki>" friendlyName="schacPersonalUniqueCode" encodeType="false"/>  
+
[[#top|[TOP]]]
</ AttributeDefinition >
+
 
 +
======Attribute Resolver (per Shibboleth IdP v3.x - '''<u>End of Life dal 2020</u>''' '''- DEPRECATA''')======
 +
 
 +
======Modo #1 - schacPersonalUniqueCode valorizzato attraverso template======
 +
''Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacPersonalUniqueCode verso le risorse federate.''
 +
 
 +
 
 +
In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP in un attributo denominato <code>matricolaStudente</code>.
 +
 
 +
Per usare l'attributo per costruire il valore dell'ESI in <code>schacPersonalUniqueCode</code> aggiungere la seguente definizione dell'attributo nel file ''conf/attribute-resolver.xml'':<syntaxhighlight lang="xml">
 +
<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Template">
 +
  <InputDataConnector ref="myLDAP" attributeNames="matricolaStudente"/>
 +
  <DisplayName xml:lang="en">ESI</DisplayName>
 +
  <DisplayName xml:lang="it">ESI</DisplayName>
 +
  <DisplayDescription xml:lang="en">European Student Identifier</DisplayDescription>
 +
  <DisplayDescription xml:lang="it">European Student Identifier</DisplayDescription>
 +
  <Template>urn:schac:personalUniqueCode:int:esi:%{idp.scope}:${matricolaStudente}</Template>
 +
  <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" encodeType="false"/>
 +
</AttributeDefinition>
 +
</syntaxhighlight>[[#top|[TOP]]]
 +
 
 +
======Modo #2 - schacPersonalUniqueCode valorizzato all'interno della directory istituzionale======
 +
''Questa modalità è utilizzabile dagli istituti che hanno accesso in modifica alla Directory collegata all'IdP istituzionale.''
 +
 
 +
 
 +
 
 +
In questo caso l'ESI verrà inserito direttamente nell'attributo <code>schacPersonalUniqueCode</code>contenuto nella Directory.
 +
 
 +
Per usare l'attributo per costruire il valore dell'ESI in <code>schacPersonalUniqueCode</code> aggiungere la seguente definizione dell'attributo nel file ''conf/attribute-resolver.xml'':<syntaxhighlight lang="xml">
 +
<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Simple">
 +
  <InputDataConnector ref="myLDAP" attributeNames="schacPersonalUniqueCode"/>
 +
  <DisplayName xml:lang="en">ESI</DisplayName>
 +
  <DisplayName xml:lang="it">ESI</DisplayName>
 +
  <DisplayDescription xml:lang="en">European Student Identifier</DisplayDescription>
 +
  <DisplayDescription xml:lang="it">European Student Identifier</DisplayDescription>
 +
  <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" encodeType="false"/>
 +
</AttributeDefinition>
 +
</syntaxhighlight>[[#top|[TOP]]]
 +
 
 +
======Modo #3 - schacPersonalUniqueCode contenuto all'interno della directory istituzionale, ma è impossibile modificarla======
 +
''Questa modalità è utilizzabile dagli istituti che gestiscono già l'attributo schacPersonalUniqueCode per l'accesso ad altre risorse federate e che non possono modificare la Directory collegata all'IdP istituzionale.''
 +
 
 +
 
 +
In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP in un attributo denominato <code>matricolaStudente</code>.
 +
 
 +
Per usare l'attributo <code>schacPersonalUniqueCode</code> contenente il valore dell'ESI, mantenendo però i valori già esistenti, aggiungere la seguente definizione dell'attributo nel file ''conf/attribute-resolver.xml'':<syntaxhighlight lang="xml">
 +
<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="ScriptedAttribute">
 +
<InputDataConnector ref="myLDAP" attributeNames="matricolaStudente schacPersonalUniqueCode"/>
 +
<DisplayName xml:lang="en">ESI</DisplayName>
 +
<DisplayName xml:lang="it">ESI</DisplayName>
 +
<DisplayDescription xml:lang="en">European Student Identifier</DisplayDescription>
 +
<DisplayDescription xml:lang="it">European Student Identifier</DisplayDescription>
 +
<Script>
 +
          <![CDATA[
 +
            logger = Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute.resolver.esiBuilder");
 +
            logger.info('Add ESI to the user');
 +
            schacPersonalUniqueCode.addValue('urn:schac:personalUniqueCode:int:esi:' + "%{idp.scope}" + ':' + matricolaStudente.getValues().get(0));
 +
 
 +
          ]]>
 +
</Script>
 +
<AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" encodeType="false"/>
 +
</AttributeDefinition>
 +
</syntaxhighlight><br />[[#top|[TOP]]]
 +
 
 +
======Attribute Filter (per Shibboleth IdP v3.x - '''<u>End of Life dal 2020</u>''' '''- DEPRECATA''')======
 +
Il Service Provider (SP) dei servizi Erasmus+ implementa il GEANT Data Protection Code of Conduct e la relativa entity category, per cui per rilasciare tutti gli attributi richiesti è sufficiente supportare il rilascio dinamico basato su CoCo lato IdP, come indicato nel filtro [https://registry.idem.garr.it/idem-conf/shibboleth/IDP3/idem-attribute-filter-v3-ec.xml idem-attribute-filter-v3-ec.xml].
 +
 
 +
Nel caso in cui l'attributo <code>schacPersonalUniqueCode</code> sia già utilizzato per altri servizi, è consigliabile limitare i valori rilasciati al SP di Erasmus+ al solo ESI con la regola che segue:<syntaxhighlight lang="xml">
 +
    <!--  Release attributes to MyAcademicID IAM Service  -->
 +
    <AttributeFilterPolicy id="MyAcademicID-IAM-Service">
 +
      <PolicyRequirementRule xsi:type="Requester" value="https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml"/>
 +
      <AttributeRule attributeID="schacPersonalUniqueCode">
 +
        <DenyValueRule xsi:type="NOT">
 +
            <Rule xsi:type="ValueRegex" regex="^urn:schac:personalUniqueCode:int:esi:.*$"/>
 +
        </DenyValueRule>
 +
      </AttributeRule>
 +
    </AttributeFilterPolicy>
 +
</syntaxhighlight>La regola sopra indicata è già contenuta nel filtro [https://registry.idem.garr.it/idem-conf/shibboleth/IDP3/idem-attribute-filter-v3-full.xml idem-filter-v3-full.xml] che, se utilizzato, non comporta alcuna modifica alla configurazione per il rilascio degli attributi dell'IdP.
 +
 
 +
[[#top|[TOP]]]
 +
 
 +
=====Shibboleth Identity Provider v4.x+=====
 +
Per creare e rilasciare lo ESI verso MyAcademicID è necessario:
 +
 
 +
#Aggiungere l'attributo <code>schacPersonalUniqueCode</code> ad Attribute Registry del proprio Identity Provider v4.x
 +
#Definire il suo comportamento nel ''conf/attribute-resolver.xml''
 +
#Definire le regole di rilascio nel ''conf/attribute-filter.xml''
 +
 
 +
[[#top|[TOP]]]
 +
 
 +
======Attribute Registry======
 +
Se non è stato importato nelle default-rules il file "''schac.xml''" fornito da IDEM, creare il file ''conf/attributes/custom/schacPersonalUniqueCode.properties'' come segue per la codifica/decodifica dell'attributo <code>schacPersonalUniqueCode</code>:<syntaxhighlight lang="xml">
 +
# schacPersonalUniqueCode
 +
 
 +
id=schacPersonalUniqueCode
 +
transcoder=SAML2StringTranscoder
 +
displayName.en=ESI
 +
displayName.it=ESI
 +
description.en=European Student Identifier
 +
description.it=European Student Identifier
 +
saml2.name=urn:oid:1.3.6.1.4.1.25178.1.2.14
 +
saml1.encodeType=false
 +
</syntaxhighlight>[[#top|[TOP]]]
 +
 
 +
======Attribute Resolver======
 +
 
 +
======Modo #1 - schacPersonalUniqueCode valorizzato attraverso template======
 +
''Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacPersonalUniqueCode verso le risorse federate.''
 +
 
 +
 
 +
In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP. Ammesso che il codice sia contenuto in un attributo denominato <code>matricolaStudente</code>, quest'ultimo andrà aggiunto a quelli elencati nel parametro <code>exportAttributes</code> nel DataConnector definito in ''attribute-resolver.xml'', o nel parametro  <code>idp.attribute.resolver.LDAP.exportAttributes</code> dentro ''conf/ldap.properties'' se utilizzato come indicato nelle guide di IDEM.
 +
 
 +
Per usare l'attributo per costruire il valore dell'ESI in <code>schacPersonalUniqueCode</code> aggiungere la seguente definizione dell'attributo nel file ''conf/attribute-resolver.xml'':<syntaxhighlight lang="xml">
 +
<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Template">
 +
  <InputDataConnector ref="myLDAP" attributeNames="matricolaStudente"/>
 +
  <Template>urn:schac:personalUniqueCode:int:esi:%{idp.scope}:${matricolaStudente}</Template>
 +
</AttributeDefinition>
 +
</syntaxhighlight>[[#top|[TOP]]]
 +
 
 +
======Modo #2 - schacPersonalUniqueCode valorizzato all'interno della directory istituzionale======
 +
''Questa modalità è utilizzabile dagli istituti che hanno accesso in modifica alla Directory collegata all'IdP istituzionale.''
 +
 
 +
 
 +
In questo caso l'ESI verrà inserito direttamente nell'attributo <code>schacPersonalUniqueCode</code>contenuto nella Directory. Per esportarlo aggiungere a '''conf/attribute-resolver.xml'' l'attributo <code>schacPersonalUniqueCode</code> a quelli elencati nel parametro <code>exportAttributes</code> nel DataConnector definito in ''attribute-resolver.xml'', o nel parametro  <code>idp.attribute.resolver.LDAP.exportAttributes</code> dentro ''conf/ldap.properties'' se utilizzato come indicato nelle guide di IDEM.
 +
 
 +
[[#top|[TOP]]]
 +
 
 +
======Modo #3 - schacPersonalUniqueCode contenuto all'interno della directory istituzionale, ma è impossibile modificarla======
 +
''Questa modalità è utilizzabile dagli istituti che gestiscono già l'attributo schacPersonalUniqueCode per l'accesso ad altre risorse federate e che non possono modificare la Directory collegata all'IdP istituzionale.''
 +
 
 +
 
 +
In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP. Ammesso che il codice sia contenuto in un attributo denominato <code>matricolaStudente</code>, quest'ultimo andrà aggiunto a quelli elencati nel parametro <code>exportAttributes</code> nel DataConnector definito in ''attribute-resolver.xml'', o nel parametro  <code>idp.attribute.resolver.LDAP.exportAttributes</code> dentro ''conf/ldap.properties'' se utilizzato come indicato nelle guide di IDEM.
 +
 
 +
Per usare l'attributo per costruire il valore dell'ESI in <code>schacPersonalUniqueCode</code>, mantenendo però i valori già esistenti, aggiungere la seguente definizione dell'attributo nel file ''conf/attribute-resolver.xml'':<syntaxhighlight lang="xml">
 +
    <AttributeDefinition xsi:type="ScriptedAttribute" id="schacPersonalUniqueCode">
 +
<InputDataConnector ref="myLDAP" attributeNames="matricolaStudente schacPersonalUniqueCode"/>
 +
<Script>
 +
          <![CDATA[
 +
            logger = Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute.resolver.esiBuilder");
 +
            logger.info('Add ESI to the user');
 +
            schacPersonalUniqueCode.addValue('urn:schac:personalUniqueCode:int:esi:' + "%{idp.scope}" + ':' + matricolaStudente.getValues().get(0));
 +
 
 +
          ]]>
 +
</Script>
 +
    </AttributeDefinition>
 +
</syntaxhighlight><br />[[#top|[TOP]]]
 +
 
 +
======Attribute Filter======
 +
Il Service Provider (SP) dei servizi Erasmus+ implementa il GEANT Data Protection Code of Conduct e la relativa entity category, per cui per rilasciare tutti gli attributi richiesti è sufficiente supportare il rilascio dinamico basato su CoCo lato IdP, come indicato nel filtro [https://registry.idem.garr.it/idem-conf/shibboleth/IDP4/idem-attribute-filter-v4-ec.xml idem-attribute-filter-v4-ec.xml].
 +
 
 +
Nel caso in cui l'attributo <code>schacPersonalUniqueCode</code> sia già utilizzato per altri servizi, è consigliabile limitare i valori rilasciati al SP di Erasmus+ al solo ESI con la regola che segue:<syntaxhighlight lang="xml">
 +
    <!--  Release attributes to MyAcademicID IAM Service  -->
 +
    <AttributeFilterPolicy id="MyAcademicID-IAM-Service">
 +
      <PolicyRequirementRule xsi:type="Requester" value="https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml"/>
 +
      <AttributeRule attributeID="schacPersonalUniqueCode">
 +
        <DenyValueRule xsi:type="NOT">
 +
            <Rule xsi:type="ValueRegex" regex="^urn:schac:personalUniqueCode:int:esi:.*$"/>
 +
        </DenyValueRule>
 +
      </AttributeRule>
 +
    </AttributeFilterPolicy>
 +
</syntaxhighlight>La regola sopra indicata è già contenuta nel filtro [https://registry.idem.garr.it/idem-conf/shibboleth/IDP4/idem-attribute-filter-v4-full.xml idem-filter-v4-full.xml] che, se utilizzato, non comporta alcuna modifica alla configurazione per il rilascio degli attributi dell'IdP.
 +
 
 +
[[#top|[TOP]]]
 +
 
 +
====Configurazione dello schacHomeOrganization====
 +
 
 +
=====Shibboleth Identity Provider v3.x - <u>'''End of Life dal 2020''' '''- DEPRECATA'''</u>=====
 +
''Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacHomeOrganization verso le risorse federate.''
 +
 
 +
Per assegnare il valore corretto e rilasciare l'attributo <code>schacHomeOrganization</code> aggiungere la seguente definizione dell'attributo ed il relativo DataConnector nel file ''conf/attribute-resolver.xml'':<syntaxhighlight lang="xml">
 +
<AttributeDefinition xsi:type="Simple" id="schacHomeOrganization">
 +
    <InputDataConnector ref="staticAttributes" attributeNames="schacHomeOrganization"/>
 +
    <DisplayName xml:lang="en">Institution Domain</DisplayName>
 +
    <DisplayName xml:lang="it">Dominio Istituzione</DisplayName>
 +
    <DisplayDescription xml:lang="en">Domain of the institution</DisplayDescription>
 +
    <DisplayDescription xml:lang="it">Dominio dell'istituzione</DisplayDescription>
 +
     <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.9" friendlyName="schacHomeOrganization" encodeType="false"/>
 +
</AttributeDefinition>
 +
 
 +
 
 +
 
 +
<!--  ==========================================  -->
 +
<!--      Data Connectors                        -->
 +
<!--  ==========================================  -->
 +
 
 +
<DataConnector id="staticAttributes" xsi:type="Static">
 +
    <Attribute id="schacHomeOrganization">
 +
    <Value>%{idp.scope}</Value>
 +
    </Attribute>
 +
</DataConnector>
 +
</syntaxhighlight>[[#top|[TOP]]]
 +
 
 +
=====Shibboleth Identity Provider v4.x=====
 +
''Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacHomeOrganization verso le risorse federate.''
 +
 
 +
Per assegnare il valore corretto e rilasciare l'attributo <code>schacHomeOrganization</code> aggiungere la seguente definizione dell'attributo ed il relativo DataConnector nel file ''conf/attribute-resolver.xml'':<syntaxhighlight lang="xml">
 +
<AttributeDefinition xsi:type="Simple" id="schacHomeOrganization">
 +
    <InputDataConnector ref="staticAttributes" attributeNames="schacHomeOrganization"/>
 +
</AttributeDefinition>
 +
 
 +
 
 +
 
 +
<!--  ==========================================  -->
 +
<!--      Data Connectors                        -->
 +
<!--  ==========================================  -->
 +
 
 +
<DataConnector id="staticAttributes" xsi:type="Static">
 +
    <Attribute id="schacHomeOrganization">
 +
    <Value>%{idp.scope}</Value>
 +
    </Attribute>
 +
</DataConnector>
 +
</syntaxhighlight>[[#top|[TOP]]]
 +
 
 +
====Test di funzionamento====
 +
 
 +
=====Modo #1 - Attribute Release Test SP=====
 +
Verificare il rilascio degli attributi dal proprio IDP sul seguente SP accedendo con un account studente:
 +
 
 +
https://myacademicid.devtest.eduteams.org
 +
 
 +
 
 +
Se il controllo restituisce solo pollici verdi il test è superato con successo.
 +
 
 +
=====Modo #2 - AACLI=====
 +
Verificare che tra gli attributi restituiti dal comando seguente:
 +
 
 +
<code>bash /opt/shibboleth-idp/bin/aacli.sh -n <PRINCIPAL> -r <nowiki>https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml</nowiki> --saml2</code>
 +
 
 +
vi sia:<syntaxhighlight lang="xml">
 +
<saml2:Attribute FriendlyName="schacPersonalUniqueCode" Name="urn:oid:1.3.6.1.4.1.25178.1.2.14" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
 +
  <saml2:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">urn:schac:personalUniqueCode:int:esi:foo.bar:${matricolaStudente}</saml2:AttributeValue>
 +
</saml2:Attribute>
 +
</syntaxhighlight>[[#top|[TOP]]]

Versione attuale delle 08:54, 27 nov 2024

Nell'ambito della European Student Card Initiative la Commisione Europea ha stabilito un percorso di digitalizzazione di tutti i servizi legati al programma Erasmus+ quali Online Learning Agreement (OLA), Erasmus+ mobile application, ecc. Una parte fondamentale della digitalizzazione riguarda l'autenticazione degli studenti, per la quale è stata scelta eduGAIN, cosicché gli studenti possano accedere con le proprie credenziali istituzionali e che i servizi ricevano fin da subito tutte le informazioni necessarie ad identificare correttamente gli utenti.

MyAcademicID proxy

L'accesso ai servizi Erasmus+ avviene mediante un proxy realizzato nell'ambito del progetto MyAcademicID e gestito da GEANT. Questo vuol dire che tutti i servizi legati ad Erasmus+ hanno un unico Service Provider con il seguente entityID:

https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml

Il Service Provider è pubblicato in IDEM tramite eduGAIN, quindi se state già consumando i metadata edugain2idem (vedi Metadata) non dovrete fare alcuna ulteriore azione per accedere tramite il vostro Identity Provider. In caso contrario, in primo luogo dovete contattare il Servizio IDEM GARR AAI per richiedere l'esportazione del vostro Identity Provider in eduGAIN, poi dovrete configurare i metadata di eduGAIN distributi dal Servizio (vedi Metadata).

Attributi

Gli attributi richiesti per accedere ai servizi Erasmus+ sono i seguenti.

Attributo Descrizione Esempio
Uno qualunque dei seguenti identificatori:
  • Persistent NameID
  • eduPersonPrincipalName
  • eduPersonTargetedID
Il servizio richiede un identificatore di tipo univoco e persistente. Gli identificatori Persistent NameID ed eduPersonTargetedID sono persistenti e specifici per il servizio, mentre eduPersonPrincipalName non muta al variare del servizio e permette quindi l'identificazione dell'utente su molteplici servizi.

Considerato l'elevato grado di fiducia riposto negli operatori della risorsa (GEANT), consigliamo di utilizzare l'identificatore che permette di fornire supporto all'utenza in modo più semplice, e questo tipicamente è eduPersonPrincipalName.

Il servizio supporta anche altri identificatori comunemente non implementati nella nostra federazione, per maggiori informazioni vedi https://wiki.geant.org/display/SM/Attributes+required+from+Higher+Education+Institutions.

displayName Nome completo. Rilasciare se non si rilascia già cn, o givenName+sn.
cn Nome completo. Rilasciare se non si rilascia già displayName o givenName+sn. Mario Rossi
givenName Nome. Rilasciare se non si rilascia già displayName o cn. Mario
sn Cognome. Rilasciare se non si rilascia già displayName o cn. Rossi
mail Indirizzo email dell'utente. mario.rossi@foo.bar
eduPersonScopedAffiliation Macro ruolo all'interno della propria organizzazione con l'aggiunta del dominio. [member@foo.bar, student@foo.bar]
schacPersonalUniqueCode Codice univoco personale assegnato dalla propria organizzazione (URN). E' utilizzato per codificare e trasmettere lo European Student Identifier. urn:schac:personalUniqueCode:int:esi:foo.bar:17585515
schacHomeOrganization Dominio della propria organizzazione. foo.bar

[TOP]

European Student Identifier

Lo European Student Identifier (ESI) è un identificatore globalmente univoco, persistente, non mirato (rimane lo stesso per tutti i Service Provider). Viene codificato e trasmesso tramite l'attributo schacPersonalUniqueCode. Lo ESI supporta due modalità principali di codifica:

  1. per nazione: nel caso sia disponibile un codice studentesco nazionale
  2. per istituto: unica forma ammessa nel caso dell'Italia

Lo ESI si compone di tre parti:

  • namespace URN invariabile: urn:schac:personalUniqueCode:int:esi:
  • dominio dell'organizzazione: foo.bar
  • codice identificativo dello studente (ad es. la matricola): 17585515

Lo ESI completo risultante: urn:schac:personalUniqueCode:int:esi:foo.bar:17585515

Le specifiche complete dello ESI sono disponibili sul wiki di GEANT:

https://wiki.geant.org/display/SM/European+Student+Identifier

[TOP]

Configurazione Identity Provider

Per supportare l'accesso alla piattaforma MyAcademicID e quindi ai servizi Erasmus+, gli Identity Provider devono rilasciare correttamente tutti gli attributi sopra elencati. Di seguito vi forniamo le informazioni necessarie per valorizzare e rilasciare lo schacPersonalUniqueCode, che è utilizzato per trasportare lo ESI, e lo schacHomeOrganization che sono comunemente meno utilizzati.

Per rilasciare lo ESI tramite un Identity Provider (IdP) si possono usare due strategie principali: valorizzare l'attributo schacPersonalUniqueCode completo di namespace URN e dominio direttamente nella propria Directory o esportare il solo codice identificativo dello studente e valorizzare schacPersonalUniqueCode tramite l'IdP. La seconda strategia è più flessibile e raccomandata dal Servizio IDEM GARR AAI. Di seguito vi proponiamo degli esempi di configurazione basati su Shibboleth Identity Provider v3.x (End of Life dal 2020) e su Shibboleth Identity Provider v4.x.

Per il rilascio di schacHomeOrganization vi proponiamo invece le impostazioni per il rilascio statico così come previsto dalle guide IDEM e dalle best practices delle federazioni.

[TOP]

Configurazione dello ESI

Shibboleth Identity Provider v3.x - End of Life dal 2020 (DEPRECATA):

Per creare e rilasciare lo ESI verso MyAcademicID è necessario:

  1. Aggiungere l'attributo schacPersonalUniqueCode , definendone il comportamento, nel Attribute Resolver (conf/attribute-resolver.xml) del proprio Identity Provider v3.x
  2. Definire le regole di rilascio nel conf/attribute-filter.xml

[TOP]

Attribute Resolver (per Shibboleth IdP v3.x - End of Life dal 2020 - DEPRECATA)
Modo #1 - schacPersonalUniqueCode valorizzato attraverso template

Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacPersonalUniqueCode verso le risorse federate.


In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP in un attributo denominato matricolaStudente.

Per usare l'attributo per costruire il valore dell'ESI in schacPersonalUniqueCode aggiungere la seguente definizione dell'attributo nel file conf/attribute-resolver.xml:

<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Template">
   <InputDataConnector ref="myLDAP" attributeNames="matricolaStudente"/>
   <DisplayName xml:lang="en">ESI</DisplayName>
   <DisplayName xml:lang="it">ESI</DisplayName>
   <DisplayDescription xml:lang="en">European Student Identifier</DisplayDescription>
   <DisplayDescription xml:lang="it">European Student Identifier</DisplayDescription>
   <Template>urn:schac:personalUniqueCode:int:esi:%{idp.scope}:${matricolaStudente}</Template>
   <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" encodeType="false"/>
</AttributeDefinition>

[TOP]

Modo #2 - schacPersonalUniqueCode valorizzato all'interno della directory istituzionale

Questa modalità è utilizzabile dagli istituti che hanno accesso in modifica alla Directory collegata all'IdP istituzionale.


In questo caso l'ESI verrà inserito direttamente nell'attributo schacPersonalUniqueCodecontenuto nella Directory.

Per usare l'attributo per costruire il valore dell'ESI in schacPersonalUniqueCode aggiungere la seguente definizione dell'attributo nel file conf/attribute-resolver.xml:

<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Simple">
   <InputDataConnector ref="myLDAP" attributeNames="schacPersonalUniqueCode"/>
   <DisplayName xml:lang="en">ESI</DisplayName>
   <DisplayName xml:lang="it">ESI</DisplayName>
   <DisplayDescription xml:lang="en">European Student Identifier</DisplayDescription>
   <DisplayDescription xml:lang="it">European Student Identifier</DisplayDescription>
   <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" encodeType="false"/>
</AttributeDefinition>

[TOP]

Modo #3 - schacPersonalUniqueCode contenuto all'interno della directory istituzionale, ma è impossibile modificarla

Questa modalità è utilizzabile dagli istituti che gestiscono già l'attributo schacPersonalUniqueCode per l'accesso ad altre risorse federate e che non possono modificare la Directory collegata all'IdP istituzionale.


In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP in un attributo denominato matricolaStudente.

Per usare l'attributo schacPersonalUniqueCode contenente il valore dell'ESI, mantenendo però i valori già esistenti, aggiungere la seguente definizione dell'attributo nel file conf/attribute-resolver.xml:

<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="ScriptedAttribute">
	<InputDataConnector ref="myLDAP" attributeNames="matricolaStudente schacPersonalUniqueCode"/>
	<DisplayName xml:lang="en">ESI</DisplayName>
	<DisplayName xml:lang="it">ESI</DisplayName>
	<DisplayDescription xml:lang="en">European Student Identifier</DisplayDescription>
	<DisplayDescription xml:lang="it">European Student Identifier</DisplayDescription>
	<Script>
           <![CDATA[
             logger = Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute.resolver.esiBuilder");
             logger.info('Add ESI to the user');
             schacPersonalUniqueCode.addValue('urn:schac:personalUniqueCode:int:esi:' + "%{idp.scope}" + ':' + matricolaStudente.getValues().get(0));

           ]]>
	</Script>
	<AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.14" friendlyName="schacPersonalUniqueCode" encodeType="false"/>
</AttributeDefinition>


[TOP]

Attribute Filter (per Shibboleth IdP v3.x - End of Life dal 2020 - DEPRECATA)

Il Service Provider (SP) dei servizi Erasmus+ implementa il GEANT Data Protection Code of Conduct e la relativa entity category, per cui per rilasciare tutti gli attributi richiesti è sufficiente supportare il rilascio dinamico basato su CoCo lato IdP, come indicato nel filtro idem-attribute-filter-v3-ec.xml.

Nel caso in cui l'attributo schacPersonalUniqueCode sia già utilizzato per altri servizi, è consigliabile limitare i valori rilasciati al SP di Erasmus+ al solo ESI con la regola che segue:

    <!--  Release attributes to MyAcademicID IAM Service  -->
    <AttributeFilterPolicy id="MyAcademicID-IAM-Service">
      <PolicyRequirementRule xsi:type="Requester" value="https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml"/>
      <AttributeRule attributeID="schacPersonalUniqueCode">
         <DenyValueRule xsi:type="NOT">
            <Rule xsi:type="ValueRegex" regex="^urn:schac:personalUniqueCode:int:esi:.*$"/>
         </DenyValueRule>
      </AttributeRule>
    </AttributeFilterPolicy>

La regola sopra indicata è già contenuta nel filtro idem-filter-v3-full.xml che, se utilizzato, non comporta alcuna modifica alla configurazione per il rilascio degli attributi dell'IdP.

[TOP]

Shibboleth Identity Provider v4.x+

Per creare e rilasciare lo ESI verso MyAcademicID è necessario:

  1. Aggiungere l'attributo schacPersonalUniqueCode ad Attribute Registry del proprio Identity Provider v4.x
  2. Definire il suo comportamento nel conf/attribute-resolver.xml
  3. Definire le regole di rilascio nel conf/attribute-filter.xml

[TOP]

Attribute Registry

Se non è stato importato nelle default-rules il file "schac.xml" fornito da IDEM, creare il file conf/attributes/custom/schacPersonalUniqueCode.properties come segue per la codifica/decodifica dell'attributo schacPersonalUniqueCode:

# schacPersonalUniqueCode

id=schacPersonalUniqueCode
transcoder=SAML2StringTranscoder
displayName.en=ESI
displayName.it=ESI
description.en=European Student Identifier
description.it=European Student Identifier
saml2.name=urn:oid:1.3.6.1.4.1.25178.1.2.14
saml1.encodeType=false

[TOP]

Attribute Resolver
Modo #1 - schacPersonalUniqueCode valorizzato attraverso template

Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacPersonalUniqueCode verso le risorse federate.


In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP. Ammesso che il codice sia contenuto in un attributo denominato matricolaStudente, quest'ultimo andrà aggiunto a quelli elencati nel parametro exportAttributes nel DataConnector definito in attribute-resolver.xml, o nel parametro idp.attribute.resolver.LDAP.exportAttributes dentro conf/ldap.properties se utilizzato come indicato nelle guide di IDEM.

Per usare l'attributo per costruire il valore dell'ESI in schacPersonalUniqueCode aggiungere la seguente definizione dell'attributo nel file conf/attribute-resolver.xml:

<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Template">
   <InputDataConnector ref="myLDAP" attributeNames="matricolaStudente"/>
   <Template>urn:schac:personalUniqueCode:int:esi:%{idp.scope}:${matricolaStudente}</Template>
</AttributeDefinition>

[TOP]

Modo #2 - schacPersonalUniqueCode valorizzato all'interno della directory istituzionale

Questa modalità è utilizzabile dagli istituti che hanno accesso in modifica alla Directory collegata all'IdP istituzionale.


In questo caso l'ESI verrà inserito direttamente nell'attributo schacPersonalUniqueCodecontenuto nella Directory. Per esportarlo aggiungere a 'conf/attribute-resolver.xml l'attributo schacPersonalUniqueCode a quelli elencati nel parametro exportAttributes nel DataConnector definito in attribute-resolver.xml, o nel parametro idp.attribute.resolver.LDAP.exportAttributes dentro conf/ldap.properties se utilizzato come indicato nelle guide di IDEM.

[TOP]

Modo #3 - schacPersonalUniqueCode contenuto all'interno della directory istituzionale, ma è impossibile modificarla

Questa modalità è utilizzabile dagli istituti che gestiscono già l'attributo schacPersonalUniqueCode per l'accesso ad altre risorse federate e che non possono modificare la Directory collegata all'IdP istituzionale.


In questa modalità è necessario esportare l'attributo contenente il codice identificativo dello studente verso l'IdP. Ammesso che il codice sia contenuto in un attributo denominato matricolaStudente, quest'ultimo andrà aggiunto a quelli elencati nel parametro exportAttributes nel DataConnector definito in attribute-resolver.xml, o nel parametro idp.attribute.resolver.LDAP.exportAttributes dentro conf/ldap.properties se utilizzato come indicato nelle guide di IDEM.

Per usare l'attributo per costruire il valore dell'ESI in schacPersonalUniqueCode, mantenendo però i valori già esistenti, aggiungere la seguente definizione dell'attributo nel file conf/attribute-resolver.xml:

    <AttributeDefinition xsi:type="ScriptedAttribute" id="schacPersonalUniqueCode">
	<InputDataConnector ref="myLDAP" attributeNames="matricolaStudente schacPersonalUniqueCode"/>
	<Script>
           <![CDATA[
             logger = Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute.resolver.esiBuilder");
             logger.info('Add ESI to the user');
             schacPersonalUniqueCode.addValue('urn:schac:personalUniqueCode:int:esi:' + "%{idp.scope}" + ':' + matricolaStudente.getValues().get(0));

           ]]>
	</Script>
    </AttributeDefinition>


[TOP]

Attribute Filter

Il Service Provider (SP) dei servizi Erasmus+ implementa il GEANT Data Protection Code of Conduct e la relativa entity category, per cui per rilasciare tutti gli attributi richiesti è sufficiente supportare il rilascio dinamico basato su CoCo lato IdP, come indicato nel filtro idem-attribute-filter-v4-ec.xml.

Nel caso in cui l'attributo schacPersonalUniqueCode sia già utilizzato per altri servizi, è consigliabile limitare i valori rilasciati al SP di Erasmus+ al solo ESI con la regola che segue:

    <!--  Release attributes to MyAcademicID IAM Service  -->
    <AttributeFilterPolicy id="MyAcademicID-IAM-Service">
      <PolicyRequirementRule xsi:type="Requester" value="https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml"/>
      <AttributeRule attributeID="schacPersonalUniqueCode">
         <DenyValueRule xsi:type="NOT">
            <Rule xsi:type="ValueRegex" regex="^urn:schac:personalUniqueCode:int:esi:.*$"/>
         </DenyValueRule>
      </AttributeRule>
    </AttributeFilterPolicy>

La regola sopra indicata è già contenuta nel filtro idem-filter-v4-full.xml che, se utilizzato, non comporta alcuna modifica alla configurazione per il rilascio degli attributi dell'IdP.

[TOP]

Configurazione dello schacHomeOrganization

Shibboleth Identity Provider v3.x - End of Life dal 2020 - DEPRECATA

Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacHomeOrganization verso le risorse federate.

Per assegnare il valore corretto e rilasciare l'attributo schacHomeOrganization aggiungere la seguente definizione dell'attributo ed il relativo DataConnector nel file conf/attribute-resolver.xml:

<AttributeDefinition xsi:type="Simple" id="schacHomeOrganization">
     <InputDataConnector ref="staticAttributes" attributeNames="schacHomeOrganization"/>
     <DisplayName xml:lang="en">Institution Domain</DisplayName>
     <DisplayName xml:lang="it">Dominio Istituzione</DisplayName>
     <DisplayDescription xml:lang="en">Domain of the institution</DisplayDescription>
     <DisplayDescription xml:lang="it">Dominio dell'istituzione</DisplayDescription>
     <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.9" friendlyName="schacHomeOrganization" encodeType="false"/>
</AttributeDefinition>



<!--  ==========================================  -->
<!--       Data Connectors                        -->
<!--  ==========================================  -->

<DataConnector id="staticAttributes" xsi:type="Static">
     <Attribute id="schacHomeOrganization">
     <Value>%{idp.scope}</Value>
     </Attribute>
</DataConnector>

[TOP]

Shibboleth Identity Provider v4.x

Questa modalità è consigliata dal Servizio IDEM GARR AAI agli istituti che non hanno mai fatto uso di schacHomeOrganization verso le risorse federate.

Per assegnare il valore corretto e rilasciare l'attributo schacHomeOrganization aggiungere la seguente definizione dell'attributo ed il relativo DataConnector nel file conf/attribute-resolver.xml:

<AttributeDefinition xsi:type="Simple" id="schacHomeOrganization">
    <InputDataConnector ref="staticAttributes" attributeNames="schacHomeOrganization"/>
</AttributeDefinition>



<!--  ==========================================  -->
<!--       Data Connectors                        -->
<!--  ==========================================  -->

<DataConnector id="staticAttributes" xsi:type="Static">
     <Attribute id="schacHomeOrganization">
     <Value>%{idp.scope}</Value>
     </Attribute>
</DataConnector>

[TOP]

Test di funzionamento

Modo #1 - Attribute Release Test SP

Verificare il rilascio degli attributi dal proprio IDP sul seguente SP accedendo con un account studente:

https://myacademicid.devtest.eduteams.org


Se il controllo restituisce solo pollici verdi il test è superato con successo.

Modo #2 - AACLI

Verificare che tra gli attributi restituiti dal comando seguente:

bash /opt/shibboleth-idp/bin/aacli.sh -n <PRINCIPAL> -r https://proxy.prod.erasmus.eduteams.org/metadata/backend.xml --saml2

vi sia:

<saml2:Attribute FriendlyName="schacPersonalUniqueCode" Name="urn:oid:1.3.6.1.4.1.25178.1.2.14" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
   <saml2:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">urn:schac:personalUniqueCode:int:esi:foo.bar:${matricolaStudente}</saml2:AttributeValue>
</saml2:Attribute>

[TOP]