2011-05-19 57 views
1

我有一個使用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分鐘?)我沒有堅實的詳細閱讀需要多長時間。

我缺少什麼?我應該追求什麼其他渠道?

回答

1

關鍵是我們的應用程序是使用Passenger部署的Rails應用程序。看起來Passenger在第一次調用之後沒有更新環境變量,所以最終可能會得到舊數據。

切換到通過標頭傳遞用戶信息(ShibUseHeaders on)解決了這個問題。

相關問題