docker-compose up
per l'esecuzione dell'ambiente locale di SOS.
Lo stack comprende un container web
, contenente php7.2
, nginx
, joomla
e simpleSAMLphp
, e un db
mysql.
cp .env.template .env
(ed eventuale modifica delle variabili d'ambiente)- avviare l'ambiente di sviluppo con
npm run start
Il container di sviluppo risponde a localhost:8000
Le credenziali di amministratore (localhost:8000/administrator
) dell'ambiente locale sono:
- user:
admin
- password:
admin
- Modulo Joomla!
SAML Login
:- Mostra una pagina di login agli utenti che si stanno autenticando con SAML, e ne gestisce il logout.
- Authentication source di SimpleSAMLphp
JoomlaAuth
:- Dirige l'utente alla pagina di login del modulo
SAML Login
e alla pagina di Google che stava cercando di visitare. All'untente verrà richiesto di inserire le credenziali di Joomla! per poter proseguire.
- Dirige l'utente alla pagina di login del modulo
- Plugin Joomla! Google Sync:
- Sincronizza gli utenti Joomla! con Google.
Per eseguire questa applicazione sono necessari Docker
e docker-compose
:
Configurare le variabili d'ambiente del container:
$ cp .env.template .env
e modificare.env
-
Aggiungere la seguente configurazione al proprio file hosts:
127.0.0.1 localhost #(Solo se non già presente) 127.0.0.1 saml.localhost
-
Avviare i container con
$ docker-compose up
-
Joomla!, Joomla! Admin e SimpleSAMLphp saranno accessibili rispettivamente a:
-
Installare il componente
SAML Login
accedendo al pannello admin di Joomla! e cliccando su:Extensions > Manage > Install > Install from folder > Check and install
-
Rinominare il file
simplesamlphp/config/authsources.php.sample
asimplesamlphp/config/authsources.php
-
Modificare il campo
redirect_url
nel filesimplesamlphp/config/authsources.php
.redirect_url => http://localhost/index.php?option=com_samllogin
(localhost è il dominio dell'installazione di Joomla!) -
È possibile testare il componente
JoomlaAuth
accedendo al pannello admin di SimpleSAMLphp (credenziali: admin@admin) e cliccando su:Autenticazione > Prova le fonti di autenticazione configurate > joomlamodule:JoomlaAuth
- Generare i certificati RSA per SAML:
sh generate-cert.sh
Verranno generati due file nella cartellacert
:googleappsidp.pem
egoogleappsidp.crt
- Configurare autenticazione con Joomla!:
Modificare i campi
redirect_url
everify_url
nel filesimplesamlphp/config/authsources.php
.redirect_url
: Url in cui si trova la pagina di login del modulo Joomla!SAML Login
. (Sarà necessario sostituire a DOMAIN_NAME il dominio dell'account Google da configurare).verify_url
: Url chiamato da SimpleSAMLphp per ottenere gli attributi di un utente, dopo che questo si è loggato su Joomla!. (Può essere necessario cambiare l'hostname se SimpleSAMLphp e Joomla! non sono hostati sulla stessa macchina). - Sostituire a DOMAIN_NAME il dominio dell'account Google da configurare nel file
simplesamlphp/metadata/saml20-sp-remote.php
- Configurare l'account Google:
- Collegarsi ad
admin.google.com
e accedere alla sezione "Sicurezza" - Cliccare su "Imposta single-sign-on (SSO)"
- Collegarsi ad
- Abilitare la spunta "Configura SSO con provider di identità di terze parti"
- Inserire i seguenti valori (Sostituendo a DOMAIN_NAME il valore appropriato):
URL pagina di accesso
->http://saml.DOMAIN_NAME/simplesaml/saml2/idp/SSOService.php
URL della pagina di uscita
->http://saml.DOMAIN_NAME/simplesaml/module.php/core/authenticate.php?as=joomlamodule%3AJoomlaAuth&logout
- Caricare il certificato
googleappsidp.crt
generato in precedenza e salvare. - Avviare i container con
$ docker-compose up
- Per ulteriori informazioni, consultare: https://simplesamlphp.org/docs/stable/simplesamlphp-googleapps
- Installare il componente
google-sync
accedendo al pannello admin di Joomla" e cliccando su:Extensions > Manage > Install > Install from folder > Check and install
- Abilitare e configurare il componente accedendo al pannello
admin di Joomla! e cliccando su:
Extensions > Plugins > User - SOS Google Sync
- Creando utenti e gruppi tramite Joomla!, ne verrà creata una copia su Google
in automatico.
Nella creazione dei gruppi, bisognerà specificare sia un nome che una mail: per
fare ciò, inserire nella casella
Etichetta Gruppo
il valorenome gruppo@mail
. Esempio:Gruppo Docenti@docenti
creerà su Joomla! e su Google il gruppoGruppo Docenti
con mail[email protected]
- Le credenziali google sono già presenti nel sito di ogni scuola nel file
scuola/administrator/components/com_sos_users/credentials.json
. Per generarne di nuove, creare un account di servizio (https://cloud.google.com/iam/docs/creating-managing-service-accounts) e assegnargli gli scopehttps://www.googleapis.com/auth/admin.directory.user
ehttps://www.googleapis.com/auth/admin.directory.group
(https://support.google.com/a/answer/162106?hl=en) - Per utilizzare il plugin sulle scuole esistenti, sarà necessario installare le librerie
di Google per ogni scuola:
Eseguire
composer require google/apiclient:"^2.0" --ignore-platform-reqs
nella root directory del sito delle scuole. - Il sistema di gestione gruppi di questo plugin non è retrocompatibile con il vecchio modulo.
Per ottenere la retrocompatibilità, sarà necessario rinominare i gruppi esistenti prima di installare il plugin.
Esempio: In una scuola è presente un gruppo chiamato
Gruppo Docenti
con assegnata la mail[email protected]
tramite il vecchio modulo sos_users. Per rendere questo gruppo utilizzabile con il nuovo plugin, sarà necessario rinominarloGruppo Docenti@docenti
prima di installare il plugin.