Как вручную расшифровать токен asp.net в ядре asp.net? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть приложение, которое генерирует идентификационный токен с подходом с использованием машинного ключа. Один и тот же токен используется для аутентификации различных приложений. Одно из приложений теперь в ядре asp.net. Есть ли способ использовать тот же токен, сгенерированный owin, в ядре asp.net?

или мы можем декодировать этот токен вручную в ядре asp.net

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Вы не можете совместно использовать что-либо между ASP.NET и ASP.NET Core при использовании ключей машины. Единственный способ расшифровать что-либо в ASP.NET Core, установленном приложением ASP.NET, - это если 1) приложения ASP.NET используют поставщика защиты данных 2) кольцо ключей поставщика защиты данных сохраняется в файловой системе или сетевое расположение, доступное для всех приложений (ASP.NET и ASP.NET Core), и все приложения используют одно и то же имя приложения.

Документы подробно описывают этот .

0 голосов
/ 27 мая 2019

Вы можете расшифровать токен доступа, возвращенный из потока кода авторизации, напрямую, используя IDataProtector.мы реализуем интерфейс IDataProtector и используем System.Web.Security.MachineKey.Unprotect method.Сделать вспомогательный метод для расшифровки билета OWIN

private class MachineKeyProtector : IDataProtector
{
    private readonly string[] _purpose =
    {
        typeof(OAuthAuthorizationServerMiddleware).Namespace,
        "Access_Token",
        "v1"
    };

    public byte[] Protect(byte[] userData)
    {
        //throw new NotImplementedException();
    }

    public byte[] Unprotect(byte[] protectedData)
    {
        return System.Web.Security.MachineKey.Unprotect(protectedData, _purpose);
    }
}

Чтобы получить ClaimsIdentity и словарь свойств.мы просто создаем экземпляр и передаем токен, чтобы получить дешифрованный билет

var secureDataFormat = new TicketDataFormat(new MachineKeyProtector());
AuthenticationTicket ticket = secureDataFormat.Unprotect(accessToken);

Выше AuthenticationTicket сам содержит ClaimsIdentity и словарь свойств.см. Интерфейс IDataProtector

...