You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »


Prima di tutto bisogna scaricare SimpleSAMLphp dentro al progetto


Prima di tutto bisogna scaricare SimpleSAMLphp dentro al progetto

simplesamlphp
composer require simplesamlphp/simplesamlphp

 Per permettere a SimpleSAMLphp a comunicare con Drupal bisogna che installiamo un modulo (per SimpleSAMLphp, non per Drupal)

simplesamlphp-module-drupalauth
composer require drupalauth/simplesamlphp-module-drupalauth

Per trasformare drupal in Identity provider manca un altro modulo

DrupalAuth for SimpleSAMLphp
composer require 'drupal/drupalauth4ssp:^1.2'


Configurazione

L'applicazione SimpleSAMlphp deve essere come un applicazione autonoma. Ciò significa che Drupal sarà l'applicazione principale (servita dalla directory principale) e SimpleSAMLphp sarà servito da una sottodirectory. Ho scelto il percorso /idp.

La directory www nella directory del fornitore di SimpleSAMLphp deve essere esposta come percorso /idp. Ho provato alcuni metodi per farlo, ma ho scoperto che l'approccio migliore e più affidabile è solo quello di creare un collegamento simbolico tra la directory www e il percorso scelto nella radice web.

Quindi navigando nella web directory del nostro progetto

Creazione Link Simbolico
ln -s ../vendor/simplesamlphp/simplesamlphp/www idp



Configurazione vhost di apache

Apache - vhost, aggiunta
SetEnv SIMPLESAMLPHP_CONFIG_DIR /var/www/html/simplesamlphp/dev/config
Alias /idp /var/www/html/vendor/simplesamlphp/simplesamlphp/www


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.

Struttura files
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

quindi la simplesamlphp directory va messa nella root del nostro progetto.

Con le directory in posizione, bisogna quindi copiare il contenuto di vendor/simplesamlphp/simplesamlphp/config-templates nella directory config e il contenuto di vendor/simplesamlphp/simplesamlphp/metadata-templates nella directory dei metadati. Questo può essere fatto usando i seguenti comandi.

Copy
cp -r ./vendor/simplesamlphp/simplesamlphp/config-templates/. simplesamlphp/dev/config
cp -r ./vendor/simplesamlphp/simplesamlphp/metadata-templates/. simplesamlphp/dev/metadata

Creazione dei certificati

Fornisco qui un metodo per la loro creazione, ma forse sarebbe meglio prendere degli interni di Cineca, in modo da non dover pensare ogni 10 anni per il loro rinovo. Oppure no...da decidere.

Nella applicazione SimpleSAMLphp, assicurati di essere nella directory simplesamlephp/dev/certs ed esegui il seguente comando per generare un paio di certificati.

Creazione Certificati
cd /{progetto}/simplesamlphp/dev/certs
openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out simplesaml.crt -keyout simplesaml.pem

Questo creerà 3 files simplesaml.crt,simplesaml.pem,simplesaml.key

Successivamente, vai alla tua base di codice Drupal e crea una directory chiamata certs. Entra in questa directory ed esegui il seguente comando.


Con i file di configurazione in atto possiamo ora passare alla configurazione del sistema.


Certificati SP
cd /{progetto}/certs
openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out drupal.crt -keyout drupal.pem

Questi certificati saranno i nostri certificati X.509 per l'SP.

Penso che dovrei probabilmente sottolineare che questi certificati non dovrebbero far parte del tuo repository Git. Sono essenzialmente credenziali e come tali non dovrebbero essere archiviate in Git. Dovrai trovare modi per distribuire questi certificati ai tuoi server senza che facciano parte del tuo repository. È possibile, ad esempio, inserire i file nel server di produzione e quindi creare un collegamento simbolico durante il processo di distribuzione in modo che appaiano nello stesso posto per quanto riguarda i due sistemi. Questi certificati dureranno anche a lungo (3652 giorni o circa 10 anni), il che potrebbe non essere la migliore pratica ma dovrebbe andare bene per un server di sviluppo bloccato. Con i certificati in atto possiamo ora passare alla configurazione di SimpleSAMLphp.

SimpleSAMLphp Configuration

È giunto il momento di modificare il file config.php in simplesamlphp/dev/config per far sapere a SimpleSAMLphp come vogliamo configurare il sistema.

A seconda di dove si desidera ospitare il sistema, dipende dall'impostazione baseurlpath.  Se il sistema è installato in una sottodirectory, procedere di conseguenza. SimpleSAMLphp reindirizzerà a questo percorso durante l'autenticazione, quindi devi essere sicuro che sia corretto per la tua configurazione.

Config.php
'baseurlpath' => 'https://multisite.ddev.site/idp/',

Esiste una password di amministrazione per consentirti di accedere al sistema per testare le autenticazioni e acquisire i metadati. Questa password può essere impostata utilizzando l'opzione auth.adminpassword. Impostalo su qualcosa di diverso per evitare che il sistema si lamenti e per assicurarti di avere un sistema sicuro.

Config.php
'auth.adminpassword' => 'somecomplexpassword',

C'è un'impostazione segreta del sale che deve essere aggiunta. Il sistema lo utilizza per elaborare alcuni dei valori hash interni ed è quindi importante che venga creato.

Eseguire il comando seguente per produrre un valore salt segreto.



Creazione salt
tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo



Incolla l'output nell'opzione di configurazione di secretsalt. Dovrebbe assomigliare a qualcosa di simile a questo.



config.php
'secretsalt' => 'yaymigq8bmsmda2l97r50qfytyuhvop4',



Nota: non modificare questa impostazione una volta che hai iniziato a configurare i servizi di autenticazione in quanto causerà la modifica di tutte le tue chiavi e alla fine causerà problemi ai tuoi utenti in quanto non saranno in grado di autenticarsi.

Imposta il fuso orario in cui è installato il server.



config.php
'timezone' => 'Europe/Rome',



Dobbiamo informare SimpleSAMLphp sulla posizione di un paio di directory. La prima è la directory dei certificati, che viene impostata con l'uso dell'opzione certdir.

Per impostazione predefinita, punta a una directory relativa alla directory dell'applicazione SimpleSAMLphp. In tal caso, per indirizzarla alla nostra directory personalizzata, dobbiamo aggiungerla come percorso assoluto.



config.php
'certdir' => '/var/www/html/simplesamlphp/dev/certs/',



Oppure fai qualche salto in giro, l'applicazione capirà dove si basa la directory su questo. Ho scoperto che è più facile da gestire in quanto funzionerà su qualsiasi configurazione su cui è installato.

config.php
'certdir' => '../../../simplesamlphp/dev/certs/',

Nota: fate attenzione sui percorsi, quando aggiornerò questa guida, sarà con i percorsi che utilizziamo di solito per i nostri siti, i percorsi attuali sono quelli che utilizzo in ddev (local installation).


Successivamente, è necessario modificare il riferimento alla directory delle origini dei metadati modificando la posizione dell'impostazione della directory nella sezione delle origini dei metadati. È simile all'opzione certdir in quanto puoi impostarla come assoluta o relativa alla directory dell'applicazione SimpleSAMLphp.

config.php
'metadata.sources' => [
  ['type' => 'flatfile',
     'directory' => '/var/www/html/simplesamlphp/dev/metadata/',
  ],
],

Ecco l'ambientazione con relativo percorso.

config.php
'metadata.sources' => [
  ['type' => 'flatfile',
     'directory' => '/../../../simplesamlphp/dev/metadata/',
  ],
],


Dopo questo dovresti essere in grado di visitare il tuo host e vedere la pagina di benvenuto di SimpleSAMLphp.

Puoi accedere a questo utilizzando la password di amministrazione che hai impostato sopra.


