我有一個使用Shibboleth SP(最新版本 - 2.4.2)Shibbolized的Rails應用程序。我使用Apache 2.2。我的IdP是MS AD FS 2.0服務器。Shibboleth SP將錯誤的用戶身份傳遞給應用程序
一切似乎都很好 - 用戶點擊該網站,被重定向到AD FS,獲得身份驗證,然後返回並登錄到該網站。
問題是,一旦你這樣做了,幾乎不可能以及時的方式作爲不同的用戶登錄。你可以清除所有的cookies(我正在用Mac和Safari瀏覽器和Chrome瀏覽器),並重新啓動瀏覽器,但如果我第一次通過身份驗證,然後嘗試以Carol身份登錄,我仍然會登錄到應用程序作爲愛麗絲。
清除Cookie後shibd收到SAML響應具有正確的身份吧:
<AttributeStatement>
<Attribute Name="http://schemas.xmlsoap.org/claims/CommonName">
<AttributeValue>Carol</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress">
<AttributeValue>[email protected]</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn">
<AttributeValue>[email protected]</AttributeValue>
</Attribute>
</AttributeStatement>
但當Shibboleth的SP通過環境變量我的應用程序,它不是發出錯誤的憑據:
[DEBUG 05/19 16:30:09] ENV: Shib-Session-ID => _615014991ed1b7dcc43f647ceb1f4944
[DEBUG 05/19 16:30:09] ENV: Shib-Identity-Provider => http://REDACTED/adfs/services/trust
[DEBUG 05/19 16:30:09] ENV: Shib-Authentication-Instant => 2011-05-19T21:17:23.861Z
[DEBUG 05/19 16:30:09] ENV: Shib-Authentication-Method => urn:federation:authentication:windows
[DEBUG 05/19 16:30:09] ENV: Shib-AuthnContext-Class => urn:federation:authentication:windows
[DEBUG 05/19 16:30:09] ENV: Shib-Session-Index => _cadfb4e6-ffb2-45f9-aab5-6bce8c3bc17a
[DEBUG 05/19 16:30:09] ENV: cn => alice
[DEBUG 05/19 16:30:09] ENV: email => [email protected]
[DEBUG 05/19 16:30:09] ENV: principal => [email protected]
儘管刪除了所有的cookies,Shib-Session-ID也是一樣的。不知何故,它似乎將兩個交互關聯起來,重新建立現有會話,而不是與SAML響應中的帳戶信息進行新的會話。
我已經將所有可以找到的緩存超時值設置爲60秒,但在瀏覽器關閉的情況下等待2-3分鐘不足以讓它創建新會話。
<StorageService type="Memory" id="mem" cleanupInterval="60"/>
<SessionCache type="StorageService" StorageService="mem" cacheTimeout="60"
inprocTimeout="60" cleanupInterval="60" />
...
<Sessions lifetime="60" timeout="60" checkAddress="false" relayState="ss:mem"
handlerSSL="false">
重新啓動Apache和shibd作品一樣,關閉瀏覽器,讓它坐了很長一段時間(10-15分鐘?)我沒有堅實的詳細閱讀需要多長時間。
我缺少什麼?我應該追求什麼其他渠道?