[英]How do I check if the user from a non-Graph Azure AD token is a member of an email distribution list in an APIM policy
在 Azure API 管理 (APIM) 中有一個 API。 API 操作使用來自后端應用程序注冊的 scope(scope不是User.Read
)驗證由 Azure Active Directory (AAD) 生成的 JWT。 注意:client id 是另一個應用程序注冊,它是該后端 scope 的授權應用程序。
驗證 JWT 后,我是否可以獲取該令牌,從中提取用戶信息並驗證用戶是否屬於 email 分發列表 (DL)? 如果是這樣,如何在 APIM 政策中做到這一點?
我知道 MS Graph API。 使用 Postman 我可以確認 DL 列在租戶的組中並且可以獲得其組 ID。 我還可以確認用戶是該組的成員。 我對 Graph API 堅持的一點是,它需要一個與客戶端應用程序提供的令牌不同的令牌(由於他的范圍來自不同的域,自定義應用程序注冊與圖表),我被困在這一點上。 我是否應該讓客戶端應用程序也獲得圖形令牌並將其傳遞到單獨的 header 中,或者有沒有辦法從 APIM 或其他東西中進行編排?
此解決方案的非 APIM 部分由Microsoft 文章提供。 我在以下步驟中總結了這些內容並結合了 APIM 部分:
User.Read.All
、 Group.Read.All
、 GroupMember.Read.All
,具體取決於您的情況)。 MS Graph 的“組”包括 AD 組和分發列表 (DL)。 注意:不要使用委托權限。validate-jwt
或更新validate-azure-ad-token
)以確保用戶有權調用此 API。oid
聲明(這是我將用於圖形調用的用戶 ID)並使用set-variable
策略將其保存在一個變量中client-credentials
流添加send-request
策略請求 MS Graph 的身份驗證令牌(此時您需要來自早期應用程序注冊的客戶端 ID 和密碼)。 注意:機密應存儲在像 KeyVault 這樣的安全存儲中,但不在本答案的 scope 范圍內。access_token
字段,並使用set-variable
策略將其放入變量中。send-request
策略,但這次發送到 MS Graph 端點。 對於User.Read.All
權限,您將使用/users/<userIdFromJwtOidClaim>/memberof/<groupId>
。 MS Graph v1.0 API Reference ,並使用<set-header>
元素在 Authorization header 中傳遞access_token
。choose
策略根據用戶的組成員身份執行邏輯。return-response
策略將響應發送回用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.