ServiceAuthorizationManager Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ger åtkomstkontroll av auktorisering för tjänståtgärder.
public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
- Arv
-
ServiceAuthorizationManager
Exempel
I följande exempel visas en klass med namnet MyServiceAuthorizationManager som ärver från ServiceAuthorizationManager och åsidosätter CheckAccessCore metoden.
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
Kommentarer
Den här klassen ansvarar för att utvärdera alla principer (regler som definierar vad en användare tillåts göra), jämföra principerna med anspråk som görs av en klient, ange resultatet AuthorizationContext till ServiceSecurityContextoch ge auktoriseringsbeslutet om att tillåta eller neka åtkomst för en viss tjänståtgärd för en anropare.
Metoden CheckAccessCore anropas av WCF-infrastrukturen (Windows Communication Foundation) varje gång ett försök görs att komma åt en resurs. Metoden returnerar true eller false för att tillåta eller neka åtkomst.
ServiceAuthorizationManager är en del av WCFIdentity Model-infrastrukturen. Med identitetsmodellen kan du skapa anpassade auktoriseringsprinciper och anpassade auktoriseringsscheman. Mer information om hur identitetsmodellen fungerar finns i Hantera anspråk och auktorisering med identitetsmodellen.
Anpassad auktorisering
Den här klassen utför ingen auktorisering och tillåter användare att komma åt alla tjänståtgärder. Om du vill ge mer restriktiv auktorisering måste du skapa en anpassad auktoriseringshanterare som kontrollerar anpassade principer. För att göra detta ärver du från den här klassen och åsidosätter CheckAccessCore metoden. Ange instansen av den härledda klassen via ServiceAuthorizationManager egenskapen .
I CheckAccessCorekan programmet använda OperationContext objektet för att komma åt anroparidentiteten (ServiceSecurityContext).
Genom att hämta IncomingMessageHeaders egenskapen, som returnerar ett MessageHeaders objekt, kan programmet komma åt tjänsten (To) och åtgärden (Action).
Genom att hämta RequestContext egenskapen, som returnerar ett RequestContext objekt, kan programmet komma åt hela begärandemeddelandet (RequestMessage) och utföra auktoriseringsbeslutet i enlighet med detta.
Ett exempel finns i Så här skapar du en anpassad auktoriseringshanterare för en tjänst.
Implementera klassen för att skapa anpassade auktoriseringsprinciper IAuthorizationPolicy . Ett exempel finns i Så här skapar du en anpassad auktoriseringsprincip.
Använd klassen för Claim att skapa ett anpassat anspråk. Ett exempel finns i Så här skapar du ett anpassat anspråk. Om du vill jämföra anpassade anspråk måste du jämföra anspråk enligt beskrivningen i How to: Compare Claims (Så här jämför du anspråk).
Mer information finns i Anpassad auktorisering.
Du kan ange typen av en anpassad auktoriseringshanterare med hjälp av <serviceAuthorization> i en klientprogramkonfigurationsfil.
Konstruktorer
| Name | Description |
|---|---|
| ServiceAuthorizationManager() |
Initierar en ny instans av ServiceAuthorizationManager klassen. |
Metoder
| Name | Description |
|---|---|
| CheckAccess(OperationContext, Message) |
Kontrollerar auktoriseringen för den angivna åtgärdskontexten när åtkomst till ett meddelande krävs. |
| CheckAccess(OperationContext) |
Kontrollerar auktoriseringen för den angivna åtgärdskontexten. |
| CheckAccessCore(OperationContext) |
Kontrollerar auktoriseringen för den angivna åtgärdskontexten baserat på standardprinciputvärdering. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetAuthorizationPolicies(OperationContext) |
Hämtar den uppsättning principer som deltar i principutvärderingen. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |