如何修改ITfoxtec Identity SAML 2.0代码,以POST发送Signed LogoutRequest
解决Itfoxtec Identity SAML 2.0发送SAML注销请求时使用POST方式的问题
问题核心
你的代码当前默认使用HTTP GET(SAML2 Redirect绑定)发送注销请求,但IDP的SLO端点仅支持HTTP POST绑定,因此触发了MessageDecodingException错误。
具体修改步骤
指定注销请求绑定类型为POST
在构建Saml2LogoutRequest实例时,显式设置绑定类型为HttpPost,覆盖默认的HttpRedirect:var logoutRequest = new Saml2LogoutRequest(samlConfiguration, currentUser); // 强制使用POST绑定 logoutRequest.Binding = Saml2BindingType.HttpPost;生成自动提交的POST表单
不再通过重定向(Redirect)发送请求,而是使用库提供的CreatePostFormHtml方法生成包含SAML请求的HTML表单,返回给前端自动提交:var postFormContent = logoutRequest.CreatePostFormHtml(); // 返回HTML内容,浏览器会自动执行POST提交 return Content(postFormContent, "text/html");确认IDP配置正确性
确保SamlIdpSettings中的注销地址已正确设置为IDP提供的POST SLO端点:samlIdpSettings.LogoutUrl = "https://idpqa.csu.edu.au/idp/profile/SAML2/POST/SLO";
效果说明
修改后,前端会收到一个自动提交的HTML表单,以HTTP POST方式将SAML注销请求发送到IDP的指定端点,完全匹配IDP的解码要求,即可解决UnableToDecode错误。
内容的提问来源于stack exchange,提问作者David Archer
相关产品推荐
相关产品推荐

