Dentro do pacote, há uma classe chamada JwtSecurityTokenHandler
que deriva de System.IdentityModel.Tokens.SecurityTokenHandler
. No WIF, essa é a classe principal para desserializar e serializar tokens de segurança.
A classe tem um ReadToken(String)
método que pegará sua string JWT codificada em base64 e retornará um SecurityToken
que representa o JWT.
O SecurityTokenHandler
também tem um ValidateToken(SecurityToken)
método que pega seu SecurityToken
e cria um ReadOnlyCollection<ClaimsIdentity>
. Normalmente, para o JWT, ele conterá um único ClaimsIdentity
objeto que possui um conjunto de declarações que representam as propriedades do JWT original.
JwtSecurityTokenHandler
define algumas sobrecargas adicionais para ValidateToken
, em particular, ter uma ClaimsPrincipal ValidateToken(JwtSecurityToken, TokenValidationParameters)
sobrecarga. O TokenValidationParameters
argumento permite que você especifique o certificado de assinatura de token (como uma lista de X509SecurityTokens
). Ele também tem uma sobrecarga que considera o JWT como um em string
vez de um SecurityToken
.
O código para fazer isso é um pouco complicado, mas pode ser encontrado no código ( TokenValidationHandler
classe) Global.asax.cx no exemplo de desenvolvedor chamado "ADAL - Aplicativo nativo para serviço REST - Autenticação com ACS via caixa de diálogo do navegador", localizado em
http://code.msdn.microsoft.com/AAL-Native-App-to-REST-de57f2cc
Como alternativa, a JwtSecurityToken
classe possui métodos adicionais que não estão na SecurityToken
classe base , como uma Claims
propriedade que obtém as declarações contidas sem passar pela ClaimsIdentity
coleção. Ele também tem uma Payload
propriedade que retorna um JwtPayload
objeto que permite obter o JSON bruto do token. Depende do seu cenário qual abordagem é mais apropriada.
A documentação geral (ou seja, não específica do JWT) para a SecurityTokenHandler
classe está em
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.aspx
Dependendo do seu aplicativo, você pode configurar o manipulador JWT no pipeline WIF exatamente como qualquer outro manipulador.
Existem 3 amostras em uso em diferentes tipos de aplicação em
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% 20Developer% 20Experience% 20Team & f% 5B1% 5D.Text = Azure% 20AD% 20Developer% 20Experience% 20Team
Provavelmente, um atenderá às suas necessidades ou, pelo menos, será adaptável a elas.