Как расшифровать токен asp.net owin в ядре asp.net вручную?

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

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


person Priyanka Jain    schedule 27.05.2019    source источник


Ответы (2)


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

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

person Chris Pratt    schedule 28.05.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 и Dictionary of Properties. см. Интерфейс IDataProtector

person Sunil Dhappadhule    schedule 27.05.2019
comment
ПО OAuthAuthorizationServerMiddleware не поддерживается в .NET Core. - person GrantA; 25.06.2021