尝试访问Shibboleth SP元数据时出现500错误

时间:2019-06-08 21:21:42

标签: .net iis-7.5 shibboleth shibboleth-sp

我正在尝试使用samltest.id IdP配置Shibboleth SP。我的设置如下:

Windows Server 2008 R2,IIS7.5,Shibboleth SP 3.0

几乎所有功能都可以正常工作-尝试访问受保护的页面时,它可以将用户正确地重定向到samltest页面,并且samltest吐出正确的“ Web登录服务-不支持的请求”错误,因为我尚未配置我的带有samltest的SP。

我尝试使用https://samltest.id/upload.php来上传我的配置,但是到现在,我遇到了麻烦。 fetch选项根本不起作用,我敢肯定这是因为根本没有生成Metadata文件。尝试从https:// {MySite} /Shibboleth.sso/Metadata生成上述文件会出现500错误,并且我在任何地方都找不到任何信息可以告诉我为什么会发生这种情况。

我已经检查了Windows事件查看器,IIS LogFiles和shibd日志文件-没有任何迹象表明我做错了。

这是我的shibboleth.xml文件的精简版本,以防万一我遗漏了一些明显的东西:

<SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config" xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config" clockSkew="180">
<OutOfProcess tranLogFormat="%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a" />
<InProcess>
    <ISAPI normalizeRequest="true" safeHeaderNames="true">
        <Site id="{MySiteID}" name="{MySite}" scheme="https" port="443"/>
    </ISAPI>
</InProcess>
<RequestMapper type="Native">
    <RequestMap>
        <Host name="{MySite}">
            <Path name="content" authType="shibboleth" requireSession="true"/>
        </Host>
    </RequestMap>
</RequestMapper>
<ApplicationDefaults entityID="https://{MySite}/shibboleth" REMOTE_USER="eppn subject-id pairwise-id persistent-id" cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">
    <Sessions lifetime="28800" timeout="3600" relayState="ss:mem" checkAddress="true" handlerSSL="true" cookieProps="https">
        <SSO entityID="https://samltest.id/saml/idp">SAML2</SSO>
        <Logout>SAML2 Local</Logout>
    </Sessions>
    <Errors supportContact="{MyEmail}" helpLocation="/error.aspx" styleSheet="/styles/style.css"/>
<MetadataProvider type="XML" validate="true" url="https://samltest.id/saml/idp" backingFilePath="SAMLtest.xml"></MetadataProvider>          
    <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>
    <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>
    <CredentialResolver type="File" use="signing" key="sp-signing-key.pem" certificate="sp-signing-cert.pem"/>
    <CredentialResolver type="File" use="encryption" key="sp-encrypt-key.pem" certificate="sp-encrypt-cert.pem"/>
</ApplicationDefaults>
<SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/>
<ProtocolProvider type="XML" validate="true" reloadChanges="false" path="protocols.xml"/>

如果有人对我可以看的地方有任何建议,我会喜欢的。

2 个答案:

答案 0 :(得分:1)

对于任何一个在这个问题上绊脚石的人,我错过了一堆“当然”的东西。

对于初学者来说,只能从服务器内部访问Shibboleth.sso页。我一直在尝试从外部访问它们,默认情况下,对这些页面的外部请求被阻止。

一旦尝试从服务器内部访问它们,就会收到另一个错误-“在未配置的位置调用Shibboleth处理程序”。这样做的原因是,在我的shibboleth2.xml文件中,我没有要尝试访问的路径的Handler映射。例如,/ Metadata页面需要一个Handler映射,例如:

<Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>

(不完全确定signing =“ false”条目的作用,我只是保持原状)

答案 1 :(得分:0)

我在启用 SELinux 时得到了这个(安装在 RHEL8 上) 症状是来自 Apache 的 500 错误,shibd 日志不记录任何传入的请求。(奇怪的是,/Shibboleth.sso/Session url 确实有效)

检查 /var/log/audit 中的日志,在 /etcv/selinux/config (+reboot) 中设置 SELINUX=permissive 以查看是否存在问题。