User Tools

Site Tools


Sidebar

cn:ccr:aai:howto:joomla

Joomla!: Configurare l'accesso SAML 2.0 con Joomla! 3.x

Reference: https://support.onelogin.com/hc/en-us/articles/201173564-Configuring-SAML-for-Joomla

Questa guida si applica a Joomla! >= 3.3.x

Download dei pacchetti

Configurazione del Plugin

IdP di Produzione:

MIIDtTCCAp2gAwIBAgIJAOU29OWoolW3MA0GCSqGSIb3DQEBBQUAMEUxFDASBgNVBAMTC2lkcC5pbmZuLml0MREwDwYDVQQLEwhJTkZOLUFBSTENMAsGA1UEChMESU5GTjELMAkGA1UEBhMCSVQwHhcNMTQwNDE0MTQ1NzI2WhcNNDEwODI5MTQ1NzI2WjBFMRQwEgYDVQQDEwtpZHAuaW5mbi5pdDERMA8GA1UECxMISU5GTi1BQUkxDTALBgNVBAoTBElORk4xCzAJBgNVBAYTAklUMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxTXQ7OFlyqDxcDkdUgPXtKrHw2vUkKuGkEMpQrrK/PU/emzT13Jualti38jV4NTSBSIXc7P3PTTUsfnk3o+IAej1JKNlQ2klqFDvPiwl9sKFh4Pd66K0g6ebGunsRZtR5LJLMJrrqOhRiLZdAcJzB4RxZsqSYxz0EDw6S5r6w6Sgm4xiupviC9gINAzpTkjFR78dbJ7fDzvvVUXxPz1T4awL01RCt0s/05fHeWM1I4cPjoVSB0t6wzv0CfaWWlid3I6yyFWiFYeVGvn7eeqhvRckthumYOayL18Ri+S2vxYkDqDcY6b6y2OWYhFZ1VTosUoUBPhwXyCYYJ2wAmi2VwIDAQABo4GnMIGkMB0GA1UdDgQWBBROEkiqrjIVFsHZKsnYbh+xPNmilDB1BgNVHSMEbjBsgBROEkiqrjIVFsHZKsnYbh+xPNmilKFJpEcwRTEUMBIGA1UEAxMLaWRwLmluZm4uaXQxETAPBgNVBAsTCElORk4tQUFJMQ0wCwYDVQQKEwRJTkZOMQswCQYDVQQGEwJJVIIJAOU29OWoolW3MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBALVVWVWP9nrWlmU37KbTE3kuqJWptGmaDS2uuOg5RN5lGevQvVu4cac23qaZZ+TN+b6WDXuhEfmVJzBYczxByVeGEvew0fHgRRMZLqST6j2gyb89qzNNFyTcyRZ/5Z7jXWjrnDp3pOLNvrr9BhVojoC2F7EYjSdddwq2pb++9FiHglwSTl5WV+V4ZuNUMemY8jzhqayOK6UuwdL61UE4dPGKnlCgMaiYVST86HkiqFh9oOJ8D6jtlk695pRaz1h3ajxwB9zOa2VAWEsi40P2tZIzY3ek25wTM2vuvHO4YsOmkAOxj2Wk/itj5MnK1tT0u840b61Q/j4SJGuKLe4Tzzg=

IdP di Test:

