401 Не авторизован в Graph и OneNote API после успешного получения токена - PullRequest
0 голосов
/ 27 июня 2018

Я зарегистрировал собственное приложение в Azure Active Directory и получил все разрешения для API Graph и OneNote, успешно получая токены от имени пользователей с использованием учетных данных имени пользователя и пароля. Я смог создать и обновить блокноты и выполнить другие действия на графике с помощью этих токенов, но они неожиданно перестали работать, несмотря на то, что в коде, выполняющем эти запросы, не было никаких изменений.

Я все еще могу вносить другие изменения, такие как создание элементов списка в SharePoint, но любое действие в отношении записных книжек OneNote приводит к 401 со следующим ответом:

{
  "error": {
    "code": "40001",
    "message": "The request does not contain a valid auth token.",
    "innerError": {
      "request-id": "472a74fd-c050-495a-9ec3-04d1ec3c4461",
      "date": "2018-06-26T20:49:28"
    }
  }
}

Я подтвердил, что регистрация приложения имеет все права на API Graph и OneNote

Я подтвердил, что токены запрашиваются для правильного ресурса. Фактически я использовал Graph, переключился на OneNote API после того, как эта проблема появилась в Graph, и через некоторое время та же проблема произошла и с OneNote API.

Я пытался использовать .NET ADAL AuthenticationContext.AcquireTokenAsync(resource, ClientId, userCredential) или сделать запрос непосредственно к https://login.windows.net/{tenantId}/oauth2/token со следующим телом, и оба имели одинаковый результат

"resource=" + resource
                + "&client_id=" + ClientId
                + "&grant_type=password"
                + "&username=" + Username
                + "&password=" + Password
                + "&scope=openid";

Я попытался получить доступ к ноутбукам с сайта SharePoint, открытого для всех пользователей арендатора, и получил ту же проблему, я попытался создать OneNotes на личном onedrive пользователя и получил ту же проблему, так что это не проблема пользователь, не имеющий доступа к ноутбуку

Итак, я сделал несколько десятков тысяч вызовов в Graph API, затем эта проблема обнаружилась. Еще несколько десятков тысяч обращений к OneNote API, после чего появилась эта проблема. Есть идеи о том, что может происходить? Существует ли ограничение на количество действий в отношении OneNotes, которые можно выполнять в этих API?

РЕДАКТИРОВАТЬ : Есть еще две вещи, которые я обнаружил, которые стоит упомянуть. Во-первых, Graph Explorer по-прежнему работал нормально, даже когда мои токены не работали. Я предполагаю, что проводник использует поток кода авторизации для получения токенов от имени пользователей, в то время как я использую имя пользователя / пароль, поэтому поток авторизации имени пользователя / пароля, вероятно, как-то связан с этой проблемой. Во-вторых, сегодня API-интерфейс Graph снова работает для конечных точек OneNote, а это означает, что мое приложение, вероятно, заблокировано для выполнения действий OneNote в течение определенного периода времени (возможно, 24 ч?)

1 Ответ

0 голосов
/ 19 июля 2018

Это также случилось с нами, я изменил аутентификацию ниже, и это успешно аутентифицируется.

$body = "grant_type=client_credentials&client_id=CLIENTID&client_secret=CLIENTSECRET=&resource=https%3A%2F%2Fonenote.com%2F"

$auth = Invoke-RestMethod -Uri 'https://login.microsoftonline.com/TENANTNAME.onmicrosoft.com/oauth2/token' -Body $body -Method post -ContentType application/x-www-form-urlencoded
$accesstoken = $auth.access_token

Просто убедитесь, что идентификатор клиента закодирован, поскольку в противном случае будет выдано сообщение об ошибке.

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