W pakiecie znajduje się klasa o nazwie, JwtSecurityTokenHandler
która pochodzi od System.IdentityModel.Tokens.SecurityTokenHandler
. W WIF jest to podstawowa klasa do deserializacji i serializacji tokenów zabezpieczających.
Klasa ma ReadToken(String)
metodę, która pobierze ciąg znaków JWT zakodowany w standardzie Base64 i zwróci wartość, SecurityToken
która reprezentuje JWT.
Ma SecurityTokenHandler
również ValidateToken(SecurityToken)
metodę, która pobiera SecurityToken
i tworzy plik ReadOnlyCollection<ClaimsIdentity>
. Zwykle w przypadku tokena JWT będzie to pojedynczy ClaimsIdentity
obiekt z zestawem oświadczeń reprezentujących właściwości oryginalnego tokena JWT.
JwtSecurityTokenHandler
definiuje kilka dodatkowych przeciążeń ValidateToken
, w szczególności ma ClaimsPrincipal ValidateToken(JwtSecurityToken, TokenValidationParameters)
przeciążenie. TokenValidationParameters
Argumentem pozwala określić certyfikat podpisywania tokenu (jako lista X509SecurityTokens
). Ma również przeciążenie, które traktuje token JWT jako string
raczej niż plik SecurityToken
.
Kod służący do tego jest dość skomplikowany, ale można go znaleźć w kodzie ( TokenValidationHandler
klasie) Global.asax.cx w przykładzie dewelopera o nazwie „ADAL - Natywna aplikacja do usługi REST - Uwierzytelnianie za pomocą usługi ACS za pośrednictwem okna dialogowego przeglądarki”, znajdującej się pod adresem
http://code.msdn.microsoft.com/AAL-Native-App-to-REST-de57f2cc
Alternatywnie JwtSecurityToken
klasa ma dodatkowe metody, które nie znajdują się w SecurityToken
klasie bazowej , takie jak Claims
właściwość, która pobiera zawarte oświadczenia bez przechodzenia przez ClaimsIdentity
kolekcję. Ma również Payload
właściwość, która zwraca JwtPayload
obiekt, który pozwala uzyskać surowy kod JSON tokenu. To zależy od scenariusza, które podejście jest najbardziej odpowiednie.
Ogólna (tzn. Nie związana z JWT) dokumentacja dla SecurityTokenHandler
klasy znajduje się pod adresem
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.aspx
W zależności od aplikacji można skonfigurować procedurę obsługi JWT w potoku WIF dokładnie tak, jak każdą inną procedurę obsługi.
Istnieją 3 próbki tego używanego w różnych typach zastosowań pod adresem
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
Prawdopodobnie jeden będzie odpowiadał Twoim potrzebom lub przynajmniej da się do nich dostosować.