Внутри пакета есть класс, 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
Возможно, один будет соответствовать вашим потребностям или, по крайней мере, будет адаптирован к ним.