Differenze tra le versioni di "Erasmus Plus e ESI"

Da WIKI IDEM GARR.
Jump to navigation Jump to search
Riga 84: Riga 84:
 
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 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 l'attributo <code>schacPersonalUniqueCode</code> nel file ''conf/attributes/custom/schacPersonalUniqueCode.properties'' come segue:<syntaxhighlight lang="xml">
+
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''
 +
 
 +
===== Attribute Registry =====
 +
Creare il file ''conf/attributes/custom/schacPersonalUniqueCode.properties'' come segue per la codifica/decodifica dell'attributo <code>schacPersonalUniqueCode</code>:<syntaxhighlight lang="xml">
 
# schacPersonalUniqueCode
 
# schacPersonalUniqueCode
  
Riga 95: Riga 102:
 
saml2.name=urn:oid:1.3.6.1.4.1.25178.1.2.14
 
saml2.name=urn:oid:1.3.6.1.4.1.25178.1.2.14
 
saml1.encodeType=false
 
saml1.encodeType=false
</syntaxhighlight>e va valorizzato nel file ''conf/attribute-resolver.xml'', come nell'esempio che segue:
+
</syntaxhighlight>
<AttributeDefinition id="schacPersonalUniqueCode" xsi:type="Template">  
+
 
    <InputDataConnector ref="myLDAP" attributeNames="matricolaStudente"/>
+
===== Attribute Resolver =====
    <Template><nowiki>urn:schac:personalUniqueCode:int:esi:it:foo.bar:${matricolaStudente}</nowiki></Template>  
+
 
  </AttributeDefinition>
+
====== 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.''
 +
 
 +
 
 +
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:it:foo.bar:${matricolaStudente}</Template>
 +
</AttributeDefinition>
 +
</syntaxhighlight>e assicurarsi di modificare "''foo.bar''" con il proprio dominio istituzionale.
 +
 
 +
Concludere le modifiche per l'''attribute-resolver.xml'' aggiungendo l'attributo <code>schacPersonalUniqueCode</code> a quelli elencati in <code>idp.attribute.resolver.LDAP.exportAttributes</code> dentro ''conf/ldap.properties''.
 +
 
 +
====== Modo #2 - schacPersonalUniqueCode valorizzato all'interno della directory istituzionale ======
 +
''Questa modalità è utilizzabile dagli istituti che hanno accesso in modifica alla directory service collegata all'IdP istituzionale.''
 +
 
 +
 
 +
Aggiungere a '''conf/attribute-resolver.xml'' l'attributo <code>schacPersonalUniqueCode</code> tra quelli elencati in <code>idp.attribute.resolver.LDAP.exportAttributes</code> dentro ''conf/ldap.properties''.
 +
 
 +
====== Modo #3 - schacPersonalUniqueCode contenuto all'interno della directory istituzionale, ma impossibilità di modificare la stessa ======
 +
''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 service collegata all'IdP istituzionale.''
 +
 
 +
 
 +
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:it:foo.bar:' + matricolaStudente.getValues().get(0));
 +
 
 +
          ]]>
 +
</Script>
 +
    </AttributeDefinition>
 +
</syntaxhighlight>e assicurarsi di modificare "''foo.bar''" con il proprio dominio istituzionale.
 +
 
 +
Concludere le modifiche per l'''attribute-resolver.xml'' aggiungendo l'attributo <code>schacPersonalUniqueCode</code> a quelli elencati in <code>idp.attribute.resolver.LDAP.exportAttributes</code> dentro ''conf/ldap.properties''.
 +
<br />
 +
 
 +
===== Attribute Filter =====
 +
Assicurarsi che il proprio IdP supporti l'entity category "Code of Conduct" e che rilasci gli attributi come indicato dal filtro [https://registry.idem.garr.it/idem-conf/shibboleth/IDP4/idem-attribute-filter-v4-ec.xml idem-attribute-filter-v4-ec.xml].
 +
 
 +
Aggiungere, infine, la seguente regola per il rilascio di ESI al solo MyAcademicID IAM Service:<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.
 +
<br />

Versione delle 15:28, 11 mar 2021

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 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
eduPersonPrincipalName Identificativo globalmente univoco e persistente. username@foo.bar
eduPersonTargetedID Identificativo univoco, opaco, mirato (diverso per ogni Service Provider) e persistente. https://idp.foo.bar/idp/shibboleth!https://sp.example.com/shibboleth!a6c2c4d4-08b9-4ca7-8ff9-43d83e6e1d35
displayName Nome completo. Rilasciare se non si rilascia già cn, o givenName+sn. Mario Rossi
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
eduPersonAffiliation Macro ruolo all'interno della propria organizzazione. [member, student]
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
schacHomeOrganizationType Tipo di organizzazione (URN) urn:schac:homeOrganizationType:eu:higherEducationalInstitution

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

Configurazione Identity Provider

Per rilasciare lo ESI tramite un Identity Provider (IdP) si possono usare due strategie: 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 nell'IdP. La seconda strategia è più flessibile e raccomandata dal Servizio IDEM GARR AAI. Di seguito vi proponiamo un esempio di configurazione basata sulla seconda strategia per Shibboleth Identity Provider v4.x.

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 matricolaStudente, quest'ultimo andrà aggiunto alla lista di attributi restituiti dalla Directory in risposta alla query dell'IdP.

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
Attribute Registry

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
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.


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:it:foo.bar:${matricolaStudente}</Template>
</AttributeDefinition>

e assicurarsi di modificare "foo.bar" con il proprio dominio istituzionale.

Concludere le modifiche per l'attribute-resolver.xml aggiungendo l'attributo schacPersonalUniqueCode a quelli elencati in idp.attribute.resolver.LDAP.exportAttributes dentro conf/ldap.properties.

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

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


Aggiungere a 'conf/attribute-resolver.xml l'attributo schacPersonalUniqueCode tra quelli elencati in idp.attribute.resolver.LDAP.exportAttributes dentro conf/ldap.properties.

Modo #3 - schacPersonalUniqueCode contenuto all'interno della directory istituzionale, ma impossibilità di modificare la stessa

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 service collegata all'IdP istituzionale.


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:it:foo.bar:' + matricolaStudente.getValues().get(0));

           ]]>
	</Script>
    </AttributeDefinition>

e assicurarsi di modificare "foo.bar" con il proprio dominio istituzionale.

Concludere le modifiche per l'attribute-resolver.xml aggiungendo l'attributo schacPersonalUniqueCode a quelli elencati in idp.attribute.resolver.LDAP.exportAttributes dentro conf/ldap.properties.

Attribute Filter

Assicurarsi che il proprio IdP supporti l'entity category "Code of Conduct" e che rilasci gli attributi come indicato dal filtro idem-attribute-filter-v4-ec.xml.

Aggiungere, infine, la seguente regola per il rilascio di ESI al solo MyAcademicID IAM Service:

    <!--  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.