这是我们第一次尝试安装 Shibboleth,当在顶级域名上为网站应用单点登录时,一切都运行正常,但在子目录下则不行。
以下是我们运行良好的 Apache 虚拟主机配置文件:
<VirtualHost *:443>
... some other settings
<Location />
AuthType shibboleth
Require shibboleth
ShibRequireSession On
Order allow,deny
Allow from all
</Location>
</VirtualHost>
通过此配置,我们可以执行以下操作:
场景 A
- 在
https://myawesomewebsite.com/secure
我的网络浏览器中 - 我的网络浏览器将我重定向到我的单点登录服务
https://somesinglesignon.com/authenticate
- 我输入我的用户名和密码并按
https://somesinglesignon.com/authenticate
提交 - 服务器将我送回
https://myawesomewebsite.com/secure
以上一切都运行良好。
现在我要修改我的虚拟主机文件,使其变为<Location />
。<Location /secure>
所以我的虚拟主机文件现在如下所示:
<VirtualHost *:443>
... some other settings
<Location /secure>
AuthType shibboleth
Require shibboleth
ShibRequireSession On
Order allow,deny
Allow from all
</Location>
</VirtualHost>
现在,当我尝试重复步骤 1 到 4 时,我得到的却是以下内容:
场景 B
- 在
https://myawesomewebsite.com/secure
我的网络浏览器中 - 我的网络浏览器将我重定向到我的单点登录服务
https://somesinglesignon.com/authenticate
- 我输入我的用户名和密码并按
https://somesinglesignon.com/authenticate
提交 - 服务器将我送回
https://myawesomewebsite.com/Shibboleth.sso/SAML2/POST
为什么场景 A 的步骤 4 与场景 B 的步骤 4 不同?如何使 A.4 与 B.4 相同?
答案1
请尝试以下操作:
<Location />
AuthType shibboleth
require shibboleth
Order allow,deny
Allow from all
</Location>
<Location /secure>
AuthType shibboleth
ShibRequireSession On
ShibUseHeaders On
require valid-user
</Location>
#<Location /secure>
# AuthType shibboleth
# Require shibboleth
# ShibRequireSession On
# Order allow,deny
# Allow from all
#</Location>