AspNet.sk     Diskusné fóra     Vitajte v QuickStarts     ASP.NET     Silverlight     Ako môžem...? (en)     Class prehliadač Príklady chcem v ...   
Menu
Skip Navigation Links.
Späť na ASP.NET príručku

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
Run Sample View Source

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
Microsoft .NET Framework SDK QuickStart Tutorials Version 2.0
Copyright © 2005 Microsoft Corporation. All rights reserved.
Preklad do slovenského jazyka - Copyright © 2005 - 2007 www.aspnet.sk, www.qsh.sk
Pošlite komentár k tejto stránke
Copyright © 2002 - 2008 Chastia, spol. s r. o., Igor Stanek, Designed by Lacino
Portál je hostovaný na serveroch firmy Quantasoft - www.qsh.sk.