簡體   English   中英

通過 Laravel azure ad oauth 從 Azure AD 獲取用戶角色

[英]Get the user role from Azure AD by Laravel azure ad oauth

我正在嘗試使用 Metrogistics/laravel-azure-ad-oauth socialiate 插件從 Azure AD 中獲取角色。

我從 Azure 獲得了姓名、電子郵件和 azure_id。 但我無法獲得用戶角色。

user: array:12 [
    "@odata.context" => "https://graph.microsoft.com/v1.0/$metadata#users/$entity"
    "businessPhones" => []
    "displayName" => "Test4"
    "givenName" => "Test4"
    "jobTitle" => null
    "mail" => null
    "mobilePhone" => null
    "officeLocation" => null
    "preferredLanguage" => null
    "surname" => null
    "userPrincipalName" => "test4@xyz.com"
    "id" => "xyz"
  ]

可以從 Azure 獲取角色。 我的設置:

圖像1圖像2圖像3

根據我的研究,定義的 AppRole 將在 id_token 中返回。 更多詳情請參考官方文檔文檔

在此處輸入圖片說明

關於如何獲取用戶的id token,可以使用Azure AD OAuth 2.0授權碼流來實現。 這里我使用postman獲取access_token和id_token:

在此處輸入圖片說明

然后我可以得到 id_token

在此處輸入圖片說明

通過分析id token,可以得到用戶的角色:

在此處輸入圖片說明


更新

關於如何為用戶分配應用角色,請參考以下步驟

  1. 聲明應用角色在此處輸入圖片說明 在此處輸入圖片說明

  2. 為用戶分配角色

    一種。 Azure Active Directory窗格中,從 Azure Active Directory 左側導航菜單中選擇企業應用程序

    選擇所有應用程序以查看所有應用程序的列表。 如果您沒有在此處看到想要顯示的應用程序,請使用“所有應用程序”列表頂部的各種過濾器來限制列表或向下滾動列表以找到您的應用程序。

    C。 分配角色在此處輸入圖片說明

您擁有的是一個應用程序角色,顧名思義,它們屬於一個應用程序。 僅僅從 Microsoft Graph 中尋找用戶的對象不會提供這些。

是的,如另一個答案所示,它們將在用戶登錄后以 id_token 的形式提供給應用程序。

要獨立於應用程序獲取這些內容,請使用Get appRoleAssignment Api。

暫無
暫無

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

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