MF PHP Htpasswd Tool - Gestore dinamico della Basic Auth
MF PHP Htpasswd Tool è un set completo di metodi per la gestione a 360 gradi delle configurazioni di autenticazione tramite htpasswd / htaccess. Facilmente integrabile nei tuoi progetti, estremamente semplice da utilizzare, apre la possibilità di gestire queste configurazioni in maniera dinamica, nello strato code level delle vostre applicazioni.
A cosa serve MF PHP Htpasswd Tool
MF PHP Htpasswd Tool è un set completo di metodi per la gestione dei file .htpasswd, ovvero delle liste utenti che sono abilitati al login ad una zona protetta di un server Apache.
Con MF PHP Htpasswd Tool ( da ora in avanti citato con HTPT ) è possibile, con poche righe di codice, creare un file .htpasswd, gestirne gli utenti, collegare il file htpasswd con un file .htaccess per la protezione di una directory, e ancora mandare un header di autenticazione senza bisogno di creare e linkare un file .htpasswd
Una occhiata generale a MF PHP Htpasswd Tool
HTPT è nato in seguito alla necessità di poter gestire gli utenti (e le relative password) per l'autenticazione ad un'area protetta direttamente dal pannello di amministrazione di una applicazione web a cui ho lavorato.
Effettivamente, quando si pensa alle configurazioni htpasswd / htaccess la prima cosa che viene in mente è la bash ( con il classico htpasswd -c /the/target/folder/.htpasswd username ) per la creazione / update degli utenti di un Authentication Realm. Tutto molto laborioso e senza la possibilità, da parte dell'utente finale, di poter gestire queste configurazioni in maniera autonoma, se non avendo un pannello di controllo cPanel del proprio hosting, oppure senza scomodare lo sviluppatore / sistemista di turno.
Dal momento che la vostra bellissima applicazione in PHP nasce dal concetto di dinamicità delle pagine servite, e dalla dinamicità delle configurazioni, perchè non applicare lo stesso concetto alla basic authentication offerta dal server Apache?
Con HTPT è possibile, tramite dei metodi di facile utilizzo, effettuare queste basilari operazioni:
- Aggiungere / editare / eliminare utenti ad un dato file .htpasswd
- Abilitare / disabilitare la protezione Basic Auth linkando un file .htpasswd ad un file .htaccess
- Inviare un header di richiesta di autenticazione "simulando" il funzionamento di AuthType Basic di Apache direttamente a livello PHP, sfruttando la $_SERVER['PHP_AUTH_USER']
La cosa degna di nota è che la classe è pienamente compatibile con file .htaccess già esistenti. Questo vuol dire che, dopo aver creato il file htpasswd con i metodi offerti dalla classe, è possibile creare il meccanismo di autenticazione ( che nella pratica si traduce in SCRIVERE all'interno del file .htaccess le 4 regole per la AuthType Basic ) anche se il file .htaccess è già esistente e contiene già delle regole proprie, quindi senza rischiare che la classe sovrascriva o elimini ad esempio delle possibili regole di rewrite già presenti nel file .htaccess.
Il meccanismo che permette la compatibilità con htaccess già esistenti è semplicemente realizzato tramite delle stringhe placeholder che vengono appese prima e dopo le regole aggiunte dalla classe HTPT. Nel momento in cui vorrete disabilitare "il link" tra il file htpasswd e il file htaccess, la classe andrà a cercare le stringhe placeholder e, se e solo se vengono trovate, quella sola porzione di testo viene eliminata.
UNA NOTA IMPORTANTE in merito al metodo statico mfPhpHtpasswd::basic_authentication_header: questo metodo funziona sfruttando la variabile superglobale $_SERVER, e in particolare sfruttando le chiavi PHP_AUTH_USER e PHP_AUTH_PW. Questo tipo di funzionamento richiede che safe_mode sia disabilitato, quindi è da utilizzarsi se e solo se siete in ambienti di sviluppo. In ogni caso, vi rimando al link ufficiale del manuale di php che parla di autenticazione via header, per poter modificare il metodo statico a vostro piacimento. In ogni caso, è consigliabile usare il metodo creazione htpasswd + link con htaccess per configurare una basic auth. E' il metodo corretto per farlo.
Esempio di implementazione
<?php
// php header-based authentication on the fly ( outputs "Authorization Required" if user fails the auth mechanism )
mfPhpHtpasswd::basic_authentication_header (
Array (
'username_required' => 'password_required',
'another_possible_username' => 'another_possible_password'
)
);
// htpassword file generation: instance of mfPhpHtpasswd
$mfphtp = new mfPhpHtpasswd ( '/directory/of/the/desired/htpasswd/file/.htpasswd' );
// user creation ( if the user already exists, his password will be automatically changed with the given password )
$mfphtp -> user_add ( 'create_a_user', 'with_this_password' );
// update of an already existant user
$mfphtp -> user_update ( 'create_a_user', 'change_his_password' );
// deletion of a user from htpasswd file ( if the user doesn't exists, no action is performed )
$mfphtp -> user_delete ( 'create_a_user' );
// after having created the htpasswd file, it is possible to ENABLE the htpasswd user/password request via htaccess file by simply writing
mfPhpHtpasswd::enable_htaccess_password_protection ( '/path/of/htaccess/file/.htaccess', '/path/of/desired/htpasswd/file/to/be/used/.htpasswd' );
// in the same way, it is possible to DISABLE the user/password request of the htaccess by simpy writing
mfPhpHtpasswd::disable_htaccess_password_protection ( '/path/of/htaccess/file/.htaccess' );
?>