iD-SIGN
Ptejte se

HTTP Basic Auth s Apache serverem a .htaccess

Jednoduchý a rychlý způsob jak schovat webové stránky za přihlášení, pokud máme webový server Apache.

2 min čtenívydáno 7/2021

Při vývoji webových stránek je občas nutné schovat je jako celek za nějaké jednoduché přihlášení. Může to být z testovacích důvodů nebo v situacích, kdy se nevyplatí vyvinout složitější autentikační mechanismus.

Nastavení HTTP Basic Authentication je velmi jednoduché a rychlé. V podstatě nám stačí pouze vygenerovat si soubor s přihlašovacími údaji a vložit pár řádků do konfigurace Apache - ať už přímo do definice Virtualhostu nebo do souboru .htaccess.

Soubor s přihlašovacími údaji vytvoříme příkazem htpasswd přímo na serveru (online generátory nepoužívejte – heslo byste tím poslali cizí službě):

bash
$ htpasswd -cB .htpasswd username

Příkaz si heslo dvakrát vyžádá a soubor .htpasswd vytvoří přímo v aktuálním adresáři – heslo tak nezůstane v historii příkazů. Použité parametry -cB definují:

  • c - požadovaný soubor chceme vytvořit; pokud už existuje, bude přepsán
  • B - heslo uložíme jako hash bcrypt

Poté již zbývá pouze nastavit vyžadování autentikace v Apache serveru, kde musí být zapnutý auth_basic modul. Pokud jej nemáme zapnutý a máme root přístup, lze jej jednoduše zapnout příkazem:

bash
a2enmod auth_basic

Vlastní kód pro nastavení autentikace je možné vložit do definice Virtualhostu do direktivy <Directory>:

apache
<Directory /some/path>
    ...
    AuthType Basic
    AuthName "Login required"
    AuthUserFile /absolute/path/to/.htpasswd
    Require valid-user

    # Pokud chcete povolit přihlášení pouze konkrétnímu uživateli
    # Require user username
</Directory>

Je důležité nastavit cestu k autentikačnímu souboru jako absolutní.

Pokud jej budeme vkládat do .htaccessu, je nutné zkontrolovat, že pro daný <Directory> máme povolenou změnu nastavení v htaccessu. Direktivu AllowOverride musíme nastavit buďto na AuthConfig nebo All:

apache
<Directory /some/path>
    ...
    AllowOverride AuthConfig
</Directory>

Poté stačí do .htaccessu přidat:

apache
AuthType Basic
AuthName "Login required"
AuthUserFile /absolute/path/to/.htpasswd
Require valid-user

Basic Authentication v Apache serveru nabízí samozřejmě mnohem více funkcí a možností nastavení. Kompletní dokumentaci si lze projít v oficiální dokumentaci

Sdílet LinkedIn Facebook

Potřebujete víc než článek?

Zkuste se nám nezávazně ozvat – stačí několik vět o tom, co řešíte.