[英]Azure OAuth: Unable to programmatically create app with admin consent for permissions
[英]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,需要管理員同意,並帶有綠色勾號。 見下圖:
沒有范圍,我無法檢索具有給定令牌的聯系人列表。
{
"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.