Совместное использование токенов OWIN по умолчанию в ядре .Net

У меня есть сервер авторизации, который построен на .NET 4.5.1 и использует Microsoft.Owin.Security.OAuth Version = 3.0.0 http://prntscr.com/hvwhl4 Токены, защищенные с помощью machinkey (по умолчанию используется OAuthAuthorizationServerOptions.AccessTokenFormat). У меня также есть много потребителей приложений (серверов ресурсов) на .NET 4.5.1, которые проверяют эти токены http://prntscr.com/hvwwdu http://prntscr.com/hvwiwr. Все эти приложения имеют одинаковую машинку в web.config.

Теперь я пытаюсь создать приложение .net core 2.0, и мне нужно использовать те же токены с моего сервера Auth (.net 4.5.1 owin 3.0.0). Как я могу проверить и прочитать утверждения от токенов Microsoft.Owin.Security.OAuth (3.0.0) в .NET core 2.0?

Одно примечание: я не могу изменить свой сервер аутентификации и определить DataProtector на сервере аутентификации. Поэтому мне нужно найти способ «декодировать» токены OWIN в ядре .net, используя существующий машинный ключ.

ОБНОВЛЕНИЕ. Итак, я открыл проблему на github https://github.com/aspnet/Security/issues/1592

Теперь он закрыт, и ответ был: «Закрытие, потому что нет планов поддерживать это. Вы можете использовать сторонний сервер токенов, такой как Identity Server, для выпуска токенов, которые работают с обеими системами. Или вы можете написать собственный код для ASP. .NET Core для обработки токенов в стиле OWIN / Katana ".

Я нахожу какое-то решение. Я использую пакет Autofac.Integration.Owin и OAuthAuthorizationServerMiddleware на моем сервере Auth, чтобы определить во время выполнения, с какого сервера ресурсов я получил запрос, а затем определить, в каком формате мне нужно вернуть токен.

Ниже приведен фрагмент кода из конфигурации Autofac на сервере аутентификации:  введите описание изображения здесь


person Alex Gorbel    schedule 08.01.2018    source источник
comment
У меня была та же проблема, и я реализовал собственный ISecureDataFormat для приема JWT и DataProtector. github.com/aloji/JwtSecurity/ master / src /   -  person aloji    schedule 14.08.2018


Ответы (1)


Я реализовал обходной путь с помощью этого пакета Owin.Token.AspNetCore.

var ticket = LegacyOAuthSecurityTokenHelper.GetTicket(token, new LegacyTokenAuthenticationOptions
    {
        DecryptionKey = "machineKey-DecryptionKey",
        ValidationKey = "machineKey-ValidationKey",
        EncryptionMethod = EncryptionMethod.AES, // Default AES
        ValidationMethod = ValidationMethod.HMACSHA256 // Default HMACSHA256
    }));

// Authenticate your user with ticket.Identity.Claims!
person turgayozgur    schedule 15.01.2019
comment
Я следил за подробностями здесь github.com/turgayozgur/Owin.Token.AspNetCore. Для меня ValidationMethod = ValidationMethod.SHA1 и он отлично работал - person Jalal El-Shaer; 30.12.2019