AuthorizationContext Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona información de contexto de un evento de autorización. Esto incluye la entidad de seguridad que representa al llamador, el recurso que se está solicitando y la acción que se está realizando.
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- Herencia
-
AuthorizationContext
Ejemplos
El ejemplo de código que se usa en el AuthorizationContext tema se toma del Claims Based Authorization
ejemplo. En este ejemplo se proporciona un administrador de autorización de notificaciones personalizado que puede autorizar sujetos en función de una directiva especificada en la configuración. Este administrador personalizado consta de tres componentes básicos: una clase derivada de ClaimsAuthorizationManager que implementa el administrador, la ResourceAction
clase que empareja un recurso y una acción, y un lector de directivas que lee y compila la directiva especificada en el archivo de configuración. A continuación, el administrador de autorización de notificaciones puede usar esta directiva compilada para evaluar una entidad de seguridad con el fin de autorizar el acceso a los recursos. No todos los elementos se muestran por motivos de brevedad. Para obtener información sobre este ejemplo y otros ejemplos disponibles para WIF y sobre dónde descargarlos, consulte Índice de ejemplo de código de WIF.
El código siguiente muestra el CheckAccess método para el administrador de autorización de notificaciones personalizado. Se invoca una función que evalúa la entidad de seguridad en función del recurso y la acción especificada en .AuthorizationContext Esta función devuelve true
o false
, que concede o deniega el acceso a la entidad de seguridad.
static Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>> _policies = new Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>>();
PolicyReader _policyReader = new PolicyReader();
/// <summary>
/// Checks if the principal specified in the authorization context is authorized to perform action specified in the authorization context
/// on the specified resoure
/// </summary>
/// <param name="pec">Authorization context</param>
/// <returns>true if authorized, false otherwise</returns>
public override bool CheckAccess(AuthorizationContext pec)
{
//
// Evaluate the policy against the claims of the
// principal to determine access
//
bool access = false;
try
{
ResourceAction ra = new ResourceAction(pec.Resource.First<Claim>().Value, pec.Action.First<Claim>().Value);
access = _policies[ra](pec.Principal);
}
catch (Exception)
{
access = false;
}
return access;
}
}
El siguiente XML muestra un ejemplo de la directiva de autorización que se especificó en la configuración. En la primera directiva, la entidad de seguridad debe poseer una de las notificaciones especificadas para realizar la acción especificada en el recurso especificado. En la segunda directiva, la entidad de seguridad debe poseer ambas notificaciones para poder realizar la acción especificada en el recurso especificado. En todos los demás, a la entidad de seguridad se le concede acceso automáticamente independientemente de las reclamaciones que posee.
<system.identityModel>
<identityConfiguration>
<claimsAuthorizationManager type="ClaimsAuthorizationLibrary.MyClaimsAuthorizationManager, ClaimsAuthorizationLibrary">
<policy resource="http://localhost:28491/Developers.aspx" action="GET">
<or>
<claim claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" claimValue="developer" />
<claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
</or>
</policy>
<policy resource="http://localhost:28491/Administrators.aspx" action="GET">
<and>
<claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
<claim claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country" claimValue="USA" />
</and>
</policy>
<policy resource="http://localhost:28491/Default.aspx" action="GET">
</policy>
<policy resource="http://localhost:28491/" action="GET">
</policy>
<policy resource="http://localhost:28491/Claims.aspx" action="GET">
</policy>
</claimsAuthorizationManager>
...
</identityConfiguration>
</system.identityModel>
Comentarios
La AuthorizationContext clase representa el contexto utilizado por un administrador de autorización de notificaciones, una implementación de la ClaimsAuthorizationManager clase , para determinar si una entidad de seguridad (asunto) debe estar autorizada para realizar una acción especificada en un recurso determinado. El administrador de autorización de notificaciones evalúa el contexto de autorización en el CheckAccess método y deniega o concede acceso en función de las notificaciones presentadas por la entidad de seguridad.
La Principal propiedad contiene la entidad de seguridad para la que se solicita la autorización, la Resource propiedad contiene el recurso en el que se está autorizando la entidad de seguridad y la Action propiedad contiene las acciones que la entidad de seguridad pretende realizar en el recurso. Tanto el recurso como la acción se representan como una colección de notificaciones; sin embargo, en la mayoría de los casos, cada colección contiene una sola notificación.
Constructores
AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
Inicializa una nueva instancia de la clase AuthorizationContext con la entidad de seguridad, reclamación de recurso y reclamación de acción especificadas. |
AuthorizationContext(ClaimsPrincipal, String, String) |
Inicializa una nueva instancia de la clase AuthorizationContext con la entidad de seguridad, nombre del recurso y nombre de la acción especificados. |
Propiedades
Action |
Obtiene la acción para la que se va a autorizar a la entidad de seguridad. |
Principal |
Obtiene la entidad de seguridad (asunto) para la que se solicita la autorización. |
Resource |
Obtiene el recurso en el que se va a autorizar la entidad de seguridad. |
Métodos
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |