问题描述
我将 ComponentSpace 用于 SSO,它工作正常,但是当我尝试从 SP 发送 SendSLO 时出现错误,其中 SLO 由 ADFS 服务器 (IdP) 启动。
代码:
bool isRequest = false;
string logoutReason = null;
string partnerSP = null;
try
{
ComponentSpace.SAML2.SAMLServiceProvider.ReceiveSLO(Request,out isRequest,out logoutReason,out partnerSP);
}
catch (SAMLProtocolException ex)
{
if (ex.Message != "A logout response was unexpectedly received.") //Multiple SLOs can be sent on each logout
CommonRepository.LogException(ex.Message,ex,"SAML logout error");
}
catch (Exception ex)
{
CommonRepository.LogException(ex.Message,"SAML logout error");
}
if (isRequest) {
// logout locally.
FormsAuthentication.SignOut();
// Respond to the IdP-initiated SLO request indicating successful logout.
ComponentSpace.SAML2.SAMLServiceProvider.SendSLO(Response,null); // Fails at this point
} else {
// SP-initiated SLO has completed.
//FormsAuthentication.RedirectToLoginPage();
// This will log out the user from Communifire Application
Utilities.logoutWithoutRedirect();
.....
}
当 IdP 发起 SLO 时,我首先调用 ReceiveSLO,然后从服务提供者注销,最后调用 SendSLO,但它抛出 ComponentSpace.SAML2.Exceptions.SAMLProtocolException: '没有挂起的身份提供者注销请求。'
我该如何解决这个问题?如果我调用 IsSendSLOPending,它返回 false,这是为什么?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)