Uwierzytelnianie użytkowników za pomocą modułu mod_auth_mysql

Mateusz Nowak
05.09.2015

Serwer Apache posiada szereg madułów umożliwiających przeprowadzenie uwierzytelnienia czytelnika strony. Jednym z nich jest mod_auth_mysql stworzony przez ekipię Jerrego Stuckle’ i Samuela Brauer’a, którego działanie sprowadza się po prostu do porównywania loginu i hasła z tymi zapisanymi w bazie danych MySQL. W celu korzystania z tego modułu konieczna jest instalacja i kompilacja go na serwerze.

1. Przygotowanie do działania

Instalacja i kompilacja jest banalnie prosta.

1.1: Najpierw ściągamy na serwer archiwum z źródłem modułu ze strony: http://sourceforge.net/projects/modauthmysql/
Polecam wiecznie żywą przeglądarkę Lynx Laughing

1.2: Rozpakowujemy ściągnięte archiwum poleceniem:

tar zxvf mod_auth_mysql-3.0.0.tar.gz

Podane parametry oznaczają:

  • x mówi, że chcemy rozpakować archiwum .tar
  • z każe dekompresję gzip’em.
  • v włącza tryb gadatliwy, lub inaczej wizualizację - nazwy wyodrębnianych plików zostaną wysłane na terminal.
  • f mówi, że następnym argumentem będzie pełna nazwa pliku to rozpakowania

1.3: Przygotuj sobię w bazie odpowiednią tabelę do przechowywania haseł użytkowników strony.

1.4: Instalacja i kompilacja - w katalogu z mod_auth_mysql wykonujemy dwa polecenia:

make
make install

1.5: Ładujemy moduł do Apache - w pliku httpd.conf dopisujemy linię:

LoadModule mysql_auth_module libexec/mod_auth_mysql.so

A teraz podajemy dane do połączenia z MySQL:

Auth_MySQL_Info host user hasło

2. Testowanie poprawności instalacji

Jeśli wykonałeś wszystkie podpunkty instalacji modułu, wystarczy, ze teraz odpalisz Apache.
Nie powinno być żadnych komunikatów oprócz inforamcji o uruchomieniu.

Jeśli są - oznacza to najpewniej, że podałeś złe dane w Auth_MySQL_Info.

3. Konfiguracja

Działania modułu realizujemy za pomocą pliku .htaccess.

Którego zawartość powinna brzmieć mniej więcej tak:


ErrorDocument 403 /allow_denited.html
AuthName "nazwa witryny/zasobu"
AuthType Basic
AuthMySQL on
AuthMySQL_DB baza
AuthMySQL_Host host
AuthMySQL_User user
AuthMySQL_Password hasło
AuthMySQL_Password_Table tabela
AuthMySQL_Username_Field login
AuthMySQL_Password_Field pass
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types PHP_MD5
require valid-user

Pierwszą linijką definiujemy która strona ma być wyświetlana podczas, gdy dostęp jest zabroniony.
Druga linijka nazywa “okienko” uwierzytelniania.
Trzecia linijka włącza moduł.
Czwarta linijka wybiera bazę MySQL.
Piąta linijka wybiera komputer / serwer / host (jak zwał tak zwał Wink ).
Szósta linijka wybiera użytkownika do bazy.
Siódma linijka definiuje hasło użytkownika bazy.
Ósma linijka definiuje tabelę z danymi uwierzytelnionych czytelników witryny.
Dziewiąta i dziesiąta linijka definiuje pole w tabeli, gdzie ma szukać loginu i hasła podawanego przez czytelnika.
Jedenasta linijka zabrania podania pustego hasła.
Dwunasta linijka definiuje hashowanie haseł za pomocą mechanizmu MD5 (wartością domyślną jest hashowanie przez Unixowski DES).
Trzynasta linijka zezwala dostęp dla poprawnie zalogowanego czytelnika.

Dodatki do modułu znajdziemy tutaj: http://sourceforge.net/tracker/?group_id=60218&atid=493464
Można tam znaleźć m.in patch do Apache 2.2.

4. Zaczynamy pracę z mod_auth_mysql.

mod_auth_mysql zainstalowany, skonfigurowany, przetestowany poprawnie. Co teraz?
Teraz możemy tworzyć np. panel administratora do katalogu z plikiem .htaccess, ponieważ uwierzytelnianie włączone.

Jednak muszę Cię ostrzec, że własne mechanizmy uwierzytelniania napisane za pomocą np. PHP i MySQL często bywają lepsze od tego modułu.
Na minus korzystania z niego wpływa:

  1. konieczność instalacji na serwerze dodatków (nie zawsze jest taka możliwość)
  2. brak integracji ze stroną
  3. dodatkowe obciążanie zarówno serwera jak i klienta
  4. brak możliwości personalnego rozwoju systemu uwierzytelnia

Jednak na plus wpływa fakt, że bardzo trudno jest zcrackować taką stronę.

5. A pod Windows?

Co tutaj się dużo rozpisywać? Szczegóły na temat tego jak zastosować mod_auth_mysql znajdziecie tutaj : http://modauthmysql.sourceforge.net/HowToBuildForWindows.zip

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie