2011-03-25 62 views
4

在我們公司,我們有幾個豐富的Java應用程序,內部用戶和外部用戶都使用它們。我們希望開始遷移這些系統以支持單點登錄機制,並可能允許我們的外部客戶使用他們自己的認證機制來驗證其用戶。在富客戶端(而不是web)上實現單點登錄?

舉例來說,如果我們有一個客戶端誰擁有大量的用戶,他們希望有自己的用戶只能使用其公司的登錄信息登錄,我們想支持這種行爲。

我們已經調查了使用基於證書認證系統(在常見的是Kerberos的一個),並使用該認證機制,允許在我們的系統中使用的外部認證服務。

這是可行的嗎?我們需要了解具體的實施細節嗎?我並不擔心具體的技術(雖然建議當然受到歡迎),更多關於核心概念,並確保我們儘可能做正確的事情。

怎麼樣的授權 - 即獲得不同的服務。在處理(可能)斷開的身份驗證服務時,如何處理這個問題是否存在標準或最佳實踐?作爲附加說明,我們的前端系統是用Java編寫的,因此與在Java框架中實現此行爲相關的特定信息(例如有用的庫,特定於Java的潛在缺陷等)肯定是值得讚賞的。

回答

1

是否可行?是。
是否有我們需要注意的具體實施細節?是。

每種類型的安全實現的都有自己的實現細節,你只是將不得不弄清楚。每個人都不同,並有其自己的細微差別。

你應該能夠實現您選擇安全的任何類型。 Kerberos是一個不錯的選擇。你也可以看看Openid和CAS。還有很多其他的。

處理實際安全本身你可能會考慮尋找到春季安全。 Spring Security能夠很好地處理認證/授權。然而,Spring的安全性大部分都是真正關注網絡安全而不是客戶端系統,所以你很可能不得不自己實現許多認證機制(當然,儘可能使用庫可用庫)。

在設計系統時,特別是如果你將有許多不同類型的登錄類型的,試圖建立,你可以爲可插拔的登錄系統。這將需要時間和大量的試驗和錯誤。

我會看看到Spring Security 3書。這不是一本好書,但它確實解釋瞭如何正確實施安全。強烈建議使用彈簧工作,因爲嘗試自行實施安全性將是一項相當艱鉅的任務。

好運。

+0

好知道Spring Security的 - 我不知道,特定子庫。我們絕對不想實現我們自己的安全 - 這似乎是一個傻瓜的差事。感謝您的回覆,我相信隨着我們的不斷髮展,我們會爲社區提出更多問題。 – aperkins 2011-03-25 18:12:15