2011-05-28 66 views
2

我目前正在使用Ruby,Ruby on Rails,Sinatra和pure Rack Web服務開發分佈式應用程序。服務到服務認證,服務標識和訪問權限管理

我將有一些服務(REST風格的,不是基於SOAP),這將使用JSON,我需要一種方式它們之間的通信過程中保護和驗證那些服務中的身份溝通,所以沒有人能假裝做一項服務並向其他服務提出請求。

其核心思想是將其他服務視爲「用戶」,並能夠驗證其身份並在必要時限制他們對數據的訪問。

所以問題是如何僅使用Ruby來做到這一點,以及如何有效管理服務身份及其訪問權限。

我應該建立一些額外的服務可用的驗證服務嗎?

我應該建立內部寶石來提供密鑰/共享祕密的一些連接中間件?

是否有其他方法可以做到這一點?

回答

1

我會生成一個應用程序ID和祕密,你可以通過每個請求。既然你沒有與其他用戶打交道,只是應用程序嘗試用設計來查看身份驗證令牌。

+0

該解決方案可以在「一對多」服務關係中起作用,但這更像是「多對多」關係。如有必要,每項服務都應該能夠與另一個服務對話。如果其中一項服務會受到影響,我應該能夠通過撤銷對其他用戶的訪問權限或撤銷訪問密鑰來將其與其他組織隔離。 – 2011-05-30 06:22:25

+0

嗯,也許某種中央身份驗證服務器,您可以使用它來管理應用程序的服務憑據?它不是我的專業領域,但我認爲這將是最好的方式 – 2011-05-30 22:35:13

+0

我正在考慮之間的某些事情,比如有效憑證的本地副本,這些副本將通過身份驗證服務進行更新,該服務將能夠通過寶石自動部署它們。沿着這些線的東西。如果有人會有更好的解決方案,即使在幾個月內,請在這裏留下評論:) – 2011-05-31 18:39:05