Apache OpenID · 10 min read · Dec 27, 2025

Installa e Configura il Modulo Apache per l'Autenticazione OpenID

Modulo Apache per l’Autenticazione OpenID

OpenID è una tecnologia ampiamente adottata per l’autenticazione degli utenti nelle applicazioni web. Si basa sui concetti di autenticazione distribuita degli utenti nelle applicazioni blog. Questo piccolo ricettario spiega passo dopo passo come installare e configurare il modulo Apache open source mod_auth_oid.

Lo scopo di questo modulo è fornire una semplice implementazione di relying party che può essere utilizzata per proteggere l’accesso alle applicazioni e risorse web basate su Apache. Il modulo non implementa tutte le funzioni descritte nella Specifica ufficiale. Tuttavia, le sue funzionalità sono già abbastanza mature per fornire un’usabilità di accesso confortevole per le tue applicazioni e utenti.

Sono inclusi anche due moduli aggiuntivi che migliorano il modulo di autenticazione con la capacità di mappare gli userid agli utenti locali non solo tramite la configurazione di Apache, ma anche tramite un file di mapping locale (che può già esistere da altre applicazioni) o tramite Ldap.

Avviso di Sicurezza: Il modulo non supporta le estensioni del protocollo come PAPE. Pertanto, l’uso in ambienti con requisiti più elevati di protezione dei dati, come la sanità o le transazioni monetarie, non è raccomandato.

Installazione

Requisiti

Per installare questo modulo Apache, devono essere soddisfatti i seguenti requisiti:

  • Apache 2.2 incluso mod_ssl, mod_proxy, mod_include, Headerfiles e apxs/apxs2 (spesso indicati come pacchetti apache2 e apache2-devel).
  • Modulo Apache mod_parp per l’analisi dei parametri. Ottienilo da qui. L’installazione è semplice: Usa sudo o accedi come root: $ tar xvBzf mod_parp-0.10-src.tar.gz $ cd mod_parp-0.10 $ sudo apxs2 -i -c apache2/mod_parp.c $ sudo chmod 755 /usr/lib64/apache2/mod_parp.so

Modulo Principale

Scarica e decomprimi il codice sorgente da qui.

$ tar xvBzf mod_auth_oid-2.0-src.tar.gz  
 $ cd mod_auth_oid-2.0  
 $ sudo apxs2 -i -c -I . -D AOID_MOD_EXT_HOOKS apache2/mod_auth_oid.c -lcrypto -lparp

*Opzionale: Ci sono moduli aggiuntivi che vengono forniti con il codice sorgente. Se desideri utilizzare anche il modulo aggiuntivo altamente raccomandato mod_auth_oid_file.c o mod_auth_oid_ldap.c, ti preghiamo di compilarli e installarli anche con uno dei seguenti comandi.*

$ sudo apxs2 -i -c -I . apache2/mod_auth_oid_file.c  
 $ sudo apxs2 -i -c -I . apache2/mod_auth_oid_ldap.c

Configurazione

Sezione Server

I seguenti moduli standard di Apache sono richiesti:

  • mod_ssl (fornisce routine di crittografia utilizzate da mod_auth_oid)
  • mod_proxy (fornisce funzioni per mod_auth_oid per inviare richieste ai fornitori OpenID)
  • mod_include (fornisce rendering delle pagine shtml)

Abilita i moduli nella sezione di configurazione globale di Apache. Regola la posizione del file in base alla tua struttura di file. È anche importante che i moduli siano caricati dopo mod_ssl. Pertanto, posiziona queste righe alla fine del blocco LoadModule di Apache. Decommenta le ultime due righe con i moduli di mapping se intendi utilizzarli anche. Se la tua distribuzione ha uno stile individuale per il caricamento dei moduli, ti preghiamo di farlo secondo le loro istruzioni (ad esempio, posiziona le seguenti righe in un file che viene incluso automaticamente se si trova in una directory specifica come modules-enabled o simile.

  LoadModule parp_module                    /usr/lib64/apache2/mod_parp.so
  LoadModule auth_oid_module                /usr/lib64/apache2/mod_auth_oid.so
  # LoadModule auth_oid_file_module           /usr/lib64/apache2/mod_auth_oid_file.so
  # LoadModule auth_oid_ldap_module           /usr/lib64/apache2/mod_auth_oid_ldap.so

Prova a riavviare il tuo server. Se il modulo è caricato correttamente, dovrebbe essere segnalato nel file error.log del server:

[Sun Nov 06 12:10:59 2011] [notice] Apache/2.2.17 (Linux/SUSE) mod_ssl/2.2.17 OpenSSL/1.0.0c mod_auth_oid/2.0 configurato -- riprendendo le operazioni normali

Sezione VirtualHost

Ora è il momento di preparare la configurazione specifica per proteggere la tua applicazione. Modifica la configurazione del tuo VirtualHost. Naturalmente, dovrebbe essere il tuo VirtualHost https poiché ci occupiamo di sicurezza qui. E sostituisci il mio OpenID YOURNAME con il tuo OpenID, altrimenti YOURNAME potrebbe rubare i tuoi gioielli di corona un giorno. ;) Se desideri utilizzare Google come tuo fornitore OpenID, devi seguire un percorso leggermente diverso e aggiungere un AOID_UserPattern, perché Google utilizza l’approccio Identità Diretta con OpenID opachi per sito. Nell’ultimo capitolo di questo howto, chiamato Raffinare lo spazio dei nomi dei tuoi fornitori OpenID preferiti, la direttiva di configurazione è spiegata con un esempio di Google.

Supponiamo che la risorsa che vogliamo proteggere sia la posizione /private e che il gestore di autenticazione si trovi su /aoid. Le sezioni sottostanti sono commentate per indicare cosa devi fare.

       # Un riferimento completo di tutte le opzioni di configurazione disponibili
       # è disponibile su: http://auth-openid.sourceforge.net/
       # Attenzione: Abilita su CA fidate mettendole in cacerts
       # Colleghiali a nomi hash come descritto nella documentazione di Apache
       # http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslproxycacertificatepath
       SSLProxyEngine            on
       SSLProxyCACertificatePath /etc/ssl/cacerts

       # usa il flag httponly per prevenire attacchi XSS al cookie di sessione
       BrowserMatch              "Mozilla.*Firefox/(3|4)" HttpOnlyCookie
       BrowserMatch              "MSIE [6789]"            HttpOnlyCookie
       BrowserMatch              "Opera/(10|9\.[56789])"  HttpOnlyCookie
       BrowserMatch              Secure SecureCookie

       # impostazioni di base di mod_auth_oid
       AOID_Realm                /
       AOID_StartPage            /private/index.html
       AOID_LogLevel             info
       AOID_LoginPath            /aoid/login
       AOID_LoginSuffix          .shtml
       AOID_Timeout              300
       AOID_CookieName           AJESSIONID

       # Mappatura Utente OpenID. Ulteriori possibilità sono descritte
       # nel Capitolo "Mapping file locale" della pagina Howtoforge
       # utenti autorizzati/conosciuti SOSTITUISCI CON IL TUO OPENID
       AOID_User http://YOURNAME.myopenid.com/ YOURNAME

       # Forza l'autenticazione utente mod_auth_oid della seguente posizione
       
         AuthType OpenID
         Require valid-user
       

       # pagina di accesso mod_auth_oid
       # abilita SSI per la pagina di accesso (richiede mod_include)
       
          Options            Includes
          AddType            text/html .shtml
          AddOutputFilter    INCLUDES .shtml
       

File

Ora crea una directory chiamata private nella DocumentRoot del tuo VirtualHost, che include il contenuto che desideri proteggere. Come esempio, aggiungi un file index.html che dice: “Yeahh!! mod_auth_oid rocks e ho hackato 127.0.0.1!.

Inoltre, hai bisogno di una pagina di accesso nella directory aoid che si trova anche nel DocumentRoot. Come inizio, puoi utilizzare la pagina SHTML di esempio dalla directory htdocs nel tarball. Copiala anche nella tua htdocs. Controlla i permessi dei file appena creati, se corrispondono alle preferenze del tuo server web.

Ora puoi riavviare nuovamente il tuo Apache. Controlla il file error.log per vedere se tutto va bene.

Testa la tua Installazione

Ora apri il tuo browser. Se hai fatto tutto correttamente e anche il tuo Apache lo fa, allora dovresti vedere una pagina di accesso quando punti il tuo browser al seguente URL: https://YOURHOST/private/index.html

