Создайте веб-приложение поставщика услуг SAML2 на основе .NET MVC (3). Для аутентификации мы используем библиотеку ComponentSpace SAML2, а не Shibboleth SP. Вот соответствующая логика контроллера:
public class SignOnController : Controller
{
// constructor-inject _services
[HttpPost]
public ActionResult SendAuthnRequest(string userName, string returnUrl)
{
// this users ComponentSpace internally to push user to IdP
_services.SamlServiceProvider.SendAuthnRequest(args);
return new EmptyResult();
}
[HttpPost]
public ActionResult ReceiveAuthnResponse()
{
var samlResponse = _services.SamleServiceProvider
.ReceiveSamlResponse(args);
// ...
return Redirect(samlResponse.RelayResourceUrl ?? defaultUrl);
}
}
В конечном итоге пользователь попадает либо на URL-адрес реле, либо на страницу входа по умолчанию. Однако, когда они щелкают ссылку, а затем нажимают кнопку «Назад», браузер возвращается к странице с ошибкой на сервере Shibboleth IdP. После этого кнопки браузера вперед и назад окончательно становятся бесполезными.
Я делаю что-то неправильно в любом из вышеперечисленных методов? Должен ли я возвращать View() вместо EmptyResult() при отправке? Есть ли способ сбросить историю браузера, чтобы предотвратить повторные обратные передачи обратно к IdP? Это что-то, что я могу настроить в реализации ComponentSpace?