400 BAD Запрос вызова Graph-API {betaApi} / me / joinTeams - PullRequest
1 голос
/ 08 октября 2019

Мы разрабатываем настольное приложение, которое использует Graph-API для доступа к информации из OneDrive, команд и другой информации.

Один из наших клиентов получает запрос 400 BAD при доступе к https://graph.microsoft.com/beta/me/joinedTeams.

Приложение зарегистрировано как мультитенантное приложение в AAD. Приложению требуется согласие администратора, чтобы получить все привилегии (делегированные). Мы выкатились к нескольким клиентам без проблем.

Теперь у нас есть пользователь, который получает запрос 400 BAD при доступе к API команд. Согласие было предоставлено администратором.

Мы посмотрели на возвращенный токен jwt, и User.Read.All было предоставлено.

Доступ к OneDrive отлично работает для этого пользователя. Следовательно, токен должен быть действительным и правильно прикрепленным к запросу.

Но при доступе к / me / team возвращается неверный запрос

Вызов возвращает следующее исключение

Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: AuthenticationError
Message: Error authenticating with resource.

Inner error

   bei Microsoft.Graph.HttpProvider.<SendAsync>d__18.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.Graph.BaseRequest.<SendRequestAsync>d__35.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.Graph.BaseRequest.<SendAsync>d__31`1.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.Graph.UserJoinedTeamsCollectionRequest.<GetAsync>d__4.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei yourMail.Graph.Service.GraphAccess.TeamsAccess.<GetMyTeamGroups>d__4.MoveNext()

Мы используем microsoft.graph (из Nuget) Версия 1.17

GraphServiceClient graphClient = CreateGraphClient();
IUserJoinedTeamsCollectionPage result = await graphClient.Me.JoinedTeams.Request().GetAsync();
return result.ToList();

Дополнительный код

protected GraphServiceClient CreateGraphClient()
{
//Get JWT Token via Microsoft.Client.Identity
string accessToken = AccessTokenProvider.GetAuthenticationToken(Permissions);

if (accessToken == null)
{
      throw new InvalidOperationException("Authentication failed.");
}

// Add bearer token to request
IAuthenticationProvider authenticationProvider = CreateAuthenticationProvider(accessToken);
var result = new GraphServiceClient(GraphEndpoints.BetaApi, authenticationProvider)
   {
   PerRequestAuthProvider = () => authenticationProvider
   };

return result;
}

private IAuthenticationProvider CreateAuthenticationProvider(string accessToken)
        {
            var result = new DelegateAuthenticationProvider((requestMessage) =>
            {
                requestMessage.Headers.Authorization = new AuthenticationHeaderValue(CoreConstants.Headers.Bearer, accessToken);
                return Task.FromResult(0);
            });
            return result;
        }

Пользователь может получать доступ к командам в браузере инастольный клиент. Команды должны быть включены в арендаторе пользователей, и должна присутствовать лицензия.

  • Существуют ли дополнительные политики AAD, которые могут блокировать доступ к командам?
  • Есть ли способ отладить это? Например, может ли администратор арендатора включить файл журнала, в котором указано, почему доступ не был предоставлен?
...