Поделиться токенами 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, и мне нужно использовать те же токены с моего сервера аутентификации (.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 на своем сервере аутентификации, чтобы определить во время выполнения, с какого сервера ресурсов я получил запрос, а затем определить, в каком формате мне нужно возвращать токен.
Ниже приведен фрагмент кода из конфигурации Autofac на сервере аутентификации:
0 ответов
Я реализовал обходной путь с этим пакетом 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!