Authorization_Request Отклонено от функций Azure Microsoft Graph Request - PullRequest
0 голосов
/ 02 января 2019

У меня есть очень простая функция лазури:

#r "Newtonsoft.Json"

using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, string authToken, ILogger log)
{
    string msgId = req.Query["messageId"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    msgId = msgId ?? data?.messageId;

    if (string.IsNullOrEmpty(msgId))
        return new BadRequestObjectResult("Please pass a messageId on the query string or in the request body");

    // access me via graph
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + authToken);
        var response = await client.GetAsync("https://graph.microsoft.com/v1.0/users/*****/mailFolders/inbox/messages/" + msgId);
        string retResp = await response.Content.ReadAsStringAsync();
        log.LogInformation(retResp);
    }

    return new OkObjectResult(msgId);
}

Токен Auth предоставляется привязкой токена Auth для функции azure: Auth token Input binding

Однако я всегда получаю следующий ответ из графика Microsoft:

{
    "error": {
        "code": "Authorization_RequestDenied",
        "message": "Insufficient privileges to complete the operation.",
        "innerError": {
            "request-id": "24a1e799-2f9f-4452-8d46-20d4e3db160d",
            "date": "2019-01-02T07:39:15"
        }
    }
}

И да: администратор согласился, и я даже попытался дать все доступные разрешения приложению и согласился, но я все еще получаю то же сообщение. У вас есть идея, как я могу проверить токен или получить дополнительную информацию?

1 Ответ

0 голосов
/ 02 января 2019

похоже, что ваше AAD-приложение не настроено должным образом - для чтения сообщений Outlook вам необходимо иметь разрешение Mail.Read.Вы можете проверить это в разделе «Auth Token Input» на своей странице (где на скриншоте показано «Загрузка»).Это должно выглядеть примерно так, как показано ниже (с другими настроенными разрешениями).Кроме того, вы можете попробовать использовать опцию «Клиент из запроса» в раскрывающемся списке «Идентификационные данные».

enter image description here

При каждом изменении областей разрешений вы должны повторнодайте согласие на приложение, посетив этот URL в браузере и приняв требование доступа: https://<yourfunctionapphost>.azurewebsites.net/.auth/login/aad?prompt=consent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...