Innerhalb des Pakets gibt es eine Klasse namens, JwtSecurityTokenHandler
die von abgeleitet ist System.IdentityModel.Tokens.SecurityTokenHandler
. In WIF ist dies die Kernklasse für das Deserialisieren und Serialisieren von Sicherheitstoken.
Die Klasse verfügt über eine ReadToken(String)
Methode, die Ihre Base64-codierte JWT-Zeichenfolge verwendet und eine zurückgibt, SecurityToken
die die JWT darstellt.
Das SecurityTokenHandler
hat auch eine ValidateToken(SecurityToken)
Methode, die Ihre nimmt SecurityToken
und eine erstellt ReadOnlyCollection<ClaimsIdentity>
. Normalerweise enthält dies für JWT ein einzelnes ClaimsIdentity
Objekt mit einer Reihe von Ansprüchen, die die Eigenschaften des ursprünglichen JWT darstellen.
JwtSecurityTokenHandler
definiert einige zusätzliche Überlastungen ValidateToken
, insbesondere für eine ClaimsPrincipal ValidateToken(JwtSecurityToken, TokenValidationParameters)
Überlastung. Mit diesem TokenValidationParameters
Argument können Sie das Token-Signatur-Zertifikat (als Liste von X509SecurityTokens
) angeben . Es hat auch eine Überlastung, die die JWT string
eher als eine als eine nimmt SecurityToken
.
Der Code dafür ist ziemlich kompliziert, befindet sich jedoch im Global.asax.cx-Code ( TokenValidationHandler
Klasse) im Entwicklerbeispiel "ADAL - Native App für REST-Dienst - Authentifizierung mit ACS über den Browser-Dialog" unter
http://code.msdn.microsoft.com/AAL-Native-App-to-REST-de57f2cc
Alternativ verfügt die JwtSecurityToken
Klasse über zusätzliche Methoden, die sich nicht in der Basisklasse befinden SecurityToken
, z. B. eine Claims
Eigenschaft, die die enthaltenen Ansprüche abruft, ohne die ClaimsIdentity
Auflistung zu durchlaufen. Es hat auch eine Payload
Eigenschaft, die ein JwtPayload
Objekt zurückgibt , mit dem Sie den unformatierten JSON des Tokens abrufen können. Es hängt von Ihrem Szenario ab, welcher Ansatz am besten geeignet ist.
Die allgemeine (dh nicht JWT-spezifische) Dokumentation für die SecurityTokenHandler
Klasse finden Sie unter
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.aspx
Abhängig von Ihrer Anwendung können Sie den JWT-Handler genau wie jeden anderen Handler in der WIF-Pipeline konfigurieren.
Es gibt 3 Beispiele davon, die in verschiedenen Anwendungsarten bei verwendet werden
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
Wahrscheinlich wird einer Ihren Bedürfnissen entsprechen oder zumindest an diese angepasst werden können.