簡體   English   中英

在PHP中獲取Azure AD用戶角色

[英]Get Azure AD User Roles In PHP

我有一個用PHP編寫的小應用程序,需要檢查給定用戶是否具有分配給他們的角色。 我正在使用啟用了應用程序服務身份驗證的Azure App Service,以針對蔚藍活動目錄對用戶進行身份驗證。 作為應用程序的一部分,我需要獲取用戶的用戶名,顯示名稱,並且如果他們是三個安全組中一個或多個的成員,則可以將其定義為他們在應用程序中具有的訪問級別。

我需要這樣做,因為我無法在應用程序中管理角色,而是需要通過活動目錄安全組進行管理。 我正在尋找azure應用程序服務固有的方法(如可能,最好不要進行單獨的LDAP查找)。 我知道如何從發送到應用程序的頭數據( HTTP_X_MS_CLIENT_PRINCIPAL_NAME )中提取經過身份驗證的用戶名,但是我不知道如何獲取完整的顯示名稱以及如何檢查用戶是否具有分配給他們的特定角色。 我已經輸出了整個php $_SERVER超級全局數組的副本,以查看我要查找的數據是否在其中,但我無法在其中找到它。

為了這個問題的目的,進行以下假設...

為user1@domain.com分配了角色role1,role2,role3
僅為user2@domain.com分配了角色role3

因此,如果任何一個用戶登錄,我都需要能夠根據其AD條目顯示其全名,並且需要能夠檢查它們是否屬於安全組role1 role2和/或role3

我將發布一個代碼示例,但是我不知道從哪里開始獲取這些數據,因此到目前為止,我唯一的代碼是一個測試塊,用於將所有$_SERVER值打印到頁面上以進行測試。

謝謝

一般來說,您可以利用Microsoft Graph REST API來滿足您的要求。

首先,您可以按照https://graph.microsoft.io/en-us/docs/authorization/app_only實現僅以應用方式獲取訪問令牌的功能,然后可以發出List memberOf的HTTP請求以獲取用戶直接所屬的組和目錄角色。

HTTP GET URL應該類似於https://graph.microsoft.com/v1.0/users/{HTTP_X_MS_CLIENT_PRINCIPAL_NAME you get from header}/memberOf ,並在authorization標頭中設置您獲得的訪問令牌。

此外,您可以參考https://github.com/Azure-Samples/active-directory-php-graphapi-directoryextensions-web/blob/master/AuthorizationHelperForGraph.php示例,了解如何僅在應用程序中獲取訪問令牌。

暫無
暫無

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

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