У меня есть сервер авторизации, который построен на .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 на сервере аутентификации: