Integrare Moodle con Shibboleth
Abilitare shibboleth
Nei virtual host di apache, proteggere la cartella:
<Location /moodle/auth/shibboleth> AuthType shibboleth ShibRequireSession On require valid-user </Location>
(se moodle è installato nella cartella moodle).
Fare login in Moodle come admin, seguire il link: Administration\Users\Authentication, abilitare "shibboleth". Fare clic su "settings" e fare le seguenti mappe:
Nome campo | shibboleth-sp1.3 | shibboleth-sp2.x |
Username | REMOTE_USER | uid o eppn (meglio) |
firstname | HTTP_SHIB_PERSON_GIVENNAME | givenName |
lastname | HTTP_SHIB_PERSON_SN | sn |
HTTP_SHIB_INETORGPERSON_MAIL | ||
description | HTTP_SHIB_PERSON_DESCRIPTION | ou |
city/town | city | city |
country | country | country |
Per tutti i valori ha senso "update local" "on creation", mentre per "lock value" probabilmente è sufficiente bloccare nome cognome e indirizzo email.
Modificare la pagina di logon
In Administration\Users editare Common settings nella sezione Instructions. Aggiungere una form alternativa del tipo:
<h3>LOGIN STUDENTI E DOCENTI</h3> <a href="/moodle/auth/shibboleth/index.php">Login utenti</a>
Ora moodle mostra una form di logon a sinistra che serve solo per l'utente admin ed un bottone di logon al centro "login utenti" per docenti e studenti.
Per evitare che gli studenti tentino di fare il logon come amministratori, si consiglia di editare i file:
lang/en_utf8/moodle.php
ad esempio nella
$string['invalidlogin'] = 'Invalid login: users should follow <a href="/moodle/auth/shibboleth/index.php">User login</a> link'
(e così via per la lingua italiana e per le altre stringhe di istruzioni che si ritengono ambigue).
Mappare gli attributi
Shibboleth-sp2.x
Si usa il file attribute-map.xml: [attribute-map.xml]
Esempio di configurazione shibboleth plugin di moodle
Controllo degli accessi (autorizzazione)
Le autorizzazioni si possono includere in apache2 o in shibboleth2.xml (o l'uno o l'altro)
Autorizzazioni in apache2 (fare questo)
Modificare il file apache2 che contiene la definizione della Location da proteggere:
<Location /moodle/auth/shibboleth> AuthType shibboleth ShibRequireSession On require shib-attr affiliation staff require shib-attr unimoreDiporg4 ~ 'Servizi informatici' </Location>
Fare il reload di apache2
I require sono in OR; se si vuole che siano in AND, usare la direttiva
ShibRequireAll On
La cediglia (~) significa regexp.
Autorizzazioni in shibboleth2.xml (alternativa ad inserire le autorizzazioni in apache: fare così solo come seconda scelta)
Modificare il file /etc/shibboleth/shibboleth2.xml nella sezione \\RequestMap\Host\Path (ad esempio):
<Path name="moodle/auth/shibboleth" authType="shibboleth" requireSession="true"> <AccessControl> <OR> <Rule require="affiliation">staff</Rule> <Rule require="diporg4">CENTRO SERVIZI INFORMATICI DI ATENEO</Rule> </OR> </AccessControl> </Path>
La condizione di esempio permette il logon solo al personale tecnico/amministrativo (affiliation="staff") oppure al personale di qualunque qualifica in servizio o accreditato presso il CeSIA (unimoreDiporg4='CENTRO SERVIZI INFORMATICI DI ATENEO').
I nomi degli attributi da usare sono quelli definiti come Alias nel file attribute-map.xml.