У меня есть приложение .NET Famework 4.7.1 ASP.Net/MVC, которое я переключаю с SAML на нового провайдера идентификации OpenIDConnect.В исходном коде использовались библиотеки от провайдера SAML и использовалась Framework 4.5.Я обновил до 4.7.1 и добавил OWIN.
Казалось, все работало хорошо, пока я не запустил приложение в производство.В этот момент может войти только первый человек, который войдет в систему. Любой, кто запустит новый сеанс, просто попадет в цикл перенаправления между сайтом и IP-адресом, пока куки-файлы Nonce не заполнят запрос и не получат «Request Too».Длинная "ошибка.
У меня есть другие приложения, которые я настроил, используя этот IP и ASP.Net Framework, и у меня нет проблем.Это приложение - Framework 4.5, но с самого начала оно было разработано для использования OWIN и Kentor.AuthServices для SAML, и преобразование в OpenIDConnect было очень плавным.
Поддержка со стороны моего IP и я последовала заразговор между моим приложением и IP-адресом и токеном отправляется обратно правильно.Я добавил Уведомления в Аутентификацию и установил точки останова.Приложение получает токен и проверяет его.
Я попытался вернуться к Framework 4.5 и сделать все библиотеки той же версией, что и другое работающее приложение.Это не сработало.
Я наконец отследил это до использования переменных Session [].Я также смог воссоздать проблему с новым приложением .NET ASP.NET.
- Создать новую платформу "ASP.NET Web Application" 4.7.1 без аутентификации.(Вы можете начать с их аутентификации, но это не помогает)
- Установить пакет NuGet "Microsoft.Owin.Host.SystemWeb" (v4.0.0.0)
- Установить пакет NuGet "Microsoft.Owin.Security.OpenIdConnect "(v4.0.0.0)
- Установить пакет NuGet" Microsoft.Owin.Security.Cookies "(v4.0.0.0)
Создать автозагрузку.cs
с использованием Microsoft.Owin;используя Овина;используя Систему;использование Microsoft.Owin.Security.Cookies;используя System.Configuration;using System.Collections.Specialized;использование Microsoft.Owin.Security.OpenIdConnect;using Microsoft.IdentityModel.Protocols.OpenIdConnect;использование Microsoft.Owin.Security;[assembly: OwinStartupAttribute (typeof (WebApplication.Startup))] пространство имен WebApplication {открытый частичный класс Startup {public void Configuration (приложение IAppBuilder) {app.SetDefaultSignInAsAuthenticationType (CookieAuthenticationDefaults.AuthenticationType)} 10 * 10 * 10 * 10 * 28 **
Изменить HomeController.cs
открытый класс HomeController: Controller {public ActionResult Index () {return View ();}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
// Added this line ****************
Session["Value"] = "Test Value";
return View();
}
// Added this line ****
[Authorize]
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
Чтобы выявить проблему, выполните следующие действия
- Запустите веб-приложение и перейдите кКонтактная страница.Вы уже пройдете проверку подлинности или вам нужно будет войти в систему.
- Откройте другой браузер или личную страницу / страницу инкогнито, чтобы получить новый сеанс и открыть сайт.Перейти на страницу контактов.Вам нужно будет войти снова.
Вы можете увидеть, как работает аутентификация для обоих сеансов.
Закройте второе окно браузера / частного / инкогнито. Вернитесь в первый браузер и перейдите на страницу About.Это страница с назначением Session [] Откройте новое окно браузера / частного / инкогнито.Вернитесь на страницу контактов на сайте.Вас снова попросят подтвердить подлинность.
После аутентификации браузер начнет цикл перенаправления между сайтом и вашим IP-аутентификацией.
Не имеет значения, находится ли атрибут [Authorize] на контроллере илиДействие.Неважно, есть ли секретный ключ клиента, назначенный в опциях OpenIdConnect.Я добавил переменную Session [] в другое работающее приложение, и у него возникла та же проблема.
Кроме удаления всех переменных Session [], можно ли что-то сделать, чтобы остановить это поведение?
Я знаю, что это длинный пост.Спасибо за чтение до конца и спасибо за любую помощь.