我一直在使用JWT库来解码Json Web令牌,并想切换到Microsoft的官方JWT实现System.IdentityModel.Tokens.Jwt。
该文档非常稀疏,因此我很难确定如何完成对JWT库所做的工作。在JWT库中,有一个Decode方法,它采用base64编码的JWT,并将其转换为JSON,然后可以反序列化。我想使用System.IdentityModel.Tokens.Jwt做类似的事情,但是经过大量的挖掘之后,仍然无法弄清楚如何做。
对于它的价值,我正在从cookie中读取JWT令牌,以与Google的身份框架一起使用。
任何帮助,将不胜感激。
包中有一个名为的类JwtSecurityTokenHandler
,它从派生System.IdentityModel.Tokens.SecurityTokenHandler
。在WIF中,这是反序列化和序列化安全令牌的核心类。
该类具有一个ReadToken(String)
将采用base64编码的JWT字符串并返回一个SecurityToken
表示JWT的方法。
该SecurityTokenHandler
也有ValidateToken(SecurityToken)
这需要你的方法SecurityToken
,并创建一个ReadOnlyCollection<ClaimsIdentity>
。通常对于JWT,它将包含一个ClaimsIdentity
对象,该对象具有一组表示原始JWT属性的声明。
JwtSecurityTokenHandler
为定义了一些附加的重载ValidateToken
,特别是它有一个ClaimsPrincipal ValidateToken(JwtSecurityToken, TokenValidationParameters)
重载。该TokenValidationParameters
参数允许您指定令牌签名证书(作为的列表X509SecurityTokens
)。它还有一个重载,将JWT用作string
而不是SecurityToken
。
执行此操作的代码相当复杂,但是可以在TokenValidationHandler
位于以下位置的开发人员示例“ ADAL-REST的本机应用程序-通过浏览器对话框通过ACS进行身份验证”的Global.asax.cx代码(类)中找到该代码。
http://code.msdn.microsoft.com/AAL-Native-App-to-REST-de57f2cc
另外,JwtSecurityToken
该类还具有其他不在基SecurityToken
类上的方法,例如,Claims
无需通过ClaimsIdentity
集合即可获取所包含的声明的属性。它还具有Payload
返回一个JwtPayload
对象的属性,该对象使您可以获取令牌的原始JSON。这取决于您的方案,哪种方法最合适。
SecurityTokenHandler
该类的常规(即非JWT特定)文档位于
http://msdn.microsoft.com/zh-CN/library/system.identitymodel.tokens.securitytokenhandler.aspx
根据您的应用程序,可以像其他任何处理程序一样将JWT处理程序配置到WIF管道中。
共有3个样本在以下不同类型的应用中使用
可能,一个将满足您的需求或至少能够适应它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句