SP发起SSO时访问/adfs/ls路径出现404错误求助
排查ADFS与Shibboleth SSO重定向404问题
结合你描述的Windows Server 2012 R2 ADFS + Ubuntu 12.x Shibboleth SP集成场景,重定向到https://myfederation-service-name/adfs/ls/时出现404,大概率是以下几个环节出了问题,按优先级逐一排查:
1. 确认ADFS登录端点是否正常启用
ADFS的/adfs/ls/是核心登录端点,首先要确保它在ADFS控制台中处于启用状态:
- 打开ADFS管理控制台,导航到服务 > 端点
- 在列表里找到SAML 2.0/WS-Federation分类下的
/adfs/ls/,确认状态为「启用」 - 如果是禁用状态,右键选择「启用」,然后重启ADFS服务:
net stop adfssrv && net start adfssrv
另外要核对ADFS的对外服务URL:
- 进入服务 > 联合身份验证服务属性,确认「联合身份验证服务名称」对应的URL是
https://myfederation-service-name/,这个必须和Shibboleth SP配置里的IDP实体ID完全匹配。
2. 检查ADFS服务器的IIS配置
ADFS依赖IIS托管前端服务,IIS的虚拟目录或应用池配置异常会直接导致404:
- 打开IIS管理器,找到ADFS对应的默认网站「ADFS」
- 确认网站下存在「ls」虚拟目录,物理路径指向
C:\Windows\ADFS\ls,且关联的应用程序池是「ADFSAppPool」(状态为「正在运行」) - 检查IIS的请求筛选规则:进入ADFS网站的「请求筛选」,确认没有拒绝
/adfs/ls/路径的规则 - 修复IIS映射异常:在ADFS服务器上以管理员身份运行PowerShell命令:
Update-MSADFSWebConfig,该命令会重置ADFS与IIS的关联配置,解决常见的映射损坏问题
3. 验证网络与DNS连通性
客户端(包括Ubuntu SP服务器和用户浏览器)必须能正确访问ADFS服务器的443端口:
- 在Ubuntu服务器上执行命令:
curl -v https://myfederation-service-name/adfs/ls/,观察返回结果:- 如果返回404,说明ADFS服务器本身未正确响应该路径,回到前两步排查
- 如果能返回ADFS登录页面或302跳转,说明网络正常,问题出在Shibboleth SP的配置
- 检查防火墙:ADFS服务器的Windows防火墙要允许443端口的入站流量;Ubuntu服务器的防火墙要允许出站到ADFS 443端口的流量
4. 核对Shibboleth SP的IDP配置
Shibboleth SP里的IDP单点登录URL可能存在拼写错误:
- 打开Shibboleth的IDP配置文件(通常是
/etc/shibboleth/idp.xml或导入的元数据文件) - 找到
<SingleSignOnService>元素,确认Location属性值是https://myfederation-service-name/adfs/ls/,注意末尾斜杠、域名拼写是否正确 - 重启Shibboleth服务:
service shibd restart,确保配置生效
5. 确认ADFS元数据的正确性
如果是通过元数据导入IDP配置,要确保元数据是最新且正确的:
- 在浏览器中访问ADFS的元数据URL:
https://myfederation-service-name/federationmetadata/2007-06/federationmetadata.xml - 查找
<IDPSSODescriptor>下的<SingleSignOnService>节点,确认Location属性指向正确的/adfs/ls/路径 - 如果元数据有误,重新下载并导入到Shibboleth SP,再重启服务
内容的提问来源于stack exchange,提问作者rohitvk
相关产品推荐
相关产品推荐

