Расшифровка FormsAuthentication в ядре Asp.Net - PullRequest
0 голосов
/ 05 ноября 2019

У нас есть несколько приложений Asp.Net MVC с функцией единого входа, где мы передаем зашифрованную строку с помощью метода FormsAuthentication.Encrypt (), передаем ее в виде строки запроса и расшифровываем эту же строку с помощью FormsAuthentication.Decrypt ().

Поскольку оба сайта были разработаны в Asp.Net MVC, мы можем использовать проверку подлинности с помощью форм и расшифровывать строку.

Теперь мы разрабатываем новый проект в Asp.Net Core, в котором мы передаем зашифрованную строку. в виде строки запроса из Asp.Net MVC, которую необходимо расшифровать в веб-приложении Asp.Net Core.

Есть ли альтернатива для расшифровки строки в Asp.Net Core

Примечание: мы не являемсяиспользуя Asp.Net Identity

//Encryption
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "Name", DateTime.Now, DateTime.Now.AddMinutes(60), true, "DataToEncrypt");

string encrypted = FormsAuthentication.Encrypt(ticket);
Response.Redirect("siteUrl?CookieName="+encrypted );

//Decryption
HttpCookie authCookie = Request.Cookies["CookieName"];

var formsAuthenticationTicket = FormsAuthentication.Decrypt(authCookie.Value);
string _userData = formsAuthenticationTicket.UserData;

1 Ответ

0 голосов
/ 05 ноября 2019

Нет, то, что вы делали раньше, зависело от того, что оба приложения используют один и тот же ключ компьютера, поэтому они оба шифруют / дешифруют одинаково. ASP.NET Core не поддерживает концепцию машинных ключей и не использует их для шифрования. Вместо этого он использует поставщиков защиты данных. Таким образом, невозможно расшифровать значение в ASP.NET Core, которое было зашифровано в приложении ASP.NET на основе ключа компьютера. Полная остановка.

Тем не менее, концепция поставщика защиты данных, используемая в ASP.NET Core , может использоваться в ASP.NET, но для этого, очевидно, потребуется изменить существующий дизайн для использованияпоставщик данных для шифрования / дешифрования вместо вашей текущей методологии. Затем, при условии, что поставщик настроен одинаково для всех приложений, вы сможете расшифровать в ASP.NET Core. А именно, это требует, чтобы набор ключей, используемый поставщиком защиты данных, находился в общем расположении, к которому могут обращаться все приложения, и чтобы все приложения были настроены на использование одного и того же имени приложения.

Пожалуйста, обратитесь к документация о том, как это настроить. Документация направлена ​​как на совместное использование файлов cookie, так и на аутентификацию, но на самом деле это общие схемы шифрования, поэтому установки битов защиты данных, упомянутых в документации, будет достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...