Presentation is loading. Please wait.

Presentation is loading. Please wait.

Autentifikácia a autorizácia v .NET Frameworku 4.5 od základu

Similar presentations


Presentation on theme: "Autentifikácia a autorizácia v .NET Frameworku 4.5 od základu"— Presentation transcript:

1 Autentifikácia a autorizácia v .NET Frameworku 4.5 od základu
Slavomír Furman @slavof

2 Úvod Identita – reprezentácia entity v aplikácii. Súbor informácii o entite. Spôsoby práce s identitou v aplikácii: Autentifikácia (overenie identity) Autorizácia (overenie oprávnenia prístupu k zdrojom) Customizácia (prispôsobenie aplikácie) CRM (customer relation managment)

3 Agenda Prvá časť Druhá časť
Pôvodná role-based implementácia práce identitou Nová claims-based implementácia práce s identitou Služby a APIs na prácu s claims based identitou Druhá časť Externalizácia autentifikácie Zložitejšie scenáre pri práci s autentifikáciou Claims-based práca s identitou v Microsoft Azure

4 Kedysi dávno pred mnohými rokmi....

5 Thread.CurrentPrincipal
miesto na uloženie security contextu používateľa thread static property filozofia „infraštruktúra nastaví, logika používa“ ... Infraštruktúra alebo start-up kód Thread.CurrentPrincipal Operácia 1

6 Štandardné .NET Principal triedy
WindowsPrincipal Windows account aktuálneho procesu (desktop aplikácie) alebo Windows account aktuálneho klienta (server aplikácie) Prístup k Windows funkcionalite var winId = WindowsIdentity.GetCurrent(); alebo var winId = HttpContext.User; GenericPrincipal Reprezentuje custom identitu Obvykle nastavované start-up kódom aplikácie

7 Role-based autorizácia
Metóda bool IPrincipal.IsInRole() – abstrakcia nad Windows skupinami a custom rolami Je možné ju volať tromi spôsobmi: manuálne PrincipalPermission[Attribute] </authorization> element vo web.config

8 Demo WindowsPrincipal & GenericPrincipal

9 Problém prvý – s autorizáciou
Rozhodovanie len na základe toho, či je niekto v nejakej role často nestačí. Potrebujeme jemnejšie rozlíšenie... Rôzne security systémy: groups/roles permissions/priviledges špecializované (napr. Bell LaPadula)

10 Problém druhý – s autentifikáciou

11 Prvé priblíženia k riešeniu

12 Claims Claim – Niekým vyrieknuté tvrdenie o entite
(niekto tvrdí niečo o niekom) Príklady: Bob je administrátor Bob má ové adresu Alica môže pridať produkt do katalógu Alica môže schvaľovať dokumenty označené ako „confidential“

13 Claims Claims – Dostatočne všeobecný a dostatočne silný mechanizmus, ktorý dovoľuje popísať (modelovať) identitu pomocou kolekcie key/value hodnôt. Príklad: BadgetLimit/1000 DocumentReadLevel/Public DocumentReadLevel/Department WebProductCatalog/AddProduct Name/Bob Role/User Role/Management Office/220A

14 Claim – implementácia

15 ClaimsIdentity & ClaimsPrincipal

16 .NET Framework 4.5

17 Nová hierarchia tried dediacich z IIdentity

18 Nová hierarchia Principal tried

19 Generalizácia a špecializácia

20 Demo ClaimsPrincipal

21 ClaimsIdentity & ClaimsPrincipal
ClaimsIdentity – kontajner pre claims ClaimsPrincipal – kontajner pre claims/based identity. Obsahuje query mechanizmus fungujúci naprieč identitami Ďalšie .NET security API sú založené na ClaimsPrincipal triede ClaimsPrincipal.Current je nový Thread.CurrentPrincipal

22 Podpora rôznych credentials a token formátov
Unifikácia rôznych credentials a token formátov a ich tranformácia do ClaimsPrincipal reprezentácie. Priama podpora pre: Windows / Kerberos Forms Authentication HTTP basic authentication SSL client certificates WS-Security tokens SAML Možnosť rozšíriť o ďalšie formáty

23

24 Služby a APIs nad ClaimsPrincipal
Claims validácia a transformácia Podpora Authentication session Claims-based autorizácia Podpora protokolov na externalizáciu autentifikácie Standard authn/authz processing pipeline

25 Standard authn/authz processing pipeline
Credentials/Token

26 Standard authn/authz processing pipeline
Credentials/Token

27 ASP.NET processing pipeline

28 Demo Transformácia credentials na claims

29 Standard authn/authz processing pipeline
Credentials/Token

30 Claims Transformation
Implementujeme v triede dedenej z triedy ClaimsAuthenticationManager, preťažujeme metódu Authenticate Konverzia tzv. technickej identity na aplikačnú identitu Je odporúčané vytvoriť nový ClaimsPrincipal objekt Príležitosť zneplatniť autentifikáciu ak nie je možné vytvoriť aplikačnú identitu

31 Demo Claims Transformation

32 Standard authn/authz processing pipeline
Credentials/Token

33 Security Session Management
Mechanizmus na uchovanie ClaimsPrincipal objektu medzi opätovnými požiadavkami na jeho vytvorenie Cookies v ASP.NET (trieda SessionAuthenticationHttpModule) WS-SecureConversation vo WCF Rozširovateľný mechanizmus. Možno implementovať ďalšie služby ako: session token protection Podpora pre web farmy Round trip optimalization