MIIDzTCCArWgAwIBAgIJAOECAK4a4wUSMA0GCSqGSIb3DQEBBQUAME0xHDAaBgNVBAMTE2lkcC5pbmZuLml0LXRlc3RpbmcxETAPBgNVBAsTCElORk4tQUFJMQ0wCwYDVQQKEwRJTkZOMQswCQYDVQQGEwJJVDAeFw0xNDAxMTUxMDAwNTJaFw00MTA2MDExMDAwNTJaME0xHDAaBgNVBAMTE2lkcC5pbmZuLml0LXRlc3RpbmcxETAPBgNVBAsTCElORk4tQUFJMQ0wCwYDVQQKEwRJTkZOMQswCQYDVQQGEwJJVDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALDVak4mMVfX5XD4ZVhJI8gWG8cS8fJy+TqTMC6bGMbuvRVgpwC9c1Wpjrtmx6Bc/1vETRrronpxHEwERMQh14CVatajCP7ptr+6NbeA5hdPkwt6wZoHsKQ3fPKi6iSjO0ri08rHD0ouCQC2FeF2QCnzdsW3Czp6pJGLDKySkB3fdKId6ZvrR5a/uR8ePZURol69hOxsyNzQuwU17x+k4UUvdkE1LCOYm4X/GXkbYWyLgazQvpspez/Ba/+QAtK1KUUOrVgIP9Tn/H//RFJHBJzpjQ4SevsE1gsDxXpJVPA2EKKBhglRjPpASETf0diaXIoYrGnRYaRfM3BcPAakXQ8CAwEAAaOBrzCBrDAdBgNVHQ4EFgQURnQboZrmM6KuN+D+Rb/hgHxbsSswfQYDVR0jBHYwdIAURnQboZrmM6KuN+D+Rb/hgHxbsSuhUaRPME0xHDAaBgNVBAMTE2lkcC5pbmZuLml0LXRlc3RpbmcxETAPBgNVBAsTCElORk4tQUFJMQ0wCwYDVQQKEwRJTkZOMQswCQYDVQQGEwJJVIIJAOECAK4a4wUSMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADxY+9QU7RJLPbCpAt3beWi1k+z6wGmFvMhDJbzv4quPK39bKeGQQyBootuXo14/4zuCrifV7Y4GNro+DXXxlqmfG18Ds2jqAXpy6DyVfDLYR3LP/JlJiLbDWdP/dlzd/9/ukcJH2Vq2T9pOcyHKDex88oQQC0tKd8fsrhV0vXElSi6bBBXaqvrsTTJMfmYDgHYCxJO/yYP/vsILxDbmafbWPsrwhJxArOKzhIlc0uJOyN+zX4JYYfVS/xNibbhwW5I7v6tGl5ibp9W3AIfpFCjUXRW3NUzM52ht39TqVVaeKtuPZlnW2Seo3N+XRgOm8KElowp+YbfrBRje0CftFrc=
  • Nel tab Opzioni attivare le prime tre linee (click su Yes) e selezionare Username alla quarta linea
  • Nel tab Attribute Mapping
    • Inserire nel campo Name:
      • urn:oid:2.16.840.1.113730.3.1.241 (Produzione)
      • urn:oid:2.5.4.3 (Test)
    • Inserire nel campo Username:
      • urn:oid:0.9.2342.19200300.100.1.1 (Produzione e Test)
    • Inserire nel campo E-Mail
      • urn:oid:0.9.2342.19200300.100.1.3 (Produzione e Test)
    • Inserire nel campo Groups:
      • urn:oid:1.3.6.1.4.1.5923.1.5.1.1 (Produzione e Test)
  • Lasciare i campi nel tab Group Mapping così come sono
  • Nel tab Avanzate
    • Attivare tutti le linee (click su Yes) tranne
      • Encrypt nameID
      • Reject Unencrypted Assertions
    • Inserire una stringa identificativa del sito web nel campo Service Provider Entity Id (ad es. sito_amministrazione)
    • Generare con OpenSSL un certificato X.509 e una chiave privata per l'SP usando il comando:
      openssl req -new -x509 -newkey rsa:2048 -days 3652 -nodes -out saml.crt -keyout saml.key -subj /CN=`hostname -f`/OU=SAML-SP/
      • inserire il contenuto di saml.crt nel campo Service Provider X.509 Certificate
      • inserire il contenuto di saml.key nel campo Service Provider Private Key
  • Click su Salva e Chiudi in alto

Attivazione

  • Attivare il plugin cliccando in corrispondenza della colonna Stato (deve apparire una spunta verde)
  • Aggiungere il modulo
    • Click su Estensioni→moduli
    • Click su Nuovo in alto a sx
    • Click su AAI Login Module
    • Configurare i parametri di posizione e visibilità e click su Salva

Invio dei metadati

<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2017-09-13T08:49:57Z"...

modifcare questo attributo con una data più in là nel tempo per evitare che i metadati scadano rendendo inutilizzabile l'SP

  • Selezionare l'IdP (Produzione/Testing), selezionare il Set di Attributi Esteso e inserire una descrizione dell'SP
  • Click su Send SAML metadata for approval

Test del sistema

  • Una volta ricevuta conferma dell'inserimento dei metadati è possibile testare il sistema
  • Click su Login, nel frontend del sito, in corrispondenza del modulo di Login AAI
  • Autenticarsi sulla maschera di login INFN-AAI (se ci sono errori SAML verificare che i metadati siano stati inseriti)
  • Se l'autenticazione va a buon fine…
    • il plugin creerà (se non già presente) un nuovo utente utilizzando l'uid LDAP come username e i campi cn e mail
    • successivamente, caricherà i gruppi della persona autenticata mappandoli sui gruppi di Joomla e associandoli all'utente Joomla
      • la creazione dei gruppi richiede qualche decimo di secondo e i primi login potrebbero impiegare qualche secondo prima di mostrare nuovamente il sito
  • Ogni gruppo viene mappato su una struttura a due livelli: ad es., per il gruppo i:infn:sezione:servizio::tipo_ruolo:ruolo
    • sarà creato (se non già presente) un primo gruppo per il nodo corrispondente in GODiVA: i:infn:sezione:servizio
    • …e sotto di esso (se non già presente) un secondo gruppo i:infn:sezione:servizio::tipo_ruolo:ruolo per il ruolo specifico
  • L'utente avrà membership su entrambi i gruppi e così facendo sarà possibile identificare tutti gli afferenti ad uno stesso nodo indipendentemente dal ruolo
  • Ad ogni login tutte le membership sono cancellate (ma non i relativi gruppi) e riassegnate in base ai gruppi ricevuti dall'IdP
  • A partire dai gruppi sarà possibile definire diversi Livelli di visibilità per contenuti e menu
cn/ccr/aai/howto/joomla.txt · Last modified: 2018/02/21 14:41 by apaolett@infn.it