2017-09-14 39 views
0

這是關於在應用程序中使用目錄服務(DS)的理論問題。我不在乎它是否是ActiveDirectory,OpenLDAP,但我建議使用LDAP協議。 我對DS的主題很陌生,請原諒我簡單的問題。LDAP:在應用程序中使用屬性

大部分時間我認爲應用程序只使用身份驗證機制。將用戶在應用程序登錄對話框中放入的憑證傳遞給ldap-bind並查看它是否有效。

但我想了解如何在DS中設計和實現應用程序內部訪問權限 - 不僅是登錄身份驗證。所以例如檢查用戶是否被允許點擊按鈕。

它僅僅是查詢一個已創建的LDAP對象,並檢查它的屬性值(僅在應用程序中讀取它的意義)與指示通過還是拒絕的期望值? 這很簡單,我不知道這就是所有的奇蹟...

是嗎?

P.S .:我不是在談論企業功能的DS(複製,perforance,...)。

謝謝!

回答

1

大多數時候我認爲應用程序只使用身份驗證機制。將用戶在應用程序登錄對話框中放入的憑證傳遞給ldap-bind並查看它是否有效。

他們當然這樣做,但還有更多。

但我想了解如何在DS中設計和實現應用程序內部訪問權限 - 不僅是登錄身份驗證。所以例如檢查用戶是否被允許點擊按鈕。

認證之後,應用程序將檢索用戶的屬性或其自己的DN出現的DN,例如角色。

它僅僅是查詢創建的LDAP對象,並檢查它的屬性值(僅在應用程序中讀取它的意義)與指示通過還是拒絕的期望值?這很簡單,我不知道這就是所有的奇蹟......

這是如何完成取決於如何確切地在您的LDAP服務器中表示角色。你描述過一種方式:還有其他的。

1

EJP總結了一切。

但有一點我想提高是:

它是一個創建的LDAP對象的只是查詢,並檢查其屬性值...

正如EJP說,你可以這樣做。 DS在我看來是對LDAP實施服務器可以執行的限制。 DS是imho,一個面向對象的分層數據庫。所以你可以存儲角色,用戶和規則/關係。

但還有更多,並且就你提到的觀點而言,我特別欣賞的一個是ACL機制。

我知道OpenLDAP的實現,所以我將它作爲一個例子,但我確信其他人有相同的機制。

的ACL允許您將DS裏面描述了用戶可以訪問不同的權限:

  • 閱讀
  • 執行
  • ...

因此,您可以輕鬆想象DS中描述應用程序的分支,並配置ACL以允許特定用戶組擁有對與應用程序相對應的條目的不同訪問。

實際使用中,您將能夠搜索應用程序分支及其所有子項,並且DS將僅返回您能夠閱讀的條目的分支/條目/屬性。

這是我爲某些不同的應用想到的東西,但從來沒有將它推到極限,因此需要更多地考慮優化它,但這是可行的。

例如,我通常會做的是,您的DS包含一個商店分支,根據您的用戶角色,並非商店的每個屬性都是可讀/可寫的,因此我在ACL中實現了這種機制,在實際的代碼,我只是:

  • 獲取存儲:用戶無法讀取該屬性並不會返回
  • 更改寫入店:如果用戶不能寫一個特定的屬性,則DS會返回一個錯誤。

因此,所有訪問權限邏輯都是「內置於」DS中,而您只需管理CRUD API。

+0

最後一部分對我的問題非常有用。它比閱讀和口譯更優雅。如您所說,權利邏輯保留在DS中。 – chris01

相關問題