Поделиться токенами 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!
Другие вопросы по тегам