Seleziona il tuo fornitore e invia. Il modulo ti reindirizzerà al tuo fornitore dove effettui il login, e se è stato successo verrai rimandato alla tua applicazione privata. Se scegli Google, invia semplicemente l’OP Identifier proposto, negli altri due casi inserisci il tuo OpenID nella parte evidenziata. Più avanti nel howto è descritta una soluzione molto più conveniente per una pagina di accesso dall’aspetto elegante.

Debugging nel Caso Qualcosa Sia Andato Storto

Nel poco probabile caso in cui qualcosa non funzioni come previsto, hai diversi indizi su cosa potrebbe essere sbagliato nel file error.log del tuo server Apache. I messaggi di log dovrebbero indicare cosa fallisce. Un elenco dettagliato dei possibili codici di errore e come abilitare un livello di log più elevato può essere trovato nella pagina mod_auth_oid.

Opzioni Aggiuntive

Pagina di Accesso Elegante

Presumo che tu sia come me, e una delle prime cose che ti piacerebbe vedere è una pagina di accesso dall’aspetto carino nel browser. Ti sembra che qualcosa del genere sia abbastanza cool per i tuoi gusti.

Pagina di Accesso Elegante

Questa pagina di accesso dall’aspetto professionale è stata creata con il progetto open source openid-selector, che è un modo user-friendly per selezionare un OpenID.

Dopo aver generato la pagina di accesso, deve essere migliorata con le cose di inclusione shtml da mod_auth_oid. Ho aggiunto la parte di rendering degli errori dalla pagina di accesso originale nella pagina html generata da openid-selector. Il mio esempio della pagina personalizzata può essere scaricato qui.

Mappatura degli userid Locali

Se hai anche compilato il modulo mod_auth_oid_file, puoi anche mappare i tuoi record userid in un file locale invece di aggiungerli tutti al tuo file di configurazione di Apache. Le istruzioni dettagliate possono essere trovate qui.

Leggi il capitolo seguente per aggiungere l’autoregistrazione degli utenti con mapping file locale in un colpo solo.

Amministrazione Autonoma degli Utenti Mappatura di un OpenID a un Userid Locale

Supponendo che tu abbia già un’amministrazione degli utenti in atto basata sui file .htpasswd di Apache, puoi utilizzare il seguente frammento di configurazione per migliorarlo, in modo che gli utenti possano registrare un account OpenID ai loro account locali. Copia il file_mapper.html dal tarball nella tua htdocs.

  # Sezione Virtual Host
  AOID_File_DB              /etc/apache2/mapdb
  AOID_File_AdminPage       /usr/local/apache2/htdocs/file_mapper.html

  # posizione di amministrazione del profilo
  # Regola il percorso del file in base al tuo file .htpasswd esistente
  
    AuthUserFile            /srv/data/.htpasswd
    AuthName                'Inserisci il tuo Nome Utente: Annulla per registrarti se non ne hai uno.'
    AuthType                Basic
    Require                 valid-user
    SetEnvIf                Request_Method POST parp
    SetEnvIf                Request_Method GET parp
    SetHandler              auth-oid-file
    AOID_File_UserOnly      on
  

Ora, mod_auth_oid_file crea un file mapdb dove memorizza la relazione tra gli account OpenID e gli account .htpasswd locali.

Considerazioni sulla Sicurezza

Documento di Scoperta del Relying Party

OpenID raccomanda di ospitare un Documento di Scoperta del Relying Party che indica un indirizzo return_to appropriato per il fornitore OpenID. Yahoo indicherà il tuo sito come non fidato, se non fornisci tale documento. Ulteriori informazioni possono essere trovate qui.

Salva un documento chiamato openid.xrd nella DocumentRoot del tuo sito. Il contenuto dovrebbe assomigliare al seguente esempio. Regola in base alla tua configurazione.



    
        
            http://specs.openid.net/auth/2.0/return_to
            https://YOUR_HOST_HERE/aoid/login
        
    

Il documento deve quindi essere referenziato inviando un’intestazione appositamente creata con ogni risposta HTTP o può essere incluso nel documento di livello superiore del sito.

Variante 1 annuncialo tramite intestazione (raccomandato)

    LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
    # .......
