...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
composer require "simplesamlphp/simplesamlphp: 1.19.6" |
Per permettere a SimpleSAMLphp a comunicare con Drupal bisogna che installiamo un modulo (per SimpleSAMLphp, non per Drupal)
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
composer require "drupalauth/simplesamlphp-module-drupalauth:1.9.1 as 1.8.1" |
Per trasformare drupal in Identity provider manca un altro modulo
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
SetEnv SIMPLESAMLPHP_CONFIG_DIR /var/www/html/simplesamlphp/dev/config
Alias /idp /var/www/html/vendor/simplesamlphp/simplesamlphp/www
<Directory /var/www/html/vendor/simplesamlphp/simplesamlphp/www>
<IfModule mod_authz_core.c>
# For Apache 2.4:
Require all granted
</IfModule>
</Directory>
|
Questa cosa va richiesta da ITDP, e la cosa importante è il percorso assoluto verso il file di configurazione per simplesamlphp e verso la sua www directory in modo che possa rispondere
al nostro sito /idp. Ovviamente va montata soltanto al default del nostro progetto.
Preparazione e configurazione lato codice
Abbiamo bisogno di creare una directory per la configurazione i metadata e i certificati di simplesamlphp.
Questa cosa va richiesta da ITDP, e la cosa importante è il percorso assoluto verso il file di configurazione per simplesamlphp e verso la sua www directory in modo che possa rispondere
al nostro sito /idp. Ovviamente va montata soltanto al default del nostro progetto.
Preparazione e configurazione lato codice
Abbiamo bisogno di creare una directory per la configurazione i metadata e i certificati di simplesamlphp.
Un bell approccio consiste nell'avere configurazioni diverse per piattaforme diverse (il che aiuta con i test). Si possa suddividere la configurazione in questo modo e creare la struttura di directory in modo che assomigli a questa.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
certs/
simplesamlphp/
- dev/
- - certs/
- - config/
- - metadata/
- prod/
- - certs/
- - config/
- - metadata/
vendor/
- simplesamlphp/
- - simplesamlphp/
- - - modules/
- - - - drupalauth/
web/
- autoload.php
- core/
- .htaccess
- idp -> ../vendor/simplesamlphp/simplesamlphp/www
- index.php
- modules/
- profiles/
- sites/
- themes/
- update.php
composer.json
composer.lock |
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
cd /{progetto}/simplesamlphp/dev/certs openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out simplesaml.crt -keyout simplesaml.pem openssl rsa -in simplesaml.pem -out simplesaml.key |
Questo Questo creerà 3 files simplesaml.crt,simplesaml.pem,simplesaml.key
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
cd /{progetto}/certs openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out drupal.crt -keyout drupal.pem openssl rsa -in drupal.pem -out drupal.key |
Questi certificati saranno i nostri certificati X.509 per l'SP.
...
Puoi accedere a questo utilizzando la password di amministrazione che hai impostato sopra.
{{FOTO}}
Il sistema non fa molto al momento, quindi abilitiamo alcuni protocolli e moduli di autenticazione.
...
Si noti che quanto sopra utilizza una fonte di autenticazione chiamata "example-userpass". Questo viene fornito in bundle con SimpleSAMLphp come sistema di autenticazione di esempio e fornisce agli utenti una matrice piatta di credenziali utente e password. Questo va bene da usare per l'installazione e il test, ma probabilmente non è una buona idea da usare in produzione. La configurazione per questo sistema di autenticazione è conservata nel file authsources.php nella tua directory di configurazione. Devi anche aver abilitato il modulo 'exampleauth' nella tua configurazione.
Con questo array di questa configurazione in posizione, vai alla scheda "Federazione" nella configurazione di SimpleSAMLphp. Ora dovresti vedere il tuo IdP nell'elenco. Questo è visualizzabile anche senza aver effettuato l'accesso come amministratore dell'applicazione.Fai clic su "Mostra metadati", vedrai un mucchio di output. Questo è costituito dall'URL dei metadati, dall'XML dei metadati SAML 2.0, da una rappresentazione PHP degli stessi e dal certificato x509 pubblico che abbiamo creato in precedenza che viene utilizzato per crittografare/decrittografare i dati.
Copia l'output PHP e incollalo in saml20-ipd-remote.php nella directory dei metadati.
visualizzabile anche senza aver effettuato l'accesso come amministratore dell'applicazione.
Fai clic su "Mostra metadati", vedrai un mucchio di output. Questo è costituito dall'URL dei metadati, dall'XML dei metadati SAML 2.0, da una rappresentazione PHP degli stessi e dal certificato x509 pubblico che abbiamo creato in precedenza che viene utilizzato per crittografare/decrittografare i dati.
Copia l'output PHP e incollalo in saml20-ipd-remote.php nella directory dei metadati.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$metadata['ssotestdrupal'] = [
'metadata-set' => 'saml20-idp-remote',
'entityid' => 'ssotestdrupal',
'SingleSignOnService' => [
[
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://multisite.ddev.site/idp/saml2/idp/SSOService.php',
],
],
'SingleLogoutService' => [
[
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://multisite.ddev.site/idp/saml2/idp/SingleLogoutService.php',
],
],
'certData' => '[REMOVED]',
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
]; |
Torneremo su SimpleSAMLphp tra un po', ma prima dobbiamo configurare Drupal.
...
Allowed List of URLs for ReturnTo Parameter: *
Facoltativamente, puoi aggiungere URL all'elenco dei parametri ReturnTo consentiti. Questo viene utilizzato dal sistema di autenticazione per rimandare gli utenti ai loro siti di origine (ovvero l'SP a cui stanno tentando di accedere) e quindi può essere una misura di sicurezza aggiuntiva per impedire ai siti indesiderati di utilizzare il tuo sito come IdP.
...