Download presentation
Presentation is loading. Please wait.
Published byThomas Silva Canto Modified over 6 years ago
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
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:
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.