ServiceAuthorizationManager Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje kontrolu přístupu autorizace pro operace služby.
public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
- Dědičnost
-
ServiceAuthorizationManager
Příklady
Následující příklad ukazuje třídu s názvem MyServiceAuthorizationManager
, která dědí z ServiceAuthorizationManager a přepíše metodu CheckAccessCore .
public class MyServiceAuthorizationManager : ServiceAuthorizationManager
{
protected override bool CheckAccessCore(OperationContext operationContext)
{
// Extract the action URI from the OperationContext. Match this against the claims
// in the AuthorizationContext.
string action = operationContext.RequestContext.RequestMessage.Headers.Action;
// Iterate through the various claim sets in the AuthorizationContext.
foreach(ClaimSet cs in operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets)
{
// Examine only those claim sets issued by System.
if (cs.Issuer == ClaimSet.System)
{
// Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
foreach (Claim c in cs.FindClaims("http://www.contoso.com/claims/allowedoperation", Rights.PossessProperty))
{
// If the Claim resource matches the action URI then return true to allow access.
if (action == c.Resource.ToString())
return true;
}
}
}
// If this point is reached, return false to deny access.
return false;
}
}
Public Class MyServiceAuthorizationManager
Inherits ServiceAuthorizationManager
Protected Overrides Function CheckAccessCore(ByVal operationContext As OperationContext) As Boolean
' Extract the action URI from the OperationContext. Match this against the claims.
' in the AuthorizationContext.
Dim action As String = operationContext.RequestContext.RequestMessage.Headers.Action
' Iterate through the various claimsets in the AuthorizationContext.
Dim cs As ClaimSet
For Each cs In operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets
' Examine only those claim sets issued by System.
If cs.Issuer Is ClaimSet.System Then
' Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
Dim c As Claim
For Each c In cs.FindClaims("http://www.contoso.com/claims/allowedoperation", _
Rights.PossessProperty)
' If the Claim resource matches the action URI then return true to allow access.
If action = c.Resource.ToString() Then
Return True
End If
Next c
End If
Next cs
' If this point is reached, return false to deny access.
Return False
End Function
End Class
Poznámky
Tato třída je zodpovědná za vyhodnocení všech zásad (pravidel, která definují, co uživatel může dělat), porovnání zásad s deklaracemi identity provedené klientem, nastavení výsledné AuthorizationContext hodnoty na ServiceSecurityContexta poskytnutí autorizačního rozhodnutí, zda povolit nebo odepřít přístup pro danou operaci služby volajícímu.
Metoda CheckAccessCore je volána infrastrukturou WCF (Windows Communication Foundation) při každém pokusu o přístup k prostředku. Metoda vrátí true
nebo false
pro povolení nebo odepření přístupu.
Je ServiceAuthorizationManager součástí infrastrukturymodelu identit WCF. Model identit umožňuje vytvářet vlastní zásady autorizace a vlastní schémata autorizace. Další informace o tom, jak model identit funguje, najdete v tématu Správa deklarací identity a autorizace pomocí modelu identit.
Autorizace uživatele
Tato třída neprovádí žádnou autorizaci a umožňuje uživatelům přístup ke všem operacím služby. Pokud chcete zajistit přísnější autorizaci, musíte vytvořit vlastního správce autorizací, který kontroluje vlastní zásady. Chcete-li to provést, dědit z této třídy a přepsat metodu CheckAccessCore . Zadejte instanci odvozené třídy prostřednictvím ServiceAuthorizationManager vlastnosti.
V CheckAccessCoreaplikaci může aplikace použít OperationContext objekt pro přístup k identitě volajícího (ServiceSecurityContext).
Získáním IncomingMessageHeaders vlastnosti, která vrací MessageHeaders objekt, má aplikace přístup ke službě (To) a operaci (Action).
Získáním RequestContext vlastnosti, která vrací RequestContext objekt, může aplikace získat přístup k celé zprávě požadavku (RequestMessage) a odpovídajícím způsobem provést rozhodnutí o autorizaci.
Příklad najdete v tématu Postupy: Vytvoření vlastního správce autorizací pro službu.
Pokud chcete vytvořit vlastní zásady autorizace, implementujte IAuthorizationPolicy třídu . Příklad najdete v tématu Postupy: Vytvoření vlastních zásad autorizace.
K vytvoření vlastní deklarace identity použijte Claim třídu . Příklad najdete v tématu Postupy: Vytvoření vlastní deklarace identity. Pokud chcete porovnat vlastní deklarace identity, musíte porovnat deklarace identity, jak je znázorněno v tématu Postupy: Porovnání deklarací identity.
Další informace najdete v tématu Vlastní autorizace.
Typ vlastního správce autorizace můžete nastavit pomocí <serviceAuthorization> v konfiguračním souboru klientské aplikace.
Konstruktory
ServiceAuthorizationManager() |
Inicializuje novou instanci ServiceAuthorizationManager třídy. |
Metody
CheckAccess(OperationContext) |
Kontroluje autorizaci pro daný kontext operace. |
CheckAccess(OperationContext, Message) |
Kontroluje autorizaci pro daný kontext operace, když se vyžaduje přístup ke zprávě. |
CheckAccessCore(OperationContext) |
Kontroluje autorizaci pro daný kontext operace na základě výchozího vyhodnocení zásad. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetAuthorizationPolicies(OperationContext) |
Získá sadu zásad, které se účastní vyhodnocení zásad. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |