2016-10-26 12 views
0

Я хотел поддержать JWT (Json Web Token) в своем приложении WebAPI, которое использует WIF 4.5.Есть ли способ поддержать JWTSecurityTokenHandler на WIF 4.5?

Я использую пакет nuget System.IdentityModel.Tokens.Jwt 5.0.0, который имеет JWTSecurityTokenHandler, который, кажется, интегрируется со старыми версиями WIF.

Проблема заключается в том, что обработчик получает Microsoft.IdentityModel.Tokens.SecurityTokenHandler, а не System.IdentityModel.Tokens.SecurityTokenHandler, как ожидает раздел конфигурации.

поэтому я получаю понятно исключение:

Parser Error Message: ID1029: The custom type is not suitable because it does not extend the correct base class. 
CustomType: 'System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt, Version=5.0.0.127, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 
BaseClass: 'System.IdentityModel.Tokens.SecurityTokenHandler' 

Моя конфигурация выглядит следующим образом:

<system.identityModel> 
     <identityConfiguration> 
      <audienceUris> 
       <add value="http://localhost:49482/" /> 
      </audienceUris> 
      <securityTokenHandlers> 
       <add type="System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler, System.IdentityModel.Tokens.Jwt" /> 
       <securityTokenHandlerConfiguration> 
        <certificateValidation certificateValidationMode="PeerTrust" /> 
       </securityTokenHandlerConfiguration> 
      </securityTokenHandlers> 
     </identityConfiguration> 
</system.identityModel> 

Как я могу поддержать JWT на WIF 4.5? Есть ли способ использовать этот пакет для этого? Я делаю что-то неправильно?

ответ

1

Этот пакет написан против стандарта .net 1.4, который не включает в себя API-интерфейсы System.IdentityModel, поэтому пакет не имеет интеграции с WIF.

Если вы хотите использовать System.IdentityModel через конфигурацию WIF, вам нужно вернуться к версии 3.x пакета.

Возможно, вы всегда можете написать свой собственный вариант осуществления System.IdentityModel.Tokens.SecurityTokenHandler, который обертывает Microsoft.IdentityModel.Tokens.SecurityTokenHandle