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.cConfigurazione
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.soProva 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 normaliSezione 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.

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.xrdVariante 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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.