【问题标题】:Shibboleth SP ignores MetadataProviderShibboleth SP 忽略 MetadataProvider
【发布时间】: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 正确解析了 &lt;MetadataProvider&gt; 标记,但似乎完全忽略了它。 将 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

【问题讨论】:

    标签: shibboleth shibboleth-sp


    【解决方案1】:

    当我看到这通常是权限问题...即运行shibd 进程的用户无权访问元数据文件(或者在这种情况下更可能是用于验证的权限文件) .我认为仅在 Dockerfile 中执行 docker add 并不足以达到该目标,因为 shibd 无法读取 /etc/ssl/aai/

    我必须提取您的存储库并自己尝试确定要做什么,但似乎一个快速的软糖是将证书放入/etc/shibbolethshibd 可以读取该目录。

    编辑:除了权限问题之外,它似乎无法下载该元数据...我通过添加

    更正了权限问题
    RUN chown -R shibd:shibd /etc/shibboleth/
    RUN chown -R shibd:shibd /var/cache/shibboleth/
    

    到您的 Dockerfile。

    现在我在尝试测试配置时看到此错误:

    root@ac4861a1faae shibboleth]# /usr/sbin/shibd -t
    2019-10-03 16:51:39 CRIT XMLTooling.Config : libcurl lacks OpenSSL-specific options, this will greatly limit functionality
    2019-10-03 16:51:39 WARN Shibboleth.Application : insecure cookieProps setting, set to "https" for SSL/TLS-only usage
    2019-10-03 16:51:39 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites
    2019-10-03 16:51:39 ERROR XMLTooling.libcurl.InputStream [dfn-aai-test-metadata]: error while fetching http://www.aai.dfn.de/fileadmin/metadata/dfn-aai-test-metadata.xml: (22) The requested URL returned error: 404 Not Found
    2019-10-03 16:51:39 ERROR XMLTooling.ParserPool [dfn-aai-test-metadata]: fatal error on line 0, column 0, message: internal error in NetAccessor
    2019-10-03 16:51:39 ERROR OpenSAML.MetadataProvider.XML [dfn-aai-test-metadata]: error while loading resource (http://www.aai.dfn.de/fileadmin/metadata/dfn-aai-test-metadata.xml): XML error(s) during parsing, check log for specifics
    2019-10-03 16:51:39 WARN OpenSAML.MetadataProvider.XML [dfn-aai-test-metadata]: adjusted reload interval to 600 seconds
    2019-10-03 16:51:39 WARN OpenSAML.MetadataProvider.XML [dfn-aai-test-metadata]: trying backup file, exception loading remote resource: XML error(s) during parsing, check log for specifics
    2019-10-03 16:51:39 ERROR XMLTooling.ParserPool [dfn-aai-test-metadata]: fatal error on line 0, column 0, message: unable to open primary document entity '/var/cache/shibboleth/federation-dockermeta-metadata.xml'
    2019-10-03 16:51:39 ERROR OpenSAML.MetadataProvider.XML [dfn-aai-test-metadata]: error while loading resource (/var/cache/shibboleth/federation-dockermeta-metadata.xml): XML error(s) during parsing, check log for specifics
    2019-10-03 16:51:39 CRIT Shibboleth.Application : error initializing MetadataProvider: XML error(s) during parsing, check log for specifics
    overall configuration is loadable, check console or log for non-fatal problems
    

    而且,果然……尝试从 docker 容器中卷曲该 URL 失败:

    [root@ac4861a1faae shibboleth]# curl http://www.aai.dfn.de/fileadmin/metadata/dfn-aai-test-metadata.xml
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>404 Not Found</title>
    </head><body>
    <h1>Not Found</h1>
    <p>The requested URL was not found on this server.</p>
    </body></html>
    

    即使它在我的本地机器上成功。使用静态文件有效,请参阅:https://i.imgur.com/gXxC7z9.png,这基本上是我希望看到的实际上并未与该 IdP 集成的 SP。

    所以,我认为问题出在你的 docker 网络中。

    编辑#2:不,刚刚杀死了我以某种方式没有连接的虚拟网络服务器正在运行,并且运行良好。就像我说的那样,这是一个权限问题。将这两行 RUN 添加到 Dockerfile 的末尾,它应该可以工作。

    【讨论】:

    • 好的......你是对的,添加RUN chown -R shibd:shibd /etc/shibboleth/(并移动证书位置)解决了这个问题。它无法读取dfn-aai.g2.pem,因此甚至没有尝试加载元数据。但是我很震惊,这根本不会在日志中产生任何错误...我将再次启用 DEBUG 日志记录,现在我知道要查找什么了。
    • 我还注意到,虽然我的配置和证书都是使用 ADDDockerfile 添加的,但它们使用不同的权限添加:-rw------- 1 root root 2468 Mar 11 2017 dfn-aai.g2.pem-rwxr-xr-x 1 root root 6936 Oct 3 18:56 shibboleth2.xml跨度>
    猜你喜欢
    • 2015-05-16
    • 2015-08-31
    • 1970-01-01
    • 2016-09-16
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多