|
|
ASP.NET QuickStart Príručka
Autentifikácia založená na formách
Autentifikácia založená na formách je autentizačná služba ASP.NET, ktorá umožňuje
aplikácii poskytovať ich vlastné prihlasovacie UI a implementovať vlastnú verifikáciu prihlasovacích údajov.
ASP.NET autentizuje používateľov, smeruje neautentizovaných používateľov na prihlasovaciu stránku a vykonáva
nevyhnutnú správu cookies. Forms autentifikácia je populárna technika použitá širokým množstvom webových stránok.
Aplikácia musí byť správne nastavená, aby mohla použiť autentifikáciu založenú na formách
nastavením <authentication> na Forms a zakázaním
prístupu anonymných používateľov. Uvedený príklad ukazuje, ako správne nastaviť
súbor web.config, aby ste dosiahli želané výsledky:
<configuration>
<system.web>
<authentication mode="Forms"/>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
Administrátori používajú autentifikáciu založenú na formách na konfigurovanie
názvu cookie, ktorý sa má použiť, typu zabezpečenia, použitia URL na prihlasovaciu stránku, na určenie
doby platnosti cookie a na určenie cesty pre vydaný cookie. Nasledujúca tabuľka ukazuje platné atribúty pre element
<Forms>, ktorý je sub-elementom elementu<authentication> ukázaného v nasledujúcom príklade:
<authentication mode="Forms">
<forms name=".ASPXCOOKIEDEMO" loginUrl="login.aspx" defaultUrl="default.aspx"
protection="All" timeout="30" path="/" requireSSL="false"
slidingExpiration="true" enableCrossAppRedirects="false"
cookieless="UseDeviceProfile" domain="">
<!-- protection="[All|None|Encryption|Validation]" -->
<!-- cookieless="[UseUri | UseCookies | AutoDetect | UseDeviceProfile]" -->
</forms>
</authentication>
| Atribút |
Popis |
| cookieless |
Autentifikácia založená na formách v ASP.NET 2.0 môže uložiť autentizačný tiket
buď do cookie, alebo do URL (reprezentácia bez použitia cookie).
Štandardná hodnota UseDeviceProfile znamená, že ASP.NET sa rozhodne,
kam uložiť autentizačný tiket podľa nastavení prehliadača stránky
Možnosť AutoDetect spôsobí, že ASP.NET dynamicky zistí, či prehliadač podporuje cookie, alebo nie
Možnosti UseUri a UseCookies vynucujú použitie alebo nepoužitie cookie pri autentifikácii. |
| defaultUrl |
Určuje štandardné URL, kam presmerovať žiadosť po úspešnom prihlásení.
Hodnota sa používa, ak forms autentifikácia nemá k dispozícii URL, na ktoré sa presmerovať.
|
| domain |
Určuje hodnotu vlastnosti Domain na
HttpCookie obsahujúcom tiket pre forms autentifikáciu.
Explicitné nastavenie atribútu umožní aplikácii zdieľať ten istý cookie
ak s ňou ďalšia aplikácie zdieľa časť priestoru mien DNS
(napr. appA.contoso.com a appB.contoso.com môžu zdieľať cookie ak atribút domain je nastavený na "contoso.com").
|
| enableCrossAppRedirects |
V ASP.NET 2.0, autentifikácia založená na formách vám umožní odovzdať autentizačný tiket
medzi aplikáciami buď ako premenná query-stringu, alebo ako premenná POST formy.
Nastavenie atribútu na true umožní FormsAuthenticationModule extrahovať tiket
buď z query-stringu, alebo z POST premenných.
|
| loginUrl |
Určuje URL, kam majú byť presmerované požiadavky neautentizovaných používateľov. Môže sa nachádzať na tom istom
počítači, alebo na vzdialenom. Ak ide o vzdialený počítač, obidve stanice musia zdieľať hodnoty atribútov
decryptionkey a validationKey, ktoré sa nachádzajú v konfiguračnom elemente machineKey.
|
| name |
Určuje meno HTTP cookie, ktoré má byť použité pre účely autentifikácie. Uvedomte si, že
ak chce viac ako jedna aplikácia využiť služby autentifikácie založenej na formách na tom istom počítači,
a každá aplikácia chce vlastný autentifikačný cookie, každá musí nastaviť jedinečné meno pre svoj cookie.
Aby sa predišlo tvorbe závislostí v URL, ASP.NET používa "/" ako hodnotu vlastnosti Path, keď nastavuje
autentizačné cookies, ktoré sú potom zaslané späť každej aplikácii na stránke.
|
| path |
Cesta, ktorá sa používa pre vydané cookie. Štandardná hodnota je "/" aby
sa predišlo problémom s casingom (veľké a malé písmená v ceste), pretože všetky
prehliadače sú striktne case-sensitive (rozlišujú veľké a malé písmená) keď vracajú cookies.
Aplikácie v prostredí zdieľaných serverov by mali používať direktívu path na udržovanie
privátnych cookies. (Alternatívne, môžu určiť cestu počas behu programu použitím API na vydávanie cookies)
|
| protection |
Metóda používaná na ochranu cookies. Platné hodnoty sú:
- All: Používa sa dátová validácia aj šifrovanie na ochranu cookie. Algoritmus validácie dát je založený na
elemente<machinekey>. AES sa používa ako štandard pri šifrovaní, kde kľúč je dostatočne dlhý (aspoň 48 znakov).
All je štandardná (a odporúčaná) hodnota.
- None: Použite pri stránkach v ktorých sa cookies používajú len
na personalizáciu a majú nízke bezpečnostné požiadavky. Kde šifrovanie aj validácia môžu byť vypnuté.
Mali by ste byť opatrný, ak používate cookies týmto spôsobom. Uvedený spôsob je najvýkonnejší zo všetkých metód personalizácie v knižnici .Net Framework.
- Encryption: Šifruje cookie prostredníctvom AES, 3DES alebo DES,
dátova validácia sa ale nerealizuje. Tento typ cookie je náchylný na chosen plaintext útoky.
- Validation: Nešifruje obsah cookie, ale overuje či údaje neboli zmené počas prenosu.
Pri tvorbe cookie je validačný kľúč zlúčený s cookie. Vypočíta sa MAC, ktorá sa pridáva na koniec odchádzajúceho cookie.
|
| requireSSL |
Ak je nastavený na true, Forms autentifikácia pridá bezpečnostný byt do
autentizačného cookie. Prehliadače, ktoré podporujú SSL, pošlú cookie naspäť len
prostredníctvom SSL spojenia. Spomínané nastavenie nemá vplyv na cookieless autentifikáciu.
|
| slidingExpiration |
Ak je nastavený na true, Forms autentifikácia periodicky aktualizuje
čas žitia autentizačného tiketu. Ku aktualizácii dôjde bez ohľadu na to, či je
tiket obsiahnutý v cookie, alebo v cookieless forme (URL formát).
|
| timeout |
Časové obdobie v minútach, po ktorom platnosť cookie vyprší.
Štandardná hodnota je 30. Timeout je hodnota, ktorá závisí od času poslednej požiadavky. Aby ste
nepriaznivo neovplyvnili výkon a aby ste sa vyhli varovaniam prehliadača, ak máte zapnuté cookie warnings,
cookie sa aktualizuje ak je čas jeho žitia menší ako polovica pôvodného času.
|
Po tom, ako bola aplikácia nastavená, musíte poskytnúť prihlasovaciu stránku. Nasledujúci príklad ukazuje jednoduchú
prihlasovaciu obrazovku. Keď sa príklad spustí, vyžiada si stránku Default.aspx. Neautentizované požiadavky sa presmerujú
na prihlasovaciu stránku (Login.aspx), ktorá má formu jednoduchého formulára, ktorý vyžaduje mailovú adresu a heslo
(použite Username="someone@www.contoso.com" a Password="password" ako prihlasovacie údaje)
Po overení platnosti prihlasovacích údajov, aplikácia zavolá nasledujúci kód:
FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookie.Checked)
VB
Kód presmeruje používateľa naspäť na originálne požadované URL. Aplikácie, ktoré nechcú
vykonať presmerovanie, môžu volať buď FormsAuthentication.GetAuthCookie na získanie
hodnoty cookie, alebo FormsAuthentication.SetAuthCookie na pripojenie správne zašifrovaného
cookie ku odchádzajúcej odpovedi. Spomínané techniky môžu byť užitočné v aplikáciách, ktoré
poskytujú prihlasovacie UI zahrnuté v sránke spolu s obsahom, alebo kde je potrebná výraznejšia
kontrola nad tým, kam budú používatelia presmerovaní.
Autentizačné cookies môžu byť dočasné, alebo trvalé ("persistent").
Dočasné cookies trvajú len počas trvania session prehliadača. Keď sa browser uzatvorí,
cookie je stratené. Trvalé cookies prehliadač ukladá a posielajú sa späť až pokým nie sú explicitne
vymazané používateľom, alebo kým nevyprší čas ich žitia.
Čas žitia pre dočasné aj trvalé cookies je určený konfiguračným atribútom
timeout. Došlo k miernej zmene oproti správaniu minulých verzii ASP.NET, kde mali
perzistentné cookies nastavený čas žitia na 50 rokov. V ASP.NET 2.0 majú dočasné aj trvalé cookies
nastavený čas žitia hodnotou konfiguračného atribútu timeout.
VB Forms-Based/Cookie Authentication
Autentizačný cookie použitý autentifikáciou založenou na formách pozostáva zo serializovanej verzie
triedy System.Web.Security.FormsAuthenticationTicket . Informácia pozostáva z používateľského mena (nie hesla),
verzie forms autentifikácie, dátumu vydania cookie a poľa aplikačne-špecifických údajov.
Aplikačný kód môže odvolať, alebo odstrániť autentizačné cookies použitím metódy
FormsAuthentication.SignOut . Volanie odstráni autentifikačný cookie
bez ohľadu na to, či je dočasný, alebo trvalý.
Existuje možnosť poskytnúť autentizačným službám zoznam platných prihlasovacích údajov
použitím konfiguračného súboru tak, ako je zobrazené v príklade:
<authentication>
<credentials passwordFormat="SHA1" >
<user name="Mary" password="94F85995C7492EEC546C321821AA4BECA9A3E2B1"/>
<user name="John" password="5753A498F025464D72E088A9D5D6E872592D5F91"/>
</credentials>
</authentication>
Môžete vytvoriť transformovanú reprezentáciu (hash) hesla použitím metódy
FormsAuthentication.HashPasswordForStoringInConfigFile(String password, String passwordFormat) API.
Metóda podporuje tvorbu transformovaných hodnôt použitím buď SHA1 alebo MD5.
Aplikácia potom môže zavolať metódu FormsAuthentication.Authenticate,
ktorej poskytne meno a heslo, a ASP.NET automaticky verifikuje prihlasovacie údaje.
Údaje môžu byť v závislosti od atribútu passwordFormat uložené ako otvorený text, alebo ako odtlačky SHA1 resp. MD5:
| Typ transformácie (hash) |
Popis |
| Clear |
Heslá sú uložené ako otvorený text |
| SHA1 |
Heslá sú uložené ako odtlačky SHA1 |
| MD5 |
Heslá sú uložené ako odtlačky MD5 |
|
|