Il sistema non fa molto al momento, quindi abilitiamo alcuni protocolli e moduli di autenticazione.

Per impostazione predefinita, SimpleSAMLphp utilizza SAML 2.0 e, sebbene esista il supporto per l'autenticazione Shibboleth, attualmente è deprecato, quindi non dovresti fare affidamento su di esso. Abilita il protocollo SAML 2.0 impostando true sull'opzione enable.saml20-idp.

config.php
'enable.saml20-idp' => true,


Non bisogna preoccuparsi di abilitare l'impostazione 'shib13-idp' poiché si riferisce al protocollo Shibboleth che è stato deprecato e verrà rimosso in SimpleSAMLphp 2.0.

Un requisito del modulo drupalauth è una connessione al database, questo non deve essere lo stesso database in cui è installato Drupal, ma richiede la modifica di alcune impostazioni nel file config.php.

config.php
'store.type'                    => 'sql',
'store.sql.dsn'                 => 'mysql:host=localhost;dbname=drupal',
'store.sql.username' => 'drupal',
'store.sql.password' => 'drupal',


Infine, ora si puo abilitare alcuni moduli, questo viene fatto abilitandoli nell'impostazione module.enable nel file config.php.

config.php
'module.enable' => [
  'core' => true,
  'saml' => true,
  'drupalauth' => true,
],


Con quello in atto possiamo aggiungere i nostri dettagli di autenticazione del sito Drupal al file authsources.php. Questo deve fare riferimento alla radice web di Drupal, ai collegamenti di accesso e disconnessione, nonché a qualsiasi attributo che si desidera passare tra Drupal e i fornitori di servizi quando l'utente si autentica. Nell'esempio seguente stiamo restituendo l'ID utente Drupal, il nome e l'indirizzo e-mail nel pacchetto di autenticazione. Il sito multisite.ddev.site è solo un dominio creato localmente per questo esempio.

authsources.php
'drupal-userpass' => [
        'drupalauth:External',

        // The filesystem path of the Drupal directory.
        'drupalroot' => '/var/www/web',

        // Whether to turn on debug
        'debug' => true,

        // Cookie name. Set this to use a cache-busting cookie pattern
        // (e.g. 'SESSdrupalauth4ssp') if hosted on Pantheon so that the cookie
        // is is not stripped away by Varnish. See https://pantheon.io/docs/cookies#cache-busting-cookies .
        'cookie_name' => 'SESSdrupalauth4ssp',

        // the URL of the Drupal logout page
        'drupal_logout_url' => 'https://multisite.ddev.site/user/logout',

        // the URL of the Drupal login page
        'drupal_login_url' => 'https://multisite.ddev.site/user/login',

        // Which attributes should be retrieved from the Drupal site.
        'attributes' => [
          ['field_name' => 'uid', 'attribute_name' => 'uid'],
          ['field_name' => 'name', 'attribute_name' => 'cn'],
          ['field_name' => 'mail', 'attribute_name' => 'mail'],
        ],

 ],


Ora dobbiamo informare SimpleSAMLphp della nostra intenzione di usarlo come IdP. Questo viene fatto modificando il file di metadati saml20-idp-hosted.php e aggiungendo un array che dettaglia il nome, i certificati e il sistema di autenticazione per l'IdP.  Il nome di autenticazione di 'drupal-userpass' deve corrispondere all'origine di autenticazione aggiunta nel passaggio precedente.

saml20-idp-hosted.php
$metadata['ssotestdrupal'] = [
    'host' => '__DEFAULT__',
    'privatekey' => 'simplesaml.pem',
    'certificate' => 'simplesaml.crt',
    'auth' => 'drupal-userpass',
];


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

saml20-idp-remote
$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.

Configurare Drupal come un IDP

Un requisito per far funzionare tutto questo in Drupal è l'uso del modulo drupalauth4ssp. Questo viene installato tramite il composer.

