2015-05-30 98 views
12

所以我的情況是這樣:與SAML和製作現場中央登錄身份提供商合作

我有兩個網站a.com與本站b.com和一個認證服務器cauth.com

什麼客戶想要的是......

當a.com或b.com用戶用戶填寫的土地在各自的網站上的登錄表單,但表單的動作將在cauth.com(cauth。 COM /身份驗證)。當用戶在cauth上進行身份驗證時,他會在這兩個站點上登錄。

我在考慮實現SAML以達到同樣的效果,並且在認證後流量與 一樣iDP(cauth.com)將向這兩個服務提供商發送SAML響應,並且用戶將被授權訪問這兩個站點。

我是SAML的新手,無法獲得相應的文檔和理解。

我想知道的是:

  1. 是我的問題的解決方案的價值實現?
  2. 是否有可能使網站(cauth.com)作爲身份提供者。我看過線程Making your PHP website into SAML Identity Provider但無法獲得適當的解決方案。
+0

你檢查出[PHP-SAML(https://github.com/onelogin/php-saml )項目? – alexw

+0

@alexw我檢查了simplesaml庫,因爲我沒有那麼好的saml php-saml庫似乎太難以執行 – alwaysLearn

+0

我不確定我是否理解。你想實現SAML作爲身份提供者,對吧?然後從別人的實現中工作起來比從頭開始編寫它要容易得多。 否則,您可以查看您的客戶是否願意接受OAuth/OpenID或其他替代身份提供商,具體取決於他們的需求。 [這個問題](http://stackoverflow.com/questions/2837553/saml-vs-federated-login-with-oauth)有一些很好的答案。 – alexw

回答

2

SimpleSamlPHP應該很容易設置。您需要複製文件夾modules/exampleauth/,然後更改文件modules/<yournewmodule>/lib/Auth/Source/External.php以便爲您的網站工作。文檔雖然不錯,但它絕對是您需要的最簡單的東西,也是最合適的。

我應該補充說明,按照設置SimpleSamlPHP的說明,應該讓您基本瞭解哪些元數據文件最重要,以及它們的居住地點和事物如何交互。

+0

我還應該補充一點,我認爲你可以用兩臺服務器來實現。您可以在** a.com **上運行simpleSamlPhp併爲** a.com **構建登錄名,然後構建一個simplesamlphp模塊以在** b.com上的框架中加載** a.com **登錄名* *。 –

+0

謝謝..我按要求實現了登錄,但現在我想從saml會話以及它登錄的網站註銷?簡而言之,我想從a.com.Aak.com上銷燬cauth.com上的會話。關於如何做到這一點的任何建議? – alwaysLearn

+0

請參閱http://stackoverflow.com/questions/30816127/implement-single-logout-in-simplesamlphp – alwaysLearn

2

我不確定您的應用程序使用哪種技術。如果您可以自由切換到JAVA,那麼我可以建議您使用Spring-Saml,因爲它很容易實現並滿足您的要求。 Spring-Saml具有良好的文檔和在線支持以及開源項目。 您可以參考這個link爲Spring-SAML和代碼回購使用該link

您可以在abc.com和xyz.com應用,使IT服務提供商(SP)集成彈簧SAML和您可以部署它也在不同的領域。然後,您需要爲您的SP提供一個IDP(身份提供商服務器)。因此,您可以使用Active Directory或LDAP的ADFS充當IDP。

我們對我們的客戶有類似的要求。我最近在我的項目中集成了spring-saml。

請讓我知道的任何幫助

1

聯合單點登錄SAML一樣或ID連接(SSO)機制會給你想要的東西。

這有一個重要的區別,即登錄表單不會顯示在a.comb.com上,但這些網站寧願重定向到,用戶將在那裏進行身份驗證。然後將發送可驗證的「斷言」給用戶已成功驗證的a.comb.com。這構成了聯合SSO的主要目標之一,即用戶憑證不應由外國網站提供/存儲,並使認證方式與目標網站(「依賴方」)無關。

所以你應該尋找的是適合你的平臺的SAML或OpenID Connect的實現(不要自己寫!)並利用它。

0

我想你的描述中有一個微妙的誤解。對於SAML身份驗證,如果站點a.com上的用戶單擊登錄鏈接/按鈕或嘗試訪問安全頁面,該用戶將收到http 305重定向到cauth.com。在那裏用戶將輸入他們的憑證,並且用戶將被重定向回a.com。如果該用戶然後去了網站b.com並嘗試訪問安全內容,b.com用相同的http 305重定向將用戶發送到cauth.com。這一次,因爲用戶的瀏覽器在cauth.com上有活動會話,所以用戶沒有看到憑證表單。相反,IDP會將用戶認證成功返回b.com。用戶覺得他們自動登錄到站點b,但實際上發生了SAML身份驗證流程。

Hans Z的回答消除了IDP僅根據a或b(依賴方或RP,也稱爲服務提供商或SP)的請求發送斷言的事實。這不是對所有RP的廣播。

我會強化SAML不支持a.com從用戶處接收憑證,然後將它們傳遞給身份驗證引擎。這是LDAP可能熟悉的一種模式。

看看序列圖如下指令the wikipedia entry on SAML.

-1

後續獲得SAML執行力度與PHP。

它的工作非常適合我用CI和和PHP