Dentro del paquete hay una clase llamada JwtSecurityTokenHandler
que deriva de System.IdentityModel.Tokens.SecurityTokenHandler
. En WIF, esta es la clase principal para deserializar y serializar tokens de seguridad.
La clase tiene un ReadToken(String)
método que tomará su cadena JWT codificada en base64 y devuelve un SecurityToken
que representa el JWT.
El SecurityTokenHandler
también tiene un ValidateToken(SecurityToken)
método que lleva su SecurityToken
y crea una ReadOnlyCollection<ClaimsIdentity>
. Por lo general, para JWT, esto contendrá un solo ClaimsIdentity
objeto que tiene un conjunto de reclamos que representan las propiedades del JWT original.
JwtSecurityTokenHandler
define algunas sobrecargas adicionales ValidateToken
, en particular, tiene una ClaimsPrincipal ValidateToken(JwtSecurityToken, TokenValidationParameters)
sobrecarga. El TokenValidationParameters
argumento le permite especificar el certificado de firma del token (como una lista de X509SecurityTokens
). También tiene una sobrecarga que toma el JWT como string
unSecurityToken
.
El código para hacer esto es bastante complicado, pero se puede encontrar en el código ( TokenValidationHandler
clase) Global.asax.cx en la muestra del desarrollador llamada "ADAL - Aplicación nativa al servicio REST - Autenticación con ACS a través del cuadro de diálogo del navegador", ubicado en
http://code.msdn.microsoft.com/AAL-Native-App-to-REST-de57f2cc
Alternativamente, la JwtSecurityToken
clase tiene métodos adicionales que no están en la SecurityToken
clase base , como una Claims
propiedad que obtiene las notificaciones contenidas sin pasar por la ClaimsIdentity
colección. También tiene una Payload
propiedad que devuelve unJwtPayload
objeto que le permite obtener el JSON sin procesar del token. Depende de su escenario cuál es el enfoque más adecuado.
La documentación general (es decir, no específica de JWT) para la SecurityTokenHandler
clase está en
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.aspx
Dependiendo de su aplicación, puede configurar el controlador JWT en la canalización WIF exactamente como cualquier otro controlador.
Hay 3 muestras en uso en diferentes tipos de aplicación en
http://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=SearchText&f%5B0%5D.Value=aal&f%5B1%5D.Type=User&f%5B1%5D.Value=Azure% 20AD% 20Desarrollador% 20Experiencia% 20Team &f% 5B1% 5D.Text = Azure% 20AD% 20Desarrollador% 20Experiencia% 20Team
Probablemente, uno se adaptará a sus necesidades o al menos se adaptará a ellas.