【发布时间】:2020-02-01 17:44:09
【问题描述】:
我第一次尝试运行 Shibboleth SP,但我立即遇到了一个三天以来我不明白的问题:/
我首先使用 docker 镜像 unicon/shibboleth-sp 作为基础。
到目前为止,我刚刚在两个地方修改了shibboleth2.xml。我在<SSO> 部分中写入了一个特定的 IdP entityID,并添加了一个指向包含 IdP 元数据的外部 XML 文件的 <MetadataProvider>。
恕我直言,当我尝试访问 SP 上受保护的 URL 时,这应该足以重定向到 IdP。但相反,我得到了 Shibb-Exception No MetadataProvider available。
这些是我对shibboleth2.xml所做的更改:
<ApplicationDefaults entityID="https://sp.example.org/shibboleth" ... >
...
<Sessions ... >
...
<!--
Configures SSO for a default IdP. To properly allow for >1 IdP, remove
entityID property and adjust discoveryURL to point to discovery service.
You can also override entityID on /Login query string, or in RequestMap/htaccess.
-->
<SSO entityID="https://testidp.aai.dfn.de/idp/shibboleth"
discoveryProtocol="SAMLDS" discoveryURL="http://www.aai.dfn.de/DS/WAYF">
SAML2
</SSO>
...
</Sessions>
...
<MetadataProvider type="XML" id="dfn-aai-test-metadata"
url="http://www.aai.dfn.de/fileadmin/metadata/dfn-aai-test-metadata.xml"
backingFilePath="federation-dockermeta-metadata.xml" maxRefreshDelay="3600">
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
<MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.g2.pem" verifyBackup="false"/>
</MetadataProvider>
...
</ApplicationDefaults>
经过几天的调试,我很确定 SP 正确解析了 <MetadataProvider> 标记,但似乎完全忽略了它。
将 Log-Levels 设置为 DEBUG 表明 MetadataProvider 已被解析(其 XML 结构在日志输出中可见),但它不会尝试访问 URL。甚至没有对www.aai.dfn.de 的DNS 请求,也没有尝试访问该URL。此外,日志中没有错误。甚至没有任何迹象表明它试图在日志中加载外部元数据。在尝试访问受保护的资源后,我在日志文件中遇到的第一个也是唯一一个错误是 No MetadataProvider available。
我以前从未设置过 Shibboleth SP(因为每个人都告诉我这是一个 PITA)。我不确定这是否是 Shibboleth SP 或 docker 映像的问题。很可能是我的问题,我只是错过了一些非常明显的东西......
我需要帮助:)
我使用的完整代码可以在这里找到: https://gitlab.com/xsrf/shibb-sp/tree/5380f4550ac1a5ffb47d96138d837f1cf6acdb60
【问题讨论】: