ClaimsPrincipalPermission Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vertegenwoordigt een machtiging die gebruikmaakt van een ClaimsAuthorizationManager implementatie om te bepalen of toegang tot een resource moet worden verleend aan de actieve principal. Deze klasse kan niet worden overgenomen.
public ref class ClaimsPrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Serializable]
public sealed class ClaimsPrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Serializable>]
type ClaimsPrincipalPermission = class
interface IPermission
interface ISecurityEncodable
interface IUnrestrictedPermission
Public NotInheritable Class ClaimsPrincipalPermission
Implements IPermission, IUnrestrictedPermission
- Overname
-
ClaimsPrincipalPermission
- Kenmerken
- Implementeringen
Voorbeelden
In het volgende voorbeeld ziet u hoe u een resource beveiligt met behulp van de Demand methode, de CheckAccess methode of een ClaimsPrincipalPermissionAttribute declaratie. In elk geval wordt de geconfigureerde ClaimsAuthorizationManager aangeroepen om de huidige principal te evalueren op basis van de opgegeven resource en actie. Als de huidige principal niet is geautoriseerd voor de opgegeven actie op de opgegeven resource, wordt er een SecurityException gegenereerd. Anders wordt de uitvoering voortgezet.
using System;
using System.IdentityModel.Services;
using System.Security.Claims;
using System.Security.Permissions;
using System.Threading;
namespace ClaimsBasedAuthorization
{
/// <summary>
/// Program illustrates using Claims-based authorization
/// </summary>
class Program
{
static void Main(string[] args)
{
//
// Method 1. Simple access check using static method.
// Expect this to be most common method.
//
ClaimsPrincipalPermission.CheckAccess("resource", "action");
//
// Method 2. Programmatic check using the permission class
// Follows model found at http://msdn.microsoft.com/library/system.security.permissions.principalpermission.aspx
//
ClaimsPrincipalPermission cpp = new ClaimsPrincipalPermission("resource", "action");
cpp.Demand();
//
// Method 3. Access check interacting directly with the authorization manager.
//
ClaimsAuthorizationManager am = new ClaimsAuthorizationManager();
am.CheckAccess(new AuthorizationContext((ClaimsPrincipal)Thread.CurrentPrincipal, "resource", "action"));
//
// Method 4. Call a method that is protected using the permission attribute class
//
ProtectedMethod();
Console.WriteLine("Press [Enter] to continue.");
Console.ReadLine();
}
//
// Declarative access check using the permission class. The caller must satisfy both demands.
//
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "resource", Operation = "action")]
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "resource1", Operation = "action1")]
static void ProtectedMethod()
{
}
}
}
In de volgende XML ziet u de minimale configuratie die is vereist voor het gebruik van een aangepast claimautorisatiebeheer met de ClaimsPrincipalPermission klasse. U moet minimaal zowel de system.identityModel secties in het element declareren als de system.identityModel.services secties in het <configSection> element en vervolgens uw autorisatiebeheerder opgeven in een <claimAuthorizationManager-element> onder de standaardidentiteitsconfiguratie. Dit zorgt ervoor dat uw autorisatiebeheerder wordt verwezen vanuit de standaardfederatieconfiguratie. U kunt ook de naam opgeven van de identiteitsconfiguratie waaronder uw autorisatiebeheerder is opgegeven in het identityConfigurationName kenmerk van het <federationConfiguration-element> .
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!-- WIF configuration sections -->
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.identityModel>
<identityConfiguration>
<claimsAuthorizationManager type ="MyClaimsAuthorizationManager.MyClaimsAuthorizationManager, MyClaimsAuthorizationManager"/>
</identityConfiguration>
</system.identityModel>
</configuration>
Opmerkingen
De ClaimsPrincipalPermission klasse biedt de mogelijkheid om imperatieve toegangscontroles uit te voeren met behulp van de ClaimsAuthorizationManager functie die is geconfigureerd voor een toepassing. Door de Demand methode of de statische CheckAccess methode aan te roepen, kunt u beveiliging bieden aan resources vanuit het uitvoeringspad van uw code op basis van het autorisatiebeleid dat is gedefinieerd voor uw claimverificatiebeheerder. Declaratieve toegangscontroles kunnen worden uitgevoerd met behulp van de ClaimsPrincipalPermissionAttribute klasse.
Important
De ClaimsPrincipalPermission klasse gebruikt de claimautorisatiebeheer die is geconfigureerd door de IdentityConfiguration die is ingesteld onder de FederatedAuthentication.FederationConfiguration eigenschap. Dit geldt in alle gevallen, zelfs in scenario's waarin WS-Federation niet wordt gebruikt; Bijvoorbeeld actieve webtoepassingen (WCF) en consoletoepassingen. U kunt de claimautorisatiebeheer opgeven in configuratie of programmatisch. Als u de claimautorisatiebeheer in een configuratiebestand wilt opgeven, stelt u het <element claimsAuthorizationManager> in onder een <identityConfiguration-element> en zorgt u ervoor dat naar deze identiteitsconfiguratie wordt verwezen door het <federationConfiguration-element> dat door de runtime wordt geladen (bijvoorbeeld door het identityConfigurationName kenmerk in te stellen). Als u de claimautorisatiebeheer programmatisch wilt instellen, geeft u een handler op voor de FederatedAuthentication.FederationConfigurationCreated gebeurtenis.
Op één niveau is de functionaliteit die wordt ClaimsPrincipalPermission geleverd, vergelijkbaar met de op rollen gebaseerde toegangscontroles (RBAC) die via de PrincipalPermission klasse worden geleverd. De ClaimsAuthorizationManager klasse voert echter controles uit op basis van de claims die door de actieve principal worden gepresenteerd. Dit maakt veel meer granulariteit mogelijk dan beschikbaar is via pure RBAC, waarbij veel machtigingen doorgaans worden verzameld onder één rol. Misschien is het belangrijker dat op claims gebaseerde autorisatie een betere scheiding van bedrijfslogica en autorisatiebeleid mogelijk maakt, omdat machtigingen kunnen worden aangevraagd voor een specifieke actie op een resource in code en back-endbeleid kan worden gebruikt om te configureren welke claims de huidige entiteit moet bezitten om aan de vraag te voldoen. Net als RBAC voert ClaimsPrincipalPermission u een op gebruikers gebaseerde toegangscontrole uit, dat wil gezegd, in tegenstelling tot codetoegangsbeveiliging die is geïmplementeerd door klassen die zijn afgeleid van de CodeAccessPermission klasse en een stack-walk gebruiken om ervoor te zorgen dat alle bellers van de code een machtiging hebben gekregen, ClaimsPrincipalPermission de controle alleen uitvoeren op de huidige principal.
De statische CheckAccess methode controleert de toegang voor een opgegeven actie op een opgegeven resource. De resource en actie zijn zowel tekenreeksen als URI's. U kunt ook een instantie van ClaimsPrincipalPermission een actie en een resource initialiseren en de Demand methode aanroepen. Hoewel de constructor slechts één resource en actie neemt, ClaimsPrincipalPermission kunnen objecten worden gecombineerd via de Union en Intersect methoden. Een machtiging die met deze methoden is gemaakt, kan meerdere resourceactieparen bevatten.
Beide methoden bepalen de toegang door de ClaimsAuthorizationManager.CheckAccess methode van de geconfigureerde claimautorisatiebeheerder aan te roepen met een AuthorizationContext samengestelde actieve principal (Thread.CurrentPrincipal), de resource en de actie. Deze genereert een SecurityException als de huidige principal niet is gemachtigd om de actie op de resource uit te voeren; anders wordt de uitvoering voortgezet.
In het geval van een ClaimsPrincipalPermission die meerdere resourceactieparen bevat, wordt de ClaimsAuthorizationManager.CheckAccess methode aangeroepen voor elk van de resourceactieparen in de machtiging. Voor een geslaagde aanroep Demand moet de actieve principal zijn geautoriseerd voor alle resourceactieparen in de machtiging.
Constructors
| Name | Description |
|---|---|
| ClaimsPrincipalPermission(String, String) |
Hiermee maakt u een nieuw exemplaar van de ClaimsPrincipalPermission klasse. |
Methoden
| Name | Description |
|---|---|
| CheckAccess(String, String) |
Controleert of de huidige principal is gemachtigd om de opgegeven actie uit te voeren op de opgegeven resource. |
| Copy() |
Retourneert een kopie van het huidige ClaimsPrincipalPermission exemplaar. |
| Demand() |
Controleert of de huidige principal is geautoriseerd voor de resourceactieparen die zijn gekoppeld aan het huidige exemplaar. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| FromXml(SecurityElement) |
Reconstrueert de huidige machtiging en de status van de opgegeven XML-codering. |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| Intersect(IPermission) |
Retourneert een machtiging die het snijpunt is van de huidige machtiging en de opgegeven machtiging. |
| IsSubsetOf(IPermission) |
Retourneert een waarde die aangeeft of de huidige machtiging een subset van de opgegeven machtiging is. |
| IsUnrestricted() |
Retourneert een waarde die aangeeft of de machtiging onbeperkt is. |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| ToXml() |
Retourneert de xml-gecodeerde vorm van de huidige machtiging en de status ervan. |
| Union(IPermission) |
Retourneert een nieuwe machtiging die de samenvoeging is van de huidige machtiging en de opgegeven machtiging. ClaimsPrincipalPermission object met alle resourceactieparen die aanwezig zijn in het huidige exemplaar en het doelexemplaren. |