.net - 尝试访问 Shibboleth SP 元数据时出现 500 错误
问题描述
我正在尝试使用 samltest.id IdP 配置 Shibboleth SP。我的设置如下:
Windows Server 2008 R2、IIS7.5、Shibboleth SP 3.0
我几乎一切正常 - 当尝试访问受保护的页面时,它正确地将用户重定向到 samltest 页面,并且 samltest 吐回正确的“Web 登录服务 - 不支持的请求”错误,因为我没有配置我的 SP测试。
我尝试使用https://samltest.id/upload.php上传我的配置,但此时我碰壁了。fetch 选项根本不起作用,我确信这是因为根本没有生成元数据文件。尝试从 https://{MySite}/Shibboleth.sso/Metadata 生成所述文件会出现 500 错误,我无法在任何地方找到任何信息来告诉我为什么会发生这种情况。
我检查了 Windows 事件查看器、IIS 日志文件、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"/>
如果有人对我可以看的地方有任何建议,我会喜欢的。
解决方案
对于任何偶然发现这个问题的人,我错过了一大堆“当然”的事情。
首先,Shibboleth.sso 页面都只能从服务器本身访问。我一直在尝试从外部访问它们,默认情况下,对这些页面的外部请求被阻止。
一旦我尝试从服务器中访问它们,我得到了一个不同的错误 - “在未配置的位置调用了 Shibboleth 处理程序”。原因是在我的 shibboleth2.xml 文件中,我没有尝试访问的路径的处理程序映射。例如,/Metadata 页面需要一个 Handler 映射,例如:
<Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>
(不完全确定 signing="false" 条目的作用,我只是保持原样)
推荐阅读
- r - 如何在 shinydahsboardPlus 中更改用户图片?
- sql - 选择在多个地方有孩子的父母
- c - 将结构中的 void 指针转换为结构以访问成员
- python - 如何访问字典内的列表索引
- java - 为什么我在打开玩家库存时收到错误消息?
- flutter - 如何使用 video_player 插件在 Flutter Web 上播放 .m3u8 文件?
- curl - 使用 curl 将 Zip 文件上传到 Private Nexus Repo
- javascript - Formik/yup 验证不会触发错误消息
- java - Hybris 18.11 与 GSON 和 Stripe 冲突
- racket - 球拍中后缀解释器的读取语法功能