Внутри пакета есть класс, JwtSecurityTokenHandler
производный от System.IdentityModel.Tokens.SecurityTokenHandler
. В WIF это основной класс для десериализации и сериализации токенов безопасности.
У класса есть ReadToken(String)
метод, который принимает вашу строку JWT в кодировке base64 и возвращает a, SecurityToken
который представляет JWT.
SecurityTokenHandler
Также есть ValidateToken(SecurityToken)
метод , который принимает ваш SecurityToken
и создает ReadOnlyCollection<ClaimsIdentity>
. Обычно для JWT это будет один ClaimsIdentity
объект с набором утверждений, представляющих свойства исходного JWT.
JwtSecurityTokenHandler
определяет некоторые дополнительные перегрузки ValidateToken
, в частности, для ClaimsPrincipal ValidateToken(JwtSecurityToken, TokenValidationParameters)
перегрузки. TokenValidationParameters
Аргумент позволяет указать сертификат маркеров подписи (в виде списка X509SecurityTokens
). Он также имеет перегрузку, которая воспринимает JWT как файл, string
а не как SecurityToken
.
Код для этого довольно сложен, но его можно найти в коде ( TokenValidationHandler
классе) Global.asax.cx в образце разработчика под названием «ADAL - Собственное приложение для службы REST - Аутентификация с ACS через диалог браузера», расположенном по адресу
http://code.msdn.microsoft.com/AAL-Native-App-to-REST-de57f2cc
В качестве альтернативы у JwtSecurityToken
класса есть дополнительные методы, которых нет в базовом SecurityToken
классе, например Claims
свойство, которое получает содержащиеся утверждения без прохождения через ClaimsIdentity
коллекцию. У него также есть Payload
свойство, которое возвращает JwtPayload
объект, который позволяет вам получить необработанный JSON токена. Выбор наиболее подходящего подхода зависит от вашего сценария.
Общая (т.е. не относящаяся к JWT) документация для SecurityTokenHandler
класса находится по адресу
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.aspx
В зависимости от вашего приложения вы можете настроить обработчик JWT в конвейер WIF точно так же, как любой другой обработчик.
Три его образца используются в различных приложениях по адресу:
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
Возможно, один будет соответствовать вашим потребностям или, по крайней мере, будет адаптирован к ним.