...
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
...
Naturalmente, questa configurazione non fa assolutamente nulla da sola, è necessario un sistema per essere un fornitore di servizi in modo da potervi accedere.
...
accedere
...
Code Block | ||||
---|---|---|---|---|
| ||||
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.
...
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.
...
IDENTITY PROVIDER
...
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
Code Block | ||||
---|---|---|---|---|
| ||||
<?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 ,
...
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.