34 Demo Security Session Management

35 Standard authn/authz processing pipeline
Credentials/Token

36 Claims Authorization Implementujeme v triede dediacej z ClaimsAuthorizationManager, preťažujeme metódu CheckAccess Tu možno centralizovaným spôsobom aplikovať autorizačné pravidlá. Metóda CheckAccess môže byť automatickým spôsobom aktivovaná počas spracovania požiadavky: pri HTTP metóde/URL (ASP.NET) Pri SOAP metóde/URL (WCF)

37 Demo Claims Authorization

38 Podpora pre externalizáciu autentifikácie
Podpora protokolov WS-Federation (web aplikácie) WS-Trust a WS-Security (web služby) OAuth2 (pre web API) Podpora pre SAML formát security tokenov .NET 4.5 obsahuje triedy/podporu pre napísanie vlastného Service Token Servisu Táto podpora umožňuje realizovať aj náročné scenáre ako Federation viacerých Identity providerov a Single Sign-on

39 Zhrnutie Claims-based identity model je novým .NET security modelom
Tým, že claims boli zahrnuté do bázových tried, vo všetkých aplikáciach k nim máme prístup Integrácia s hlavnými aplikačnými frameworkami – ASP.NET a WCF Standard authn/authz processing pipeline. Tri základné mechanizmy: Konvertovanie security tokenov / credentials na claims (a naopak) Claims Transformation Claims-based authorization Podpora protokolov a token formátov pre externalizáciu autentifikácie

40 Externá autentifikácia pomocou WS-Federation
Novinka v .NET Frameworku 4.5 Výhody: Centralizácia autentifikačnej logiky na jednom mieste Môže ju použiť viacero aplikácii Možnosť realizácie zložitejších scenárov ako podpora viacerých autentifikačných mechanizmov súčasne, znovupoužitie existujúcej logon session (Single Sign-On), podpora viacerých Identity Providerov súčasne (Federation) Spôsob použitia: Nakonfigurujeme externý Identity Provider Nakonfigurujeme našu aplikáciu

41 Externá autentifikácia – ako to funguje?
Security Token Service Cloud 3 4 Token 5 Client 2 1 Relying Party

42 SAML (Security Assertion Markup Language) token

43 Externá autentifikácia – WS-Federation
Security Token Service GET /wsfed GET / Client POST / Relying Party

44 Security Token Service
Vývoj vlastného STS VisualStudio ponúka base triedy pre vývoj vlastného STS Počas vývoja aplikácii používajúcich STS možno použiť „Development STS“ – Visual Studio 2012 extension Thinktecture Identity Server (open source) ( POZOR! Ide o vývoj KRITICKY dôležitej security infraštruktúry!

45 Security Token Service
Komerčné produkty Microsoft Active Directory Federation Service v2 IBM Tivoli Federation Manager Oracle Identity Manager Ping Federate Windows Azure Access Control Service (Federation Gateway, Resource STS) Windows Azure Active Directory

46 Konfigurácia ASP.NET aplikácie
Zrušíme zabudovanú autentifikáciu Pridáme WSFederationAuthentication a SessionAuthentication moduly

47 Federation Metadata XML dokument obsahujúci popis Security Token Servisu Takmer všetky potrebné konfiguračné nastavenia Relying Party aplikácie sa dajú odvodiť z týchto metadata údajov

48 Federation Configuration
Nastavujeme: Login URL Identifikáciu aplikácie Spôsob práce s redirectami

49 STS Trust Configuration
Chceme akceptovať len token vydaný niekým komu dôverujeme Token musí byť podpísaný certifikátom majúcim tu špecifikovaný thumbprint Hodnota pri „name“ bude použitá ako „Issuer“ property pri claims Dá sa nastaviť aby bol certifikát, ktorým bol podpísaný token, kompletne validovaný

50 Token Validation Configuration
Identifikátor aplikácie, pre ktorú je token určený je uvedený v rámci tokenu. Tu nastavujeme, že akceptujeme len token vydaný pre špecifikovanú aplikáciu.

51 Demo Externá autentifikácia

52 Single Sign-On Jednoduché rozšírenie konceptu externej autentifikácie
Jedného Identity Providera (STS) používa viacero aplikácii (Relying Party) Pri prvej autentifikácii voči danému STS vytvoríme logon session („remember me“, „stay signed in“, ...) Počas trvania danej logon session sú naše requesty autentifikované (a je nám vydaný token) bez nutnosti znova sa overiť voči danému STS

53 Single Sign-Out Security Token Service GET /wsfed Client

54 Demo Single Sign-In & Sign-Out

55 Federation voči viacerým Identity Providerom
Je výhodné ak je aplikácia (Relying Party) konfigurovaná len voči jednému Identity Providerovi (t.j. používa na autentifikáciu len jeden protokol, jeden token type, jednu claims transformation logiku, ...) Odporúčaným riešením je použiť tzv. „Resource STS / Federation Gateway pattern“.

56 Ďakujem za pozornosť. Materiály k prezentácii:


Download ppt "Autentifikácia a autorizácia v .NET Frameworku 4.5 od základu"

Similar presentations


Ads by Google