ITfoxtec SAML 2.0 - 单一注销
ITfoxtec SAML 2.0 - Single Logout
我有一个 IdP 和两个 SP(A 和 B)设置。 SSO 在它们之间工作得很好。当我从站点 A 注销时,单一注销也有效(它也将用户从站点 B 注销)但是当我尝试从站点 B 注销时出现问题。它从站点 B 注销用户但是当我导航到站点 A 我是仍然登录,直到我删除会话 cookie 或会话超时。
站点 A 使用 ITfoxtec.Identity.Saml2 SAML2.0 MVC 实现。
如果我手动删除 cookie 并刷新页面,我将被重定向到登录页面。
它似乎终止了会话,但会话 cookie 仍然存在于浏览器中,它允许用户浏览直到它过期,它不能更新它。
SingleLogout 端点与示例相同 (Source from ITfoxtec.Identity.Saml2 - TestWebApp)
你见过这样的吗?我 运行 不知道在这种情况下可以做什么。
public ActionResult SingleLogout()
{
Saml2StatusCodes status;
var requestBinding = new Saml2PostBinding();
var logoutRequest = new Saml2LogoutRequest(config, ClaimsPrincipal.Current);
try
{
requestBinding.Unbind(Request.ToGenericHttpRequest(), logoutRequest);
status = Saml2StatusCodes.Success;
logoutRequest.DeleteSession();
}
catch (Exception exc)
{
// log exception
Debug.WriteLine("SingleLogout error: " + exc.ToString());
status = Saml2StatusCodes.RequestDenied;
}
var responsebinding = new Saml2PostBinding();
responsebinding.RelayState = requestBinding.RelayState;
var saml2LogoutResponse = new Saml2LogoutResponse(config)
{
InResponseToAsString = logoutRequest.IdAsString,
Status = status,
};
return responsebinding.Bind(saml2LogoutResponse).ToActionResult();
}
当浏览器从 IdP 重定向到站点 A 时,可能是您的 IdP 限制将 cookie 发送到站点 A 而不是站点 B。如果是这种情况,您可以尝试使用 POST重定向。 POST 可能不受限制。
您可以通过跟踪 Fiddler 或浏览器中的 HTTPS 流量进行调试。
我有一个 IdP 和两个 SP(A 和 B)设置。 SSO 在它们之间工作得很好。当我从站点 A 注销时,单一注销也有效(它也将用户从站点 B 注销)但是当我尝试从站点 B 注销时出现问题。它从站点 B 注销用户但是当我导航到站点 A 我是仍然登录,直到我删除会话 cookie 或会话超时。
站点 A 使用 ITfoxtec.Identity.Saml2 SAML2.0 MVC 实现。
如果我手动删除 cookie 并刷新页面,我将被重定向到登录页面。
它似乎终止了会话,但会话 cookie 仍然存在于浏览器中,它允许用户浏览直到它过期,它不能更新它。
SingleLogout 端点与示例相同 (Source from ITfoxtec.Identity.Saml2 - TestWebApp)
你见过这样的吗?我 运行 不知道在这种情况下可以做什么。
public ActionResult SingleLogout()
{
Saml2StatusCodes status;
var requestBinding = new Saml2PostBinding();
var logoutRequest = new Saml2LogoutRequest(config, ClaimsPrincipal.Current);
try
{
requestBinding.Unbind(Request.ToGenericHttpRequest(), logoutRequest);
status = Saml2StatusCodes.Success;
logoutRequest.DeleteSession();
}
catch (Exception exc)
{
// log exception
Debug.WriteLine("SingleLogout error: " + exc.ToString());
status = Saml2StatusCodes.RequestDenied;
}
var responsebinding = new Saml2PostBinding();
responsebinding.RelayState = requestBinding.RelayState;
var saml2LogoutResponse = new Saml2LogoutResponse(config)
{
InResponseToAsString = logoutRequest.IdAsString,
Status = status,
};
return responsebinding.Bind(saml2LogoutResponse).ToActionResult();
}
当浏览器从 IdP 重定向到站点 A 时,可能是您的 IdP 限制将 cookie 发送到站点 A 而不是站点 B。如果是这种情况,您可以尝试使用 POST重定向。 POST 可能不受限制。
您可以通过跟踪 Fiddler 或浏览器中的 HTTPS 流量进行调试。