Sdílet prostřednictvím


Správa deklarací a autorizace s modelem identity

Autorizace je proces určení entit, které mají oprávnění ke změně, zobrazení nebo jinému přístupu k prostředku počítače. Například v podniku můžou mít přístup k souborům svých zaměstnanců jenom manažeři. Windows Communication Foundation (WCF) podporuje dva mechanismy pro zpracování autorizace. První mechanismus umožňuje řídit autorizaci pomocí existujících konstruktorů CLR (Common Language Runtime). Druhým je model založený na deklarací identity, který se označuje jako model identity. WCF používá model identity k vytváření deklarací identity z příchozích zpráv; Třídy modelu identit je možné rozšířit tak, aby podporovaly nové typy deklarací identity pro vlastní schémata autorizace. Toto téma představuje přehled hlavních programovacích konceptů funkce Modelu identit a také seznam nejdůležitějších tříd, které funkce používá.

Scénáře modelu identit

Následující scénáře představují použití modelu identity.

Scénář 1: Podpora deklarací identity, rolí a skupin

Uživatelé posílají zprávy do webové služby. Požadavky na řízení přístupu webové služby používají identitu, role nebo skupiny. Odesílatel zprávy je mapován na sadu rolí nebo skupin. Informace o rolích nebo skupinách slouží k provádění kontrol přístupu.

Scénář 2: Podpora bohatých deklarací identity

Uživatelé posílají zprávy do webové služby. Požadavky na řízení přístupu webové služby vyžadují bohatší model než identita, role nebo skupiny. Webová služba určuje, jestli má daný uživatel přístup k určitému chráněnému prostředku pomocí modelu založeného na bohatých deklaracích. Jeden uživatel může například číst konkrétní informace, například informace o platu, ke kterým nemají přístup jiní uživatelé.

Scénář 3: Mapování různorodých deklarací identity

Uživatel odešle zprávu webové službě. Uživatel může zadat své přihlašovací údaje několika různými způsoby: certifikát X.509, token uživatelského jména nebo token Kerberos. Webová služba je nutná k provádění kontrol řízení přístupu stejným způsobem bez ohledu na typ přihlašovacích údajů uživatele. Pokud se v průběhu času podporují další typy přihlašovacích údajů, měl by se systém odpovídajícím způsobem vyvíjet.

Scénář 4: Určení přístupu k více prostředkům

Webová služba se pokusí získat přístup k více prostředkům. Služba určuje, ke kterým chráněným prostředkům má daný uživatel přístup, porovnáním deklarací identity přidružených k uživateli s deklaracemi požadovanými pro přístup k prostředku.

Podmínky modelu identit

Následující seznam definuje klíčové termíny používané k popisu konceptů modelu identit.

Zásady autorizace
Sada pravidel pro mapování sady vstupních deklarací na sadu výstupních deklarací. Vyhodnocení zásad autorizace vede k přidání sad deklarací do kontextu vyhodnocení a následnému autorizačnímu kontextu.

Kontext autorizace
Sada sad deklarací identity a nula nebo více vlastností. Výsledek vyhodnocení jedné nebo více zásad autorizace

Deklarace identity
Kombinace typu deklarace identity, práva a hodnoty.

Sada deklarací identity
Sada deklarací identity vystavených konkrétním vystavitelem.

Typ deklarace identity
Druh nároku. Deklarace identity definované rozhraním API modelu identity jsou vlastnosti ClaimType třídy. Příklady typů deklarací identity poskytované systémem jsou Dns, Email, , Hash, RsaName, Sid, Spn, , System, Thumbprint, Uria X500DistinguishedName.

Kontext vyhodnocení
Kontext, ve kterém se vyhodnocují zásady autorizace. Obsahuje vlastnosti a sady deklarací identity. Jakmile se vyhodnocení dokončí, stane se základem autorizačního kontextu.

Deklarace identity
Deklarace identity, jejíž právo je identita.

Issuer
Sada deklarací identity, která obsahuje aspoň jednu deklaraci identity a považuje se za vystavenou jinou sadu deklarací identity.

Vlastnosti
Sada informací přidružených k kontextu vyhodnocení nebo autorizačnímu kontextu

