2014-09-29 69 views
1

我有使用JWT令牌作爲驗證的問題。問題在於流程調用JwtSecurityTokenHandler.ReadOnlyCollection ValidateToken(SecurityToken令牌)函數。這是過時的,它告訴我使用函數JwtSecurityTokenHandler.ClaimsPrincipal ValidateToken(字符串securityToken,TokenValidationParameters validationParameters,out SecurityToken validatedToken)。但我如何做到這一點?與WS聯盟的JWT配置

我的web.config是這樣配置的。

<system.identityModel> 
<identityConfiguration saveBootstrapContext="true"> 
    <audienceUris> 
    <add value="urn:xyz" /> 
    </audienceUris> 
    <securityTokenHandlers> 
    <add type="System.IdentityModel.Tokens.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt, Version=4.0.0.0" /> 
    <securityTokenHandlerConfiguration> 
     <certificateValidation certificateValidationMode="PeerTrust" /> 
    </securityTokenHandlerConfiguration> 
    </securityTokenHandlers> 
    <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <trustedIssuers> 
       <add name="XXX" thumbprint="[NNN]" /> 
      </trustedIssuers> 
     </issuerNameRegistry> 
    <issuerTokenResolver type="System.IdentityModel.Tokens.NamedKeyIssuerTokenResolver, System.IdentityModel.Tokens.Jwt, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
</identityConfiguration> 
</system.identityModel> 
    <system.identityModel.services> 
    <federationConfiguration> 
    <wsFederation passiveRedirectEnabled="true" issuer="https://xxx/issue/wsfed" realm="urn:xyz" requireHttps="true" /> 
     </federationConfiguration> 
     </system.identityModel.services> 

回答

1

對於你所有的人在那裏都有同樣的問題。我找到了解決這個問題的辦法。這是一箇中間解決方案,如果有人能解決這個問題,我們仍然會很感激。

的問題是,System.IdentityModel.Tokens.Jwt,版本= 4.0.0.0 取得了它的validate(SecurityToken)函數是 JwtSecurityTokenHandler過時。

  • 如果你只想讓智威湯遜 - 托克斯(Tokes)與配置,然後使用版本3.0.2中的NuGet的。
  • 如果你寧願用最新版本的堅持,你可以反映包含在從以前的版本 的驗證功能 邏輯,並把它在繼承的類從JwtSecurityTokenHandler和 寄存器,在配置。

正如我前面提到的,我還是想獲得這個項目以更好的方式解決的話,我上述兩種方法。