我正在處理這個問題。我不相信這是在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狀態碼時的模式/調光器。