Конфигурация JWT с WS-Federation

У меня проблема с использованием токенов JWT в качестве проверки. Проблема в том, что поток вызывает функцию JwtSecurityTokenHandler.ReadOnlyCollection ValidateToken (токен SecurityToken). Это устарело и говорит мне использовать функцию JwtSecurityTokenHandler.ClaimsPrincipal ValidateToken (string securityToken, TokenValidationParameters validationParameters, out SecurityToken validatedToken). Но как мне это сделать?

Мой 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>

person Bosken85    schedule 29.09.2014    source источник


Ответы (1)


Для всех тех, у кого есть такая же проблема. Я нашел решение этой проблемы. Это промежуточное решение, и мы все равно были бы признательны, если бы кто-нибудь все равно мог его решить.

Проблема в том, что System.IdentityModel.Tokens.Jwt, Version = 4.0.0.0 сделал его функцию Validate (SecurityToken) на своем JwtSecurityTokenHandler устаревшей.

  • Если вы хотите включить только токены JWT с конфигурацией, используйте версию 3.0.2 файла nuget.
  • Если вы предпочитаете использовать последнюю версию, вы можете отразить логику, содержащуюся в функции Validate из предыдущей версии, и поместить ее в класс, унаследованный от JwtSecurityTokenHandler, и зарегистрировать это в config.

Как я упоминал ранее, мне все же хотелось бы решить этот вопрос лучше, чем оба подхода, описанные выше.

person Bosken85    schedule 01.10.2014