我正在处理这个问题。我不相信这是在Shibboleth的IDP任何CORS支持,我与去解决的办法是从客户的积极的保活平:
- 定期做一个Ajax请求Shibboleth的下一个位置AUTH会议继续从超时会话(例如,使用的setTimeout)
- 如果这个请求失败,扔了提示用户只要用something like this
重新加载页面的浏览器标签页一整页的错误是开放的,并且客户端机器是清醒的,这将防止这种类型的XHR错误至少session "lifetime":
寿命(时间单位为秒)(默认为28800) 以秒为单位由SP维持一个会话将是有效的最长持续时间。实际时间可能小于此值(如果IdP指示它应该更短),但永远不会更长。请注意,这不会影响应用程序维护的会话。
如果客户端计算机进入睡眠状态和足够坪被错过,或者如果SP的会话存储被清除,他们会很直接获得全屏幕的错误,并得到重新加载要么重新验证或只是重新建立他们的Shibboleth会话。
我认为这是我们无法在IDP中使用CORS的最佳方式!
下面是Apache的配置,结束了的情况下,任何人的土地,我在这里工作:
RewriteEngine On
<Location />
AuthType Shibboleth
ShibUseHeaders On
ShibRequireSession On
Require valid-user
AuthGroupFile /etc/httpd/groups
</Location>
RewriteCond "%{LA-F:REMOTE_USER}" =""
RewriteRule ^/session-ping$ /yoursessiondoesnotexist [PT,L]
<Location /yoursessiondoesnotexist>
AuthType None
Require all granted
</Location>
RewriteCond "%{LA-F:REMOTE_USER}" !=""
RewriteRule ^/session-ping$ /ok.html [PT,L]
Alias /ok.html /var/www/ok.html
SetEnvIf Request_URI "^/session-ping$" DONTLOG
CustomLog /dev/stdout ncgl env=!DONTLOG
我查询/会话平每隔五与XHR秒,扔了我的“会话过期“获取非200状态码时的模式/调光器。