我有一个非常简单的问题,无法解决,我感到很愚蠢。 我正在尝试为IIS托管的网站运行Shibboleth SP3 for SSO。
我在IIS下用index.aspx配置一个示例网站。
我将ISAPI和RequestMap配置如下:
<InProcess logger="native.logger">
<ISAPI normalizeRequest="true" safeHeaderNames="true">
<Site id="1" name="localhost" scheme="http" port="80"/>
</ISAPI>
</InProcess>
<RequestMapper type="Native">
<RequestMap>
<Host name="localhost">
<Path name="secure" authType="shibboleth" requireSession="true" />
</RequestMap>
效果很好,我被重定向到Idp,提取了我的声明。现在,我想在IIS中使用另一个ID为2的站点。这是我的配置:
<InProcess logger="native.logger">
<ISAPI normalizeRequest="true" safeHeaderNames="true">
<Site id="2" name="localhost" scheme="http" port="81"/>
</ISAPI>
</InProcess>
<RequestMapper type="Native">
<RequestMap>
<Host name="localhost">
<Path name="secure" authType="shibboleth" requireSession="true" />
</RequestMap>
该ID与IIS上的站点ID匹配。为了避免出现此问题,我删除了第一个站点的配置。 现在,在重新启动IIS和shib_default服务之后,当我键入http://localhost:81/secure/index.html时,不会重定向到我的IDP。
为什么?我有做错什么吗?
答案 0 :(得分:0)
您正在尝试保护两个不同的localhost http侦听器,但我认为不支持这种方法。我这样做的方法是将site1.dev
和site2.dev
添加到您的主机文件中,并更改IIS配置,以便将site1.dev声明为站点#1的主机名,反之亦然。 / p>
然后,您的shibboleth配置将如下所示:
<InProcess logger="native.logger">
<ISAPI normalizeRequest="true" safeHeaderNames="true">
<Site id="1" name="site1.dev" scheme="http" port="80"/>
<Site id="2" name="site2.dev" scheme="http" port="80"/>
</ISAPI>
</InProcess>
<RequestMapper type="Native">
<RequestMap>
<Host name="site1.dev">
<Path name="secure" authType="shibboleth" requireSession="true" />
</Host>
<Host name="site2.dev">
<Path name="secure" authType="shibboleth" requireSession="true" />
</Host>
</RequestMap>
</RequestMapper>
基本上,如果您尝试使用Shib在非标准端口(81)上运行HTTP,事情会变得很奇怪。即使在开发环境中,我也从未见过有人这样做。而且无论如何,您不能有多个<InProcess>
,<ISAPI>
和<RequestMapper>
元素。
编辑:我认为您可能甚至需要为正在执行的操作定义多个ApplicationOverride。