У пакеті є клас, 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 точно так само, як і будь-який інший обробник.
Існує 3 його зразки, які використовуються для різних типів застосування на
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
Можливо, один задовольнить ваші потреби або, принаймні, буде адаптований до них.