Chráněný prostředek
Něco v systému, které lze použít, získat přístup nebo jinak manipulovat, pokud jsou splněny určité požadavky.

Right
Schopnost prostředku. Práva definovaná rozhraním API modelu identity jsou vlastnosti Rights třídy. Příklady systémových práv jsou Identity a PossessProperty.

Hodnota
Něco, nad čím se tvrdí právo.

Žádosti

Model identity je systém založený na deklaracích. Deklarace identity popisují možnosti spojené s určitou entitou v systému, často uživatelem tohoto systému. Sadu deklarací identity přidružených k dané entitě si můžete představit jako klíč. Konkrétní deklarace identity definují tvar tohoto klíče, podobně jako fyzický klíč použitý k otevření zámku ve dveřích. Deklarace identity se používají k získání přístupu k prostředkům. Přístup k danému chráněnému prostředku je určen porovnáním deklarací identity potřebných pro přístup k danému prostředku s deklaracemi přidruženými k entitě, která se pokouší o přístup.

Deklarace identity je výraz práva s ohledem na konkrétní hodnotu. Právo může být něco jako "Číst", "Zapisovat" nebo "Provést". Hodnotou může být databáze, soubor, poštovní schránka nebo vlastnost. Deklarace identity mají také typ deklarace identity. Kombinace typu deklarace identity a práva poskytuje mechanismus pro určení schopností s ohledem na hodnotu. Například deklarace identity typu "Soubor" se správnou hodnotou "Číst" nad hodnotou "Biography.doc", označuje, že entita, ke které je taková deklarace identity přidružena, má přístup pro čtení k souboru Biography.doc. Deklarace identity typu "Name" s právem "PossessProperty" nad hodnotou "Martin", označuje, že entita, ke které je taková deklarace identity přidružena, má vlastnost Name s hodnotou "Martin".

I když jsou různé typy deklarací identity a práva definovány jako součást modelu identity, systém je rozšiřitelný a umožňuje různým systémům, které jsou založené na infrastruktuře modelu identit, definovat další typy deklarací identity a práva podle potřeby.

Deklarace identity

Jedním konkrétním právem je identita. Deklarace identity, které mají toto právo, činí prohlášení o identitě entity. Například deklarace identity typu hlavní název uživatele (UPN) s hodnotou someone@example.com a právem Identity označující konkrétní identitu v konkrétní doméně.

Deklarace identity systému

Model identity definuje jednu deklaraci identity: System. Deklarace System identity označuje, že entita je aktuální aplikace nebo systém.

Sady deklarací identity

Model deklarací identity, které představují identitu, je důležitý, protože deklarace identity jsou vždy vydány určitou entitou v systému, i když je tato entita nakonec nějakým konceptem "self". Deklarace identity jsou seskupené jako sada a každá sada má vystavitele. Vystavitel je jen sada deklarací identity. Taková rekurzivní relace musí nakonec končit a každá sada deklarací může být jejím vlastním vystavitelem.

Následující obrázek znázorňuje příklad tří sad deklarací, kde jedna sada deklarací má jako vystavitel jinou sadu deklarací identity, která zase obsahuje sadu systémových deklarací identity jako jejího vystavitele. Proto sady deklarací identity tvoří hierarchii, která může být libovolně hluboko.

Sets of claims within the hierarchy.

Několik sad deklarací identity může mít stejnou vydávající sadu deklarací identity, jak je znázorněno na následujícím obrázku:

Multiple sets of claims with the same issuing claim set.

S výjimkou sady deklarací identity, která je jejím vlastním vystavitelem, model identity neposkytuje žádnou podporu sad deklarací identity k vytvoření smyčky. Proto situace, kdy je sada deklarací A vydána sadou D, která je sama vydána sadou D, nemůže vzniknout nikdy. Model identity také neposkytuje žádnou podporu pro sady deklarací identity, aby měly více vystavitelů. Pokud dva nebo více vystavitelů musí vystavit danou sadu deklarací, musíte použít více sad deklarací identity, z nichž každá obsahuje stejné deklarace identity, ale mít různé vystavitele.

Původ deklarací identity

