簡體   English   中英

如何配置 Azure AD Oauth2 在登錄時返回所有用戶組

[英]How to configure Azure AD Oauth2 to return all user groups on login

我有一個 AD 注冊應用程序,它與 SSO 的 Azure AD 集成。 它通過使用omniauth-azure-activedirectory-v2 gem 使用 Oauth2 策略。

我想要 map 一個用戶安全組到我的應用程序授權 model 為此我需要安全組的名稱。

我想在登錄時可靠地獲取用戶安全組和組名,但我做不到。 我有時正確地得到它們,有時以 uuid 格式得到它們,有時根本沒有。

我在Token Configuration中為我的應用程序設置了一個可選的組聲明,並配置為為所有附加組返回sam_account_name

這對於某些客戶來說似乎工作正常,這些組返回為例如“Admin_APP”,但對於其他人我似乎有以下問題:

  • 返回用戶組,但僅作為 ID( c5bb3738-59f1-4718-b34c-2dfac761e023 )返回,即使我請求了名稱。
  • 用戶有“可讀組”,但並非全部分配在 AD 中,有些丟失了。

這是我的應用程序端的配置,還是應該將我的應用程序添加到他們的 AD 的組織配置他們的組或我的應用程序? 還是我根本不應該依賴令牌 cliam 並使用 GraphQL API Azure 報價獲取組?

我注意到在自己添加應用程序時我需要為我的 user.profile 授予權限,但它沒有顯示允許的組權限。 同樣在permissions下的組織的企業應用程序選項卡中,我似乎找不到我添加的組聲明。 只有openidprofileemail

我嘗試在我的環境中重現相同的內容並得到如下結果:

我在 Azure AD 應用程序中配置了可選聲明

在此處輸入圖像描述

我使用以下參數通過 Postman 生成了訪問令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
client_secret:ClientSecret
scope:user.read openid
grant_type:authorization_code
redirect_uri:redirectUri
code:code

在此處輸入圖像描述

當我解碼令牌時,我得到的是Group IDs而不是組名稱,如下所示:

在此處輸入圖像描述

請注意:如果您將sAMAccountName配置為令牌中的聲明值,則它只會返回從本地 AD 同步的組。 默認情況下,Group ObjectID在組聲明值中返回。

默認情況下,令牌中發出的組對於 SAML 斷言限制為 150 個,對於 JWT 限制為 200 個。

我同意junnas ,你可以利用 Graph API 來獲取如下用戶組:

https://graph.microsoft.com/v1.0/users/UserID/memberOf

在此處輸入圖像描述

要獲取用戶所屬的唯一安全組列表,您可以使用以下查詢:

https://graph.microsoft.com/v1.0/users/UserID/memberOf?Filter("mailEnabled eq false and securityEnabled eq true")

在此處輸入圖像描述

參考:

列出用戶的直接成員資格 - Microsoft Graph v1.0 | 微軟學習

如何讓組在 amanpreetSingh-MSFT 的 access_token 中顯示為聲明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM