ASP Tip: Jak na autorizaci

Často se objeví potřeba mít zabezpečeny stránky heslem. Pokud používáte Internet Information Server, tento článek vám poradí, jak využít databázi uživatelů Windows NT.
Často se objeví potřeba mít zabezpečeny stránky heslem. Pokud používáte Internet Information Server, můžete snadno naprogramovat ASP stránky, které budou přístupny pouze určitým uživatelům.

Samozřejmě nejjednodušší je nastavit fyzicky omezená práva na NTFS filesystému. Standardně jsou požadavky anonymních klientů pokládány pod autorizací uživatele IUSR_jméno-počítače. Pokud ovšem k nějakému zdroji (tj. adresáři, dokumentu nebo obrázku) zakážete přístup uživateli IUSR, objeví se uživateli okno s požadavkem na přihlášení. Pokud má uživatel na daném počítači (serveru) účet, může jej použít a v případě dostatečných přístupových práv se daný dokument načte.

Nicméně někdy je třeba využít poněkud pružnějších metod pro autentifikaci uživatele. Pokud je vaše aplikace tvořena prostřednictvím Active Server Pages, vystačíte s několika příkazy a znalostmi základů HTTP protokolu.

Když klient pošle web serveru požadavek na dokument, vrátí se mu nejdříve číselný kód, který indikuje, jak byla žádost vyřízena. Nejčastější je kód 200 - OK, tedy že požadavek byl přijat, dokument existuje a bude vyřízen. Kódy začínající číslicí 4 značí chybu. Častý je též případ, kdy server vrátí 404 - Object not found, tedy že daný dokument neexistuje. Kód 403 - Forbidden sděluje, že nemá povoleno poskytnout klientovi to, po čem touží. A že neexistuje žádný způsob, jak toho dosáhnout. Když se například pokusíte podívat na výpis adresáře s obrázky na tomto serveru (http://zive.cpress.cz/gfx/), vrátí se vám právě 403.

Pro nás je však nejpoužitelnější hlášení 401 - Unauthorized. Pokud klient obdrží toto hlášení, zobrazí na obrazovce okno s výzvou pro zadání loginu a hesla. Tuto informaci odešle serveru a server buď pustí uživatele dál, nebo znovu vrátí chybu 401.

Využitím této metody lze vynutit přihlášení uživatele. Aktuální identifikace je uložena v serverové proměnné LOGON_USER (o serverových proměnných se blíže dočtete v jiném článku). Vynutit přihlášení si můžete pomocí Response.Status = "401 Unauthorized". Následuje kód ASP stránky, která si vynutí přihlášení uživatele a pak zobrazí jeho uživatelské jméno.


  If Request.ServerVariables("LOGON_USER") = "" Then
  Response.Status = "401 Unauthorized"
  Response.Write "Musíte se přihlásit."
  Response.End
  Else
  Response.Write "Jste přihlášen jako " &
  Request.ServerVariables("LOGON_USER")
  End If
  

V případě, že uživatel nezadá platné jméno a heslo, objeví se mu "Musíte se přihlásit", jinak mu skript sdělí jeho login.

Uživatelské jméno se zapisuje ve formátu \, kde je název NT domény (případně jméno počítače, pokud se nehlásíte do domény). Uživatel Valasek na počítači MATRIX bude tedy zaznamenán jako MATRIX\Valasek.

Jméno uživatele oddělíte od domény jednoduchým trikem - využitím funkce InStr, která je vestavěna v jazyce VBScript. Následující funkce GetUserName() a GetUserDomain() vrátí uživatelské jméno a doménu právě přihlášeného uživatele.


  Function GetUserName()
  Dim UserID
  UserID = Request.ServerVariables("LOGON_USER")
  GetUserName = Right(UserID, Len(UserID) - InStr(UserID, "\"))
  End Function
  
  Function GetUserDomain()
  Dim UserID
  UserID = Request.ServerVariables("LOGON_USER")
  GetUserDomain = Left(UserID, InStr(UserID, "\") - 1)
  End Function
  

Napsání rutiny kontrolující příslušnost uživatele k patřičně privilegované skupině je pak už jenom dílem okamžiku.
  

Váš názor Další článek: Dvakrát policie na Internetu – jednou u nás, jednou ve Švýcarsku

Témata článku: Software, Internet, Programování, Autor, Uživatelské jméno, Matrix, Přihlášení, Login

Určitě si přečtěte


Aktuální číslo časopisu Computer

Test 6 odolných telefonů a 22 powerbank

Srovnání technologií QLED a OLED

Měřte své sportovní výkony

Sady pro chytrou domácnost