2016-06-08 113 views
0

我可以在Active Directory用戶進行身份驗證,但我需要知道我們可以在組認證一個特定的用戶,如果我們有多個組。 基本上我重定向到http://[mydirectory].onmicrosoft.com和驗證用戶,但我需要知道我們是否有機制來驗證從特定組中的用戶,這樣我可以根據用來接入。我們可以驗證特定組的用戶在Active Directory中

+0

我想你是混合身份驗證和授權。一旦用戶成功通過身份驗證(即他們能夠正確登錄),您可以根據用戶的組在應用程序中定義授權規則,以允許/拒絕訪問應用程序的某些部分。 –

+0

你使用圖形API?如果是這樣,你可以使用checkMemberGroups方法。 https://msdn.microsoft.com/library/azure/ad/graph/api/functions-and-actions#checkMemberGroups正如前面的評論中提到的,你試圖實現的是基於角色的「授權」 – Aravind

+0

你有沒有樣本以基於用戶憑證對組進行授權。目前我正在重定向到http:// [mydirectory] ​​.onmicrosoft.com並進行身份驗證。經過身份驗證後,我沒有收到任何令牌,因此我可以使用Active Directory組進行驗證。 –

回答

4

假設這是天青 AD(而不是本地的Windows Server AD),那麼你有三種選擇來限制通過組訪問應用程序。

選項1:要求用戶/組分配到應用

這是一個不需要在應用程序中添加授權邏輯的唯一選擇。

在配置中的經典Azure的門戶應用程序,您可以設置應用程序需要用戶分配:

Toggle for 'User assignment to app required'

然後,在「用戶和組」該應用程序,您可以選擇個人用戶或組應該有權訪問應用程序。

這裏要考慮的最重要的事情是,這隻適用於直接組的成員,而不是嵌套成員。

選項2:要求組織聲稱

此選項可以讓你請求後,用戶已簽訂了含有組列表中的用戶是其成員的令牌返回給應用程序。這包括他們是傳遞成員(即嵌套組)的組。

從經典Azure的門戶應用程序的配置頁面,你可以下載和上傳應用程序的清單JSON文件。在清單中,找到"groupMembershipClaims"屬性,並將其設置爲"All""SecurityGroup"(後者將排除分發列表)。

設置此設置後,用戶登錄後,得到的令牌將有一個groups聲明,其中包含該用戶所屬的組對象ID的列表。然後,您的應用程序可以使用這些聲明來決定用戶是否應該訪問。

Dushyant吉爾進入小組聲稱在細節在他的博客文章:http://www.dushyantgill.com/blog/2014/12/10/authorization-cloud-applications-using-ad-groups/

重要的考慮在這裏是有是可以返回組數的限制。如果用戶是此限制的更多組的成員,則會發出「超額」聲明,並且您的應用程序需要進行Azure AD Graph API調用以獲取完整列表。 (這也是在Dushyant的博客中。)

選項3:使用的Microsoft Graph APIAzure AD Graph API直接

最後的選擇是簡單地調用微軟圖形API(或在Azure AD圖形API ,它們的行爲幾乎完全相同)來確定登錄用戶是否爲給定組的成員。然後您的應用程序可以做出授權決定。

有可以採取幾種方法(所有這些都是可傳遞的檢查,因此嵌套組支持):

  • isMemberOf來檢查該用戶是否是特定的(單)組的成員。如果單個組應授予您應用的訪問權限,這是最簡單的。
  • checkMemberGroups檢查用戶是否爲組列表中的任何組的成員。如果不同的組在應用程序中授予不同的角色或權限,這很有用。
  • getMemberGroups返回用戶所屬組的完整列表。這對於進行授權檢查通常不是特別有用。
相關問題