Una volta installato il modulo, puoi andare alla pagina di configurazione del modulo nel percorso /admin/config/people/drupalauth4ssp. Non c'è molto da configurare qui, devi solo assicurarti che il campo Authsource corrisponda alla fonte di autenticazione che hai impostato nel file authsources.php. Per impostazione predefinita questo è drupal-userpass.
Authsource: drupal-userpass

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.

Questo è praticamente tutto in termini di configurazione di Drupal come IdP. Il modulo Drupal drupalauth4ssp è praticamente plug and play.

Naturalmente, questa configurazione non fa assolutamente nulla da sola, è necessario un sistema per essere un fornitore di servizi in modo da potervi accedere.


Configurazione di un Drupal SP per accedere all'IdP Drupal

Quello che vogliamo fare è configurare un altro sito Drupal come SP in modo che gli utenti dell'IdP Drupal possano accedere all'SP utilizzando le credenziali create nell'IdP. In sostanza, se gli utenti desiderano accedere al sito 2 (ovvero l'SP), devono autenticarsi sul sito 1 (ovvero l'IdP). Le istruzioni qui sono che dovresti installare e configurare il modulo.



composer require drupal/samlauth



Dopo aver installato il modulo, vai alla pagina di configurazione in /admin/config/people/saml. Ci sono MOLTI campi in questo modulo ed è piuttosto intimidatorio quando lo vedi per la prima volta, quindi suddividiamo il modulo in sezioni.

LOGIN / LOGOUT

Questo controlla i collegamenti su cui gli utenti faranno clic per accedere e disconnettersi utilizzando SAML, nonché alcuni reindirizzamenti dopo aver eseguito tali azioni. Probabilmente puoi lasciare questa sezione così com'è, a meno che tu non voglia personalizzarla in modo specifico.

SERVICE PROVIDER

Questa sezione descrive in dettaglio i dettagli SP del tuo sito Drupal.

Il primo campo si chiama Entity ID ed è quello che verrà chiamato il tuo SP quando viene indicato nell'applicazione SimpleSAMLphp. L'impostazione di questo valore su qualcosa di utile consente di identificare a cosa si riferisce la configurazione SP.

La parte successiva di questa sezione è il certificato che verrà utilizzato per crittografare i metadati XML. Nel file Leggimi del modulo di autenticazione SAML sono presenti molti dettagli sui diversi modi per archiviare queste informazioni.

Il modo più sicuro è probabilmente utilizzare l'impostazione "file" per la gestione del certificato e fare semplicemente riferimento ai file direttamente nell'applicazione.

All'inizio di questo articolo ho creato certificati per Drupal e li ho archiviati in una directory "certs". Tutto quello che devi fare qui è fare riferimento ai certificati nei campi di questa sezione. Aggiungere drupal.pem al campo del nome file della chiave privata e drupal.crt al campo del nome file del certificato X.509. Il nuovo nome file del certificato x509 non è necessario e può quindi essere lasciato vuoto. La tua configurazione dovrebbe assomigliare un po' alla seguente.

IDENTITY PROVIDER

In questa sezione dobbiamo informare Drupal del nostro sistema IdP (cioè l'istanza di SimpleSAMLphp). Se guardi il codice PHP che abbiamo generato in precedenza e archiviato in saml20-ipd-remote.php dovresti essere in grado di vedere quali elementi vanno dove qui. L'ID entità all'inizio di questa sezione è il nome che abbiamo assegnato all'IdP all'inizio del processo, quindi nel nostro caso è ssotestdrupal. I campi Single Sign On Service e Single Logout Service nel modulo sono etichettati come tali nel PHP.

Il certificato X.509 è il contenuto dell'elemento certData nel PHP. Qui hai la possibilità di caricare il tuo file di certificato sul server e fare riferimento ad esso, o copiare il valore di certData nel modulo di configurazione, che a sua volta verrà esportato nella tua configurazione Drupal. Il modo in cui memorizzi questo valore dipende da te, ma poiché si tratta di un certificato pubblico potresti riuscire tramite la configurazione. Una cosa da notare è che se copi il valore da PHP, il modulo aggiungerà automaticamente l'intestazione e il piè di pagina di "BEGIN CERTIFICATE" al valore, quindi non preoccuparti se viene aggiunto magicamente.

Il tuo modulo di configurazione dovrebbe essere simile al seguente.

USER INFO AND SYNCING

La prossima è la sezione relativa alle informazioni sull'utente e alla sincronizzazione. Qui, dobbiamo solo inserire il nome utente e gli attributi email dell'utente in modo che corrispondano ai campi che abbiamo impostato nel file authsources.php.

In questo caso il nome utente è 'cn' e l'indirizzo email dell'utente è 'mail'. Le altre opzioni qui spetta a te abilitare o disabilitare. Le impostazioni nello screenshot qui sotto sono piuttosto aperte e consentono un maggiore controllo sulla corrispondenza dei campi utente rispetto a quanto dovrebbe essere abilitato in un ambiente di produzione. Detto questo, dipende da te quanto aprire le impostazioni per la tua installazione.

Aggiunta della configurazione Drupal a SimpleSAMLphp

Infine, dobbiamo copiare la configurazione dal Drupal SP nel Drupal IdP. Dovresti andare al percorso /saml/metadata nel sito SP e copiare l'XML da quella pagina, convertirlo in un array PHP in SimpleSAMLphp.

Dalla pagina /saml/metadata

appare un xml in questo modo


<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2023-08-16T06:21:37Z" cacheDuration="PT604800S" entityID="DrupalSP" ID="pfx7c9e778a-25cf-85a4-24bb-7d58247d5eaa"><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
  <ds:Reference URI="#pfx7c9e778a-25cf-85a4-24bb-7d58247d5eaa"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>VCg0woxsW0K9uYNmosRF4z/u1EcLDe48yALx5W79U7U=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>lALbY9+TjURYpfm+S2v8RT6NgBCSnOHN6i2pL7KLY/hOuAh/gXH5wtA3njoWLF/StwwtNtPGXhz5OcYk2zBzjX+o6+MnHjLZb2PjKvjZpfZ74BPSq332diUOEpULURDTmZGwHrDE0UnsMBdN0h7FcsXLACHGQWvveXSxdwT6n0ARsu+2MHTlxtQrqZKL0ycNcwgcq7DJ6qiYEs3RX8hU5CnEl7EHji3rTIHHiiCJjhhSSO1BkmaqRxf8Nj7XoGGPI0fYAftjZf8WU/2dVd7+zOJZfqx+aTFzLxjOBd5iTnG3LAxj3REbzQbY+prHBOurL5GDgISDdGn8hL5bwt1k5iZzKzIkkhSj9b1yqJ/GuWpjT+SlQR9oRTeak/DcAhHnSKwFNA//V9iFXyK2oUu/VTPwQbEZVIiItUQ54AWXaZ/e5Eu4G9nVToeC/q81GjD1BTDfz4QWNdF2JPE7BUyOvgNx+N6iFUI0dy1NOy8wrJVNm+QCYMmZj0+7pI2gwbwg</ds:SignatureValue>
<ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIE8zCCA1ugAwIBAgIUDjUT5iCQc/E6iw7tsqIsYOh39AAwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEQMA4GA1UEBwwHQm9sb2duYTEPMA0GA1UECgwGQ0lORUNBMRAwDgYDVQQLDAdQb3J0YWxpMRIwEAYDVQQDDAltdWx0aXNpdGUxIDAeBgkqhkiG9w0BCQEWEXRvbGlAdWx0cmFiaXQub3JnMB4XDTIzMDgxNDA5Mjk0NVoXDTMzMDgxMzA5Mjk0NVowgYgxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEQMA4GA1UEBwwHQm9sb2duYTEPMA0GA1UECgwGQ0lORUNBMRAwDgYDVQQLDAdQb3J0YWxpMRIwEAYDVQQDDAltdWx0aXNpdGUxIDAeBgkqhkiG9w0BCQEWEXRvbGlAdWx0cmFiaXQub3JnMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3Mm7TZlo2lcR1ecGbjBSEcNOIX9XvTMu+/gRbot2yY3Io7qhtUZIp73jrU9Iaqlk2GvuxbysoSzdlDsrrc3+HJ7Kqu1xJi1tOZ0wiMEZOdoRPfCkWdpgmDnVCJomS2D55oqB3+b0nV/74w2QtPI69VaSpAxtDB22ojtoxakMAyZ+ynt5ggaMQtOIb1w5vFdOlSsrV0yPXA1QV1IaIfvvWuq5/SRWtIE8bPneh9GlC+MU3KKaRhT0jyubxEV9s30lSohZ8o8r7AjlTq+Yx4n4j5JDG1lKCUc86GRj0mLZ7GXmQQilvtNMBw/R1+EUaS7HvvUqbZwsG4dlMNFW6vOTfRbe0devpCEBOB8JmzoUYJanAnBv8EYVf1euCsgYvQsginWzjw8/Bx5bEGh/FPS1pPChOlMqwrDZhLqdUGaLkxICNNe8EExXqnHq0h+egiZGPLjtOVBAvImsQHfUiLLORpw2uacVW/+wmMadqwOhyUXlJZZU9uM81+PeEAtzGI0tAgMBAAGjUzBRMB0GA1UdDgQWBBQFHhXiJRQE2mvwbL0TZAz/mw0D7TAfBgNVHSMEGDAWgBQFHhXiJRQE2mvwbL0TZAz/mw0D7TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBgQAlQVF5uNYRVCxGBO3rOLlauNPcyGS0YYj3eTme5Qi5jLrgFmimd2KmWjPx21rLe337xYCnyuox6Z7RrcX9fXnfznRFbYB/PFIqwyuplfNuMvfy8Y+HOqL2ne+mgYplExbt4AZPbA4kGCdfHw5QYi0KTEQRnyLoxT0iObCzfVQOcqsaa+PwnriGMtnW6uGhhrwgSiTjyToZzPGHnBU1UKXoPwprj69KtBf0zxh2aUQ9ego5pkAmiLCQCCVIjeIIWGZou40YRZ+K/XLtNj77uiRlDCBClDTkCZAlarhqluBCWBEgV+3Q0otTGwFMZHHqcHBZFTr7NzLeyRogVEJkzr0jV7uAOgonruRtg0Lw7H4AYmc/bVgrH75O6HRRaDpGfzztQGt/2Oirh4G5+ZZa7MWaU6bfad0Bvz0H9P9mvE1brMrZfnNcrroTwl9m1Kj78Q8mZV/s4x9fAzjx29TT0/ZZbhAzDXp6qIc3iDesk8KWVvYum8vxbqEtxOvNqsXEGKw=</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature>
  <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>MIIE8zCCA1ugAwIBAgIUDjUT5iCQc/E6iw7tsqIsYOh39AAwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEQMA4GA1UEBwwHQm9sb2duYTEPMA0GA1UECgwGQ0lORUNBMRAwDgYDVQQLDAdQb3J0YWxpMRIwEAYDVQQDDAltdWx0aXNpdGUxIDAeBgkqhkiG9w0BCQEWEXRvbGlAdWx0cmFiaXQub3JnMB4XDTIzMDgxNDA5Mjk0NVoXDTMzMDgxMzA5Mjk0NVowgYgxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTEQMA4GA1UEBwwHQm9sb2duYTEPMA0GA1UECgwGQ0lORUNBMRAwDgYDVQQLDAdQb3J0YWxpMRIwEAYDVQQDDAltdWx0aXNpdGUxIDAeBgkqhkiG9w0BCQEWEXRvbGlAdWx0cmFiaXQub3JnMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3Mm7TZlo2lcR1ecGbjBSEcNOIX9XvTMu+/gRbot2yY3Io7qhtUZIp73jrU9Iaqlk2GvuxbysoSzdlDsrrc3+HJ7Kqu1xJi1tOZ0wiMEZOdoRPfCkWdpgmDnVCJomS2D55oqB3+b0nV/74w2QtPI69VaSpAxtDB22ojtoxakMAyZ+ynt5ggaMQtOIb1w5vFdOlSsrV0yPXA1QV1IaIfvvWuq5/SRWtIE8bPneh9GlC+MU3KKaRhT0jyubxEV9s30lSohZ8o8r7AjlTq+Yx4n4j5JDG1lKCUc86GRj0mLZ7GXmQQilvtNMBw/R1+EUaS7HvvUqbZwsG4dlMNFW6vOTfRbe0devpCEBOB8JmzoUYJanAnBv8EYVf1euCsgYvQsginWzjw8/Bx5bEGh/FPS1pPChOlMqwrDZhLqdUGaLkxICNNe8EExXqnHq0h+egiZGPLjtOVBAvImsQHfUiLLORpw2uacVW/+wmMadqwOhyUXlJZZU9uM81+PeEAtzGI0tAgMBAAGjUzBRMB0GA1UdDgQWBBQFHhXiJRQE2mvwbL0TZAz/mw0D7TAfBgNVHSMEGDAWgBQFHhXiJRQE2mvwbL0TZAz/mw0D7TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBgQAlQVF5uNYRVCxGBO3rOLlauNPcyGS0YYj3eTme5Qi5jLrgFmimd2KmWjPx21rLe337xYCnyuox6Z7RrcX9fXnfznRFbYB/PFIqwyuplfNuMvfy8Y+HOqL2ne+mgYplExbt4AZPbA4kGCdfHw5QYi0KTEQRnyLoxT0iObCzfVQOcqsaa+PwnriGMtnW6uGhhrwgSiTjyToZzPGHnBU1UKXoPwprj69KtBf0zxh2aUQ9ego5pkAmiLCQCCVIjeIIWGZou40YRZ+K/XLtNj77uiRlDCBClDTkCZAlarhqluBCWBEgV+3Q0otTGwFMZHHqcHBZFTr7NzLeyRogVEJkzr0jV7uAOgonruRtg0Lw7H4AYmc/bVgrH75O6HRRaDpGfzztQGt/2Oirh4G5+ZZa7MWaU6bfad0Bvz0H9P9mvE1brMrZfnNcrroTwl9m1Kj78Q8mZV/s4x9fAzjx29TT0/ZZbhAzDXp6qIc3iDesk8KWVvYum8vxbqEtxOvNqsXEGKw=</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://federal.ddev.site/saml/sls"/>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
    <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://federal.ddev.site/saml/acs" index="1"/>
  </md:SPSSODescriptor>
</md:EntityDescriptor>

Se non si vede in questo modo(es con firefox, bisogna fare un click destro con il mouse e cliccare su "View page source").

Questo xml va copiato nel nostro /idp, di seguito selezionando Federation e andando al link XML to SimpleSAMLphp metadata converter ,

La differenza fondamentale è che devi aggiungere l'array PHP al file saml20-sp-remote.php nella tua istanza IdP SimpleSAMLphp. Quindi copiando l'XML produce l'array PHP da copiare al file.


Ora, quando gli utenti desiderano accedere al sito Drupal SP, accedono al sito Drupal IdP e vengono reindirizzati al sito SP e autenticati anche lì. Se l'utente non è noto al sito SP, gli attributi inviati dall'IdP vengono utilizzati per creare l'utente e inserire i suoi dettagli (supponendo che esistano anche sul sito IdP). Seguendo queste istruzioni, non c'è nulla che ci impedisca di configurare più istanze SP di Drupal e consentire a tutte di autenticarsi rispetto all'installazione centrale di Drupal IdP.


  • No labels