登出时mod_auth_mellon报Endpoint "logout/"未处理错误
问题根因
mod_auth_mellon 对所有SAML端点做精确路径匹配,不会自动兼容尾斜杠差异。你访问的登出地址是带尾斜杠的/mellon/logout/,但元数据里注册的SingleLogoutService端点是不带尾斜杠的/mellon/logout,模块匹配不到对应处理逻辑,直接返回404,和日志里报的Endpoint "logout/" not handled by mod_auth_mellon完全吻合。
修复方案
三选一即可,优先选改动最小的第一种:
- 直接修正登出链接,去掉
logout后面的尾斜杠,正确格式为:
注意是https://example.com/mellon/logout?ReturnTo=/logout.html/mellon/logout?不是/mellon/logout/?,参数直接接在路径末尾即可,不需要加斜杠。 - 如果业务侧已经写死了带尾斜杠的访问路径,就修改
sp_metadata.xml中的两处SingleLogoutService配置,把Location值改成带尾斜杠的版本:
改完后重启Apache服务,记得把更新后的SP元数据同步给对接的IdP,避免IdP发起登出时报端点不存在的错误。<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://example.com/mellon/logout/" /> <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://example.com/mellon/logout/" /> - 不想改元数据也不想改业务链接的话,直接在Apache对应虚拟主机配置里加一条重写规则,自动把带尾斜杠的logout请求跳转到正确地址:
加完先执行RewriteEngine On RewriteRule ^/mellon/logout/$ /mellon/logout [L,R=301]apachectl configtest检查配置语法,确认没问题后重载Apache服务就生效。
验证
修复后访问登出地址,正常会跳转到IdP登出页面,完成全链路登出后自动跳转到你指定的/logout.html页面,不会再返回404,mellon诊断日志里也不会再出现端点未处理的报错。
内容的提问来源于stack exchange,提问作者dnraikes
相关产品推荐
相关产品推荐