Deklarace identity můžou pocházet z různých zdrojů. Jedním z běžných zdrojů deklarací identity je přihlašovací údaje prezentované uživatelem, například jako součást zprávy odeslané do webové služby. Systém takové deklarace identity ověří a stanou se součástí sady deklarací identity přidružených k uživateli. Další systémové komponenty mohou být také zdroje deklarací identity, včetně operačního systému, zásobníku sítě, prostředí za běhu nebo aplikace. Vzdálené služby mohou být také zdrojem deklarací identity.

Zásady autorizace

V modelu identit se deklarace identity generují v rámci procesu vyhodnocení zásad autorizace. Zásada autorizace prozkoumá (pravděpodobně prázdnou) sadu existujících deklarací identity a může se rozhodnout přidat další deklarace na základě již existujících deklarací identity a dalších informací, které jsou k dispozici. To poskytuje základ mapování mezi deklaracemi. Přítomnost nebo absence deklarací identity v systému ovlivňuje chování zásad autorizace s ohledem na to, jestli přidává další deklarace identity.

Zásady autorizace mají například přístup k databázi, která zahrnuje narození různých entit používajících systém. Zásady autorizace používají k přidání deklarace identity "Over18" do kontextu. Upozorňujeme, že tato žádost o více než 18 let nezveřejňuje žádné informace o entitě kromě skutečnosti, že je starší než 18 let. Všimněte si, že interpretace deklarace "Over18" závisí na pochopení sémantiky této deklarace identity. Zásada autorizace, která přidala deklaraci identity, rozumí těmto sémantikách na určité úrovni. Kód, který následně zkoumá deklarace identity, které jsou výsledkem vyhodnocení zásad, jsou také informovány o těchto sémantikách.

Daná zásada autorizace může vyžadovat, aby se vyhodnocovala vícekrát, protože když jiné zásady autorizace přidávají deklarace identity, můžou tyto zásady autorizace přidávat ještě více deklarací identity. Model identity je navržený tak, aby pokračoval v vyhodnocování, dokud se do kontextu nepřidají žádné platné zásady autorizace. Toto trvalé vyhodnocení zásad autorizace brání požadavku na vynucení jakéhokoli konkrétního pořadí vyhodnocení s ohledem na zásady autorizace; lze je vyhodnotit v libovolném pořadí. Pokud například zásada X přidá deklaraci identity Z pouze v případě, že zásada A přidala deklaraci identity B, pak pokud je X vyhodnocena jako první, nepřidá deklaraci identity Z. Následně se vyhodnotí A a přidá Deklaraci B. X se pak vyhodnotí podruhé a tentokrát přidá deklaraci identity Z.

Daný systém může mít v platnosti mnoho zásad autorizace.

Stroj pro tvorbu klíčů

Vyhodnocení skupiny přidružených zásad autorizace se podobá použití počítače, který vytváří klíče. Zásady autorizace se vyhodnocují a vygenerují se sady deklarací identity, které tvoří tvar klíče. Jakmile je obrazec klíče hotový, můžete ho použít k pokusu o otevření některých zámků. Tvar klíče je uložen v "kontextu autorizace", který je vytvořen správcem autorizace.

Kontext autorizace

Autorizační manažer vyhodnotí různé zásady autorizace, jak je popsáno, a výsledkem je autorizační kontext (sada sad deklarací identity a některé přidružené vlastnosti). Kontext autorizace je možné prozkoumat a zjistit, které deklarace identity existují v tomto kontextu, vztahy mezi těmito různými deklaracemi (například vydávající sadou deklarací identity) a nakonec je porovnat s některými požadavky, které musí splnit pro přístup k prostředku.

Zámky

Pokud je autorizační kontext (sada deklarací identity) klíč, pak požadavky, které musí být splněny pro udělení přístupu ke konkrétnímu chráněnému prostředku, tvoří zámek, který musí klíč přizpůsobit. Model identit nezformalizuje, jak se takové požadavky vyjadřují, ale vzhledem k povaze systému založené na deklaraci identity zahrnují porovnání deklarací v kontextu autorizace s určitou sadou požadovaných deklarací identity.

Rekapitulace

Model identity vychází z konceptu deklarací identity. Deklarace identity se seskupují do sad a agregují se v kontextu autorizace. Kontext autorizace obsahuje sadu deklarací identity a je výsledkem vyhodnocení jedné nebo více zásad autorizace přidružených ke správci autorizace. Tyto sady deklarací identity je možné prozkoumat a zjistit, jestli byly splněny požadavky na přístup. Následující obrázek znázorňuje vztahy mezi těmito různými koncepty modelu identit.

