[英]Snowflake: Configure Microsoft Azure AD for External OAuth - admin consent
[英]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”,但對於其他人我似乎有以下問題:
c5bb3738-59f1-4718-b34c-2dfac761e023
)返回,即使我請求了名稱。這是我的應用程序端的配置,還是應該將我的應用程序添加到他們的 AD 的組織配置他們的組或我的應用程序? 還是我根本不應該依賴令牌 cliam 並使用 GraphQL API Azure 報價獲取組?
我注意到在自己添加應用程序時我需要為我的 user.profile 授予權限,但它沒有顯示允許的組權限。 同樣在permissions
下的組織的企業應用程序選項卡中,我似乎找不到我添加的組聲明。 只有openid
、 profile
和email
。
我嘗試在我的環境中重現相同的內容並得到如下結果:
我在 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")
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.