在.NET MVC(3)上構建SAML2服務提供者Web應用程序。我們使用ComponentSpace的SAML2庫進行身份驗證,而不是 Shibboleth SP。這裏是相關的控制器邏輯:如何在Shibboleth的SAML SSO之後修復瀏覽器後退按鈕問題
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的實現中配置的東西嗎?
偉大的問題。你找到解決方案嗎?我正在處理同樣的問題。 – BryceH 2015-01-15 19:29:21
@BryceH不幸的是,沒有。你或許可以在這個問題上提供賞金,但看看其他人是否知道任何事情。 – danludwig 2015-01-15 19:32:01