Managing claims and authorization

WCF a model identit

WCF používá infrastrukturu modelu identit jako základ pro provádění autorizace. Ve WCF ServiceAuthorizationBehavior třída umožňuje zadat zásady autorizace jako součást služby. Tyto zásady autorizace se označují jako externí zásady autorizace a můžou provádět zpracování deklarací na základě místních zásad nebo interakcí se vzdálenou službou. Správce autorizace reprezentovaný ServiceAuthorizationManager třídou vyhodnocuje zásady externí autorizace společně se zásadami autorizace, které rozpoznávají různé typy přihlašovacích údajů (tokeny) a naplní to, co se nazývá autorizační kontext deklarace identity odpovídající příchozí zprávě. Kontext autorizace je reprezentován AuthorizationContext třídou.

Programování modelu identit

Následující tabulka popisuje objektový model používaný k programování rozšíření modelu identity. Všechny tyto třídy existují v oborech System.IdentityModel.Policy názvů nebo v System.IdentityModel.Claims nich.

Třída Popis
Komponenta autorizace Třída modelu identity, která implementuje IAuthorizationComponent rozhraní.
IAuthorizationComponent Rozhraní, které poskytuje jednu vlastnost řetězce jen pro čtení: ID. Hodnota této vlastnosti je jedinečná pro každou instanci v systému, která implementuje toto rozhraní.
AuthorizationContext Autorizační komponenta , která obsahuje sadu ClaimSet instancí s nulovými nebo více vlastnostmi; výsledek vyhodnocení jedné nebo více zásad autorizace.
Claim Kombinace typu deklarace identity, práva a hodnoty. Pravé a hodnotové části jsou omezeny typem deklarace identity.
ClaimSet Abstraktní základní třída. Kolekce Claim instancí.
DefaultClaimSet Zapečetěná třída. Implementace ClaimSet třídy.
EvaluationContext Abstraktní základní třída. Předané zásadám autorizace během vyhodnocování zásad.
IAuthorizationPolicy Rozhraní odvozené a IAuthorizationComponent implementované třídami zásad autorizace.
Rights Statická třída, která obsahuje předdefinované správné hodnoty.

Následující třídy se také používají pro programování modelu identit, ale nejsou nalezeny v System.IdentityModel.Policy oborech názvů nebo System.IdentityModel.Claims obory názvů.

Třída Popis
ServiceAuthorizationManager Třída, která poskytuje metodu – CheckAccessCorek provádění kontrol autorizace na základě deklarací identity pro každou operaci ve službě. Musíte odvodit z třídy a přepsat metodu.
ServiceAuthorizationBehavior Zapečetěná třída, která poskytuje různé vlastnosti související s chováním služby v souvislosti s autorizací.
ServiceSecurityContext Třída, která poskytuje kontext zabezpečení, včetně autorizačního kontextu, pro aktuálně spuštěnou operaci (nebo o spuštění). Instance této třídy je součástí OperationContext.

Významné členy

Následující členy se běžně používají k vytváření nových typů deklarací identity.

Člen Popis
CheckAccessCore Odvozené třídy implementují tuto metodu k provádění kontrol přístupu na základě deklarací před spuštěním operací ve službě. Při rozhodování o kontrole přístupu je možné zkontrolovat všechny a všechny informace v zadaném OperationContextsouboru nebo jinde. Pokud CheckAccessCore se vrátí true, přístup se udělí a operace se může spustit. Pokud CheckAccessCore se vrátí false, přístup je odepřen a operace se nespustí. Příklad najdete v tématu Postupy: Vytvoření vlastního správce autorizace pro službu.
ServiceAuthorizationManager ServiceAuthorizationManager Vrátí hodnotu pro službu. Zodpovídá ServiceAuthorizationManager za rozhodování o autorizaci.
ExternalAuthorizationPolicies Kolekce vlastních zásad autorizace zadaných pro službu. Tyto zásady se vyhodnocují kromě těchto zásad přidružených k přihlašovacím údajům v příchozích zprávách.

Viz také