2011-02-09 114 views
9

背景/上下文在哪裏將用戶憑證存儲在企業應用程序(EAI)中?

我們正在開發事件通知服務。高級應用程序如下所示: high level flow

我們的開發範圍涉及widget和ENS。

ENS」充當用戶感興趣的某些類型事件的集中中心點。 任何想知道何時發生這些類型事件的用戶都會註冊ENS, ,它按順序標識事件並將訂閱通知與相匹配。

誰願意所有本應該是集成應用(數據庫,SAP系統等)

的事件序列的有效用戶的用戶:

enter image description here

現在我的問題是:

什麼是存儲用戶數據庫,SAP等證書最好的事情。

編輯 應該多久的用戶進行身份驗證?應該每次發送郵件?(正如@duffymo提到的,如果我使用這種策略,它會影響源系統)

附加信息: ENS是web服務。

ENS輪詢SAP(和其他應用程序),這就是問題變得越來越複雜的地方。 在SAP中有數據級授權。所以不是所有的用戶都可以看到所有的事件/數據。

如果SAP已將數據與授權查看的用戶信息一起壓入,則根本沒有問題。

案例1:計劃是由ENS

  1. 用戶發起訂閱訂閱。在訂閱時,用戶在SAP系統中檢查他的授權。如果確定,那麼他將被允許進行訂閱。
  2. 調度程序在計劃時間運行。
  3. 調度程序標識訂閱的用戶。
  4. 如果事件發生,調度程序會將用戶存儲的憑據(在ENS中存儲)用於POLL。
  5. 如果有更改,請通知用戶。

Disadvs這裏:

  • 用戶憑據存儲在某個地方 外部 - 安全團隊可能不會 接受
  • 如果多個用戶 訂閱了同一塊 信息Reduntant命中

情況2:調度程序由WIDGET啓動。用戶信用將僅存儲在用戶本地機器中。 Diadv:

  • 如果訂閱每日,如果 用戶系統/部件不起來。用戶可能會錯過在週末發生的通知 。
  • 如果還有更多 的訂閱者向 訂閱了同一條信息,則還原劑會向服務器發送。
+0

你用什麼來實現ENS服務?這是基於JMS服務器還是基於WEB應用程序?你正在開發自己的通知和訂閱協議?另外,如何將事件推出想要通知他人的應用程序,ENS是否針對事件輪詢SAP和其他應用程序,還是SAP將事件推出? – ams

回答

3

通常它是爲數據庫,SAP等提供憑據的應用程序。單個用戶將具有存儲在LDAP或數據庫中的憑證;身份驗證和授權將作爲應用程序,EAI服務器或SiteMinder等應用程序的交叉問題處理。

傳入的請求將被攔截並檢查授權令牌。如果令牌未出現,請檢查身份驗證和授權。如果允許,創建授權令牌並緩存它。

這是Web應用程序的常見場景。對於像你這樣的事件通知情況來說,它更復雜。用戶訂閱時必須檢查授權。如果用戶未經授權,您應立即通知他們,因爲您不希望每次發佈時都要檢查憑證。用戶,訂閱事件和授權證書之間必須有關聯。

我只看到一個問題。

您可以向未經授權的用戶廣播活動,如果他們訂閱活動,查明他們是授權的,接收第一個廣播,然後由於某種原因而成爲未經授權的用戶。這表明,您每次向訂閱者廣播時都必須檢查憑證。這可能會變得繁重並且會降低您的應用速度。

看看像SAML這樣的標準是否可以幫助你。

緩存問題取決於事件之間的時間和授權更改之間的比較。如果事件之間的時間與授權更改相比較長,則每次都必須檢查,因爲無法確定自上次事件後授權是否已被撤銷。

+0

你可以解決這個問題,「緩存」用戶憑證,所以只有當你的緩存過期時才能檢查SAP,DB等。如果憑據更改不正常,這可以提高性能。 –

+0

緩存如何查明自上次事件後授權是否已被撤銷?我認爲你必須每次都檢查一下,所以緩存你不行,除非你願意保證它不能在事件之間改變。它僅適用於證書,因爲我們假設會話時間短於證書更改之間的時間。事件廣播不一定如此。 – duffymo

+0

這取決於您發佈活動的頻率。您可以(取決於組織策略)定義授權更改僅在前一天或下一小時或其他時間生效,並基於此定義緩存過期時間。 –

0

在這個問題中描述的設置中,您將不得不建立清除消息隊列的方法。例如,當用戶遇到問題並停止接收消息時會發生什麼情況,或者如果偶然某些格式不正確的消息出現在訂閱主題上,並且這些消息導致客戶端收到消息以進行崩潰,會發生什麼情況。這就是爲什麼你的系統必須有一些管理功能來刪除消息。您可以重複使用此管理功能來觸發用戶已從外部系統刪除的消息到ENS,此用戶已刪除的消息將導致用戶通知隊列被清空並且其訂閱無效。

您可以用來處理刪除用戶的外部系統上的情況的另一件事是從外部系統的通知消息已到期時間。例如,SAP通知消息在創建時間後可能有效2小時。如果用戶在2小時內沒有收到郵件,則郵件將被刪除。如果將消息過期與來自SAP的通知消息結合起來,用戶不再有效,那麼您可以知道有一段時間限制,在此期間用戶將失效。

我想如果你提供更多關於你用來實現ENS的技術的上下文,那麼我們可能會給你更具體的答案。

1

我所見過的這種模式最常見的方式是授權發生在訂閱而不是後端。主題層次結構反映後端應用程序的安全模型。如果後端具有查詢Produce,Deli和Grocery的功能,則存在具有相同分類的主題節點。在Grocery的後端系統中獲得授權的用戶也有權訪問Grocery主題。後端系統中的授權可以定期導出(通常是夜間)並轉換爲pub/sub broker上的授權設置。在一個實施中,我在後端系統上的工作將在一個安全的管理主題上向發佈/訂閱代理髮布授權更改,以便訂戶授權將保持近實時。

將憑據傳遞迴源系統的概念聽起來很安全,但在深入檢查時會遇到一些問題。首先,你打算怎樣擴展這個規模?我從來沒有見過成功的事件通知系統沒有得到大量重用。每個後端系統對身份驗證都有不同的要求,通常是不同的憑證,不同的有效性和緩存要求等。構建系統以將證書流式傳輸回幾個後端應用程序是一回事。做10或20是一場噩夢。

假設您解決了上述問題,現在您已在一個位置爲後端企業系統的一半緩存了用戶憑據。如果這一個中央系統受到威脅,那麼它所涉及的所有後端系統都會受到影響。該中央系統成爲企業中最關鍵的安全焦點。解決這個問題所需的嚴格安全性成本很高。

是的,讓發佈/訂閱代理的主題樹和授權反映後端應用程序的安全模型是一種痛苦。但最後,與設計中央代理服務相比,設計中央代理服務要容易得多(而且成本更低),因爲它足夠安全地存儲所有憑據,並且還能夠在多個後端系統上驗證它們,而不會使代理或發佈的源系統陷入困境到它。

0

LDAP將成爲存儲更好的選擇,它的安全,快速,便攜也

* 編輯:便攜式在獲得您的企業應用程序的意義。

相關問題