viernes, 18 de octubre de 2013

Claims Series 2: Un poco de código por favor

Continuando la serie de post sobre claims... vamos al grano! Empecemos con algo de código:

Creando claims


¿Cómo creamos claims? Muy sencillo, como veíamos en el primer post sólo necesitamos un tipo y un valor

var primerClaim = new Claim("Nombre", "Tobías");

¿No parece muy elegante trabajar con cadenas "hardcodeadas"? Pues disponemos de enumerados que nos echarán una mano con tipos de claim prefedinidos:

var segundoClaim = new Claim(ClaimTypes.Country, "Antigua y Barbuda")

Si echamos un ojo a los valores disponibles, vemos que hay bastantes, y que todos están determinados con namespaces completos (buena práctica para evitar colisiones).



En cualquier caso, si lo predefinido no basta, definiremos nuestros propios tipos, siempre utilizando namespaces (y constantes o enumerados por favor):

var tercerClaim = new Claim("http://serginet.com/AficionPrincipal", "Tecnología");

Lo normal es que un usuario disponga de más de un claim, así que lo habitual será crear colecciones de claims:

IList<Claim> coleccionClaims = new List<Claim>
{
primerClaim, segundoClaim, tercerClaim
};

Identidades y principals


Una vez que disponemos de una colecciónd de claims, podemos crear una identidad:


var identidad = new ClaimsIdentity(coleccionClaims);

Y comprobar si dicha entidad está o no autenticada:

Console.WriteLine("Identidad autenticada:" + identidad.IsAuthenticated);

Si lo ejecutas verás que no... para hacerlo, tan solo tenemos que crear la identidad estableciendo un tipo de autenticación:

var identidadAutenticada = new ClaimsIdentity(coleccionClaims,"Autenticacion basica serginet.com");

Y finalmente con una identidad podemos crear un principal (el contexto de seguridad bajo el que se ejecuta nuestra código) y asignarlo a nuestro thread de ejecución::

var principal = new ClaimsPrincipal(identidadAutenticada);
Thread.CurrentPrincipal = principal;

Como veis todo parece bastante sencillo... continuaremos en la siguiente entrega haciendo uso de todos estos conceptos para lo que realmente importa: Hacer uso en nuestra aplicación de los claims para tareas de autenticación y autorización.

Aquí os dejo el código

Post publicados en Claims Series:



No hay comentarios:

Publicar un comentario