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í, Uživatelské jméno, Přihlášení, Matrix, Login, Autor


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

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

** Vědci spočítali, jak velká by musela být posádka pro vícegenerační let k nejbližší hvězdné soustavě ** Proxima Centauri se nachází 4,3 světelných let od nás ** Za současných technologií bychom k ní letěli 6300 let

Petr Kubala | 53

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

** Dlouho se nevědělo, co to přesně má být ** Pak se s krabičkou Google pochlubil na I/O ** Do „Chromecastu“ vtěsnal celý Android TV

Jakub Čížek | 24

Apple: naše mapy budou nejlepší na světě. Tajně jsme na nich pracovali několik let

Apple: naše mapy budou nejlepší na světě. Tajně jsme na nich pracovali několik let

** Apple odhalil své plány na zcela nové mapy ** Několik let pracuje na nových mapách, které by měly předběhnout konkurenci ** Objeví se s příchodem iOS 12 pro vybrané státy

Karel Javůrek | 50

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

** Microsoft představil nový tablet Surface Go ** Nový model zaujme nízkou cenou, ale schopnostmi zařízení Surface ** Microsoft nepoužil čip ARM, ale klasický procesor od Intelu 

Karel Javůrek | 116

Apple dal do MacBooku procesor Core i9 a 4TB SSD. Ani se neptejte, co za to chce...

Apple dal do MacBooku procesor Core i9 a 4TB SSD. Ani se neptejte, co za to chce...

** Apple aktualizoval notebooky MacBook Pro, dostaly nový hardware ** Těšit se můžete na nové procesory a větší paměť ** Cena nejvybavenějšího modelu překročí 200 tisíc korun

Martin Miksa | 99

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

** Čeští vědci pod vedením Tomáše Jungwirtha vyvíjí nový typ revolučního paměťového čipu ** Zatímco v současnosti elektronika pracuje s elektrony, v budoucnu to budou spiny elektronů ** Čipy budou moci být klidně i 1 000x rychlejší a úspornější

Karel Javůrek | 32


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji