簡體   English   中英

Microsoft OAuth 2.0 客戶端憑據 - 即使在 Azure 上授予管理員同意,也無法檢索范圍權限

[英]Microsoft OAuth 2.0 Client Credentials - Unable to retrieve permission to scope even with Granted Admin Consent on Azure

我正在處理從 Microsoft Graph 檢索聯系人列表的守護程序服務,該服務不會向用戶提示 Microsoft 身份驗證。 但是,即使獲得管理員同意,我也無法檢索我在 Microsoft Azure 中設置的權限。

我使用 Postman 生成具有以下信息的令牌。

https://login.microsoftonline.com/0835055b-8a00-4130-b07a-037430dd000d/oauth2/v2.0/token

以下json是我得到的結果

{
    "token_type": "Bearer",
    "scope": "profile openid email https://graph.microsoft.com/User.Read https://graph.microsoft.com/.default",
    "expires_in": 3600,
    "ext_expires_in": 3600,
    "access_token": "{MY_TOKEN_HERE}"
}

令牌已成功生成,但返回的令牌不包括我在 MS Azure 中設置的具有授予管理員同意的權限,網址為 portal.azure.com > 注冊應用程序 > API 權限。

我有 Microsoft Graph - Users.Read 和 Contacts Read,需要管理員同意,並帶有綠色勾號。 見下圖:

Microsoft Azure - API 權限

沒有范圍,我無法檢索具有給定令牌的聯系人列表。

{
    "error": {
        "code": "ErrorAccessDenied",
        "message": "Access is denied. Check credentials and try again.",
        "innerError": {
            "request-id": "63a24a22-34f7-42a1-a9d5-d7aaf598f4d6",
            "date": "2019-07-01T02:59:15"
        }
    }

}

有什么我錯過的嗎? 我假設當管理員同意時,我應該能夠將 API 包含在范圍中以生成令牌。

我看到這里有一個類似的問題,但沒有適合我的解決方案: Microsoft graph API: Unable to fetch users with the generated access token

根據您的屏幕截圖,您授予的contacts.read 是應用程序權限。 而且,您只有一個委派權限: user.read 。

但是,如果要調用圖形 api : graph.microsoft.com/v1.0/me/contacts ,則需要使用委派權限。 它將代表用戶。 所以你可以得到“我”的信息。 並且根據官方文檔,需要授予Contacts.Read(用於寫入的Contacts.ReadWrite)委托權限。

在此處輸入圖片說明

如果要使用應用程序權限,則需要使用客戶端憑據流獲取訪問令牌。 通過這種方式得到的token可以用於申請權限。 您應該按如下方式調用 api:graph.microsoft.com/v1.0/users/{id | 用戶主體名稱}/聯系人

暫無
暫無

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

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