Header set X-XRDS-Location https://YOUR_HOST_HERE/openid.xrd

Variante 2 annuncialo nella sezione head del documento html di livello superiore

  ....
  
  
  ....

Proteggere da Attacchi DoS e Altri Tipi di Attacchi

Gli attacchi DoS e il cross site request forgery sono un grande problema oggi. Puoi proteggere il tuo sito in modo efficiente dagli attacchi DoS con un altro modulo open source, chiamato mod_qos. Questo modulo è un coltellino svizzero quando si tratta di proteggere il tuo server da vari tipi di attacchi. Il modulo può essere installato facilmente come qualsiasi altro modulo Apache. Il seguente esempio di configurazione mostra una configurazione di base che protegge il tuo sito da attacchi DoS e cross site request forgery sulla pagina di autogestione.

    # sezione server
    LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so

    # gestisce le connessioni da un massimo di 100000 IP diversi
    QS_ClientEntries 100000

    # consentirà solo 50 connessioni per IP
    QS_SrvMaxConnPerIP 50

    # numero massimo di connessioni TCP attive è limitato a 256
    MaxClients              256 

    # disabilita il keep-alive quando il 70% delle connessioni TCP sono occupate:
    QS_SrvMaxConnClose      180

    # velocità minima di richiesta/riposta (nega i client lenti che bloccano il server, ad es. slowloris mantiene le connessioni aperte senza richiedere nulla):
    QS_SrvMinDataRate       120 1500 400

    # e limita l'intestazione e il corpo della richiesta (attenzione, questo limita anche gli upload e le richieste post):
    QS_SrvMaxConnClose      70%
    LimitRequestFields      30
    QS_LimitRequestBody     102400

    QS_ClientEventBlockCount 20 300
    QS_SetEnvIfStatus        400               QS_Block
    QS_SetEnvIfStatus        401               QS_Block
    QS_SetEnvIfStatus        403               QS_Block
    QS_SetEnvIfStatus        404               QS_Block
    QS_SetEnvIfStatus        405               QS_Block
    QS_SetEnvIfStatus        406               QS_Block
    QS_SetEnvIfStatus        408               QS_Block
    QS_SetEnvIfStatus        411               QS_Block
    QS_SetEnvIfStatus        413               QS_Block
    QS_SetEnvIfStatus        414               QS_Block
    QS_SetEnvIfStatus        417               QS_Block
    QS_SetEnvIfStatus        500               QS_Block
    QS_SetEnvIfStatus        503               QS_Block
    QS_SetEnvIfStatus        505               QS_Block
    QS_SetEnvIfStatus        QS_SrvMinDataRate QS_Block
    QS_SetEnvIfStatus        NullConnection    QS_Block

    QS_SrvMaxConnExcludeIP 127.0.0.1

    # protezione CSRF del modulo di autogestione impostando
    # quattro traguardi per l'amministrazione del profilo
    QS_MileStone          deny       "^GET /OpenIdLogin"
    QS_MileStone          deny       "^GET /OpenIDRegistration"
    QS_MileStone          deny       "^GET /profile"
    QS_MileStone          deny       "^POST /profile"

Raffinare lo Spazio dei Nomi dei Tuoi Fornitori OpenID Preferiti

Puoi limitare quali fornitori OpenID accetti per l’autenticazione del tuo sito web con la direttiva di configurazione AOID_UserPattern. I seguenti due esempi ti danno un’idea generale di come costruire espressioni regolari per questo scopo.

  # Sezione VirtualHost
  
  # Consenti solo OpenID di Google
  AOID_UserPattern          "^(https://www\.google\.com/accounts/o8/id\?id=.*)$" "$1"

  # Consenti solo OpenID di my.company.com e usa solo una parte di esso per mappare a un utente locale.
  AOID_UserPattern          "^https://my\.company\.com/([a-z]{1})[a-z]+\.([a-z]{2})[a-z]+$" "$1$2"

Parole Finali

Grazie per aver letto questo tutorial. Spero che la tua installazione sia andata senza intoppi. Ti auguro che molti utenti possano trarre vantaggio da questo modulo e spero che sia stato divertente per te installarlo. Se desideri rimanere informato su ciò che accade con il modulo, puoi iscriverti alla nostra pagina facebook mod_auth_oid.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.