ServiceAuthorizationManager.CheckAccessCore(OperationContext) Metoda
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í.
Kontroluje autorizaci daného kontextu operace na základě výchozího vyhodnocení zásad.
protected:
virtual bool CheckAccessCore(System::ServiceModel::OperationContext ^ operationContext);
protected virtual bool CheckAccessCore (System.ServiceModel.OperationContext operationContext);
abstract member CheckAccessCore : System.ServiceModel.OperationContext -> bool
override this.CheckAccessCore : System.ServiceModel.OperationContext -> bool
Protected Overridable Function CheckAccessCore (operationContext As OperationContext) As Boolean
Parametry
- operationContext
- OperationContext
Aktuální OperationContext žádost o autorizaci.
Návraty
true
pokud je udělen přístup; v opačném případě . false
Výchozí formát je true
.
Příklady
Následující příklad ukazuje přepsání CheckAccessCore metody.
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;
}
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
Další příklad najdete v tématu Postupy: Vytvoření vlastního správce autorizace pro službu.
Poznámky
ServiceSecurityContext je obecně výsledkem výchozího vyhodnocení zásad.
Tuto metodu přepište tak, aby poskytovala vlastní rozhodnutí o autorizaci.
Tuto metodu lze použít k rozhodování o autorizaci na základě sad deklarací identity, které jsou odvozeny na základě příchozích tokenů nebo přidané prostřednictvím externích zásad autorizace. Může také rozhodovat o autorizaci na základě vlastností příchozí zprávy: například záhlaví akce.
V této metodě může aplikace použít operationContext
parametr pro přístup k identitě volajícího (ServiceSecurityContext). Vrácením objektu RequestContext RequestContext z vlastnosti může aplikace získat přístup k celé zprávě požadavku (RequestMessage). Vrácením objektu MessageHeaders IncomingMessageHeaders z vlastnosti může aplikace získat přístup k adrese URL služby (To) a operaci (Action). S touto informací může aplikace odpovídajícím způsobem provádět rozhodnutí o autorizaci.
Deklarace identity provedené uživatelem jsou nalezeny ve ClaimSet vrácené ClaimSets vlastnosti .AuthorizationContext
AuthorizationContext
Aktuální je vrácen vlastností ServiceSecurityContext OperationContext třídy.