2016-08-25 56 views
0

我有多個基於Web的應用程序,它們使用Restful Web服務相互通信。應用程序之間的通信並不安全(未執行認證/授權)。基於Spring安全的SSO適用於多種Web應用程序

我想創建一個新的應用程序,它將充當所有其他應用程序的身份驗證服務器,這意味着任何來自任何應用程序的請求都將首先由身份驗證服務器進行身份驗證,並且在身份驗證成功後,服務器將返回令牌或附上一個cookie來請求進一步的溝通。

我正在考慮使用Spring安全性來實現身份驗證服務器。

另外,我想創建一個使用spring security的客戶端,它將與其他應用程序集成以與認證服務器進行交互。

如何實現這一目標?

下面是問題陳述 enter image description here

回答

2

一個需要注意的重要的事情的圖示是認證和會話管理是不同的問題,你要考慮到這一點而設計的系統。

驗證包含回答「誰是你?你真的是你自稱的人嗎?」這個問題。這通常由用戶擁有的東西(如私人密鑰),用戶知道的東西(如密碼)或用戶所擁有的東西(如指紋)完成。

會話管理是一個不同的問題。驗證用戶身份後,您需要將該身份驗證身份與多次呼叫綁定。對於像SSH這樣的內容,這是內置於協議中的。但是,HTTP是無狀態的,因此您需要創建一些隨時間推移跟蹤此身份的繞過狀態(如Cookie)。

對於原始驗證服務器,您可能需要查看OpenId Connect Protocol。它本質上是OAuth中用於處理身份的擴展。另外,請務必閱讀OWASP Authentication Cheat Sheet

對於會話管理,OWASP Session Management Cheat Sheet是一個有用的資源。

1

SSO可以通過多種協議處理:CAS,SAML,OpenID Connect甚至OAuth。

我不會創建一個新的應用程序要做到這一點,但是選擇一個現有的實施和正確配置(例如:https://www.apereo.org/projects/cashttps://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server..

考慮到你有UI交互和應用程序之間的交互,開放ID連接是一個不錯的選擇,看這個優秀的演示文稿:https://vimeo.com/113604459

spring-security-pac4j可以使用所有這些協議。

相關問題