API Graph «получение групп» от имени подписанного пользователя приводит к ошибке 403 с сообщением»:»Недостаточно привилегий для завершения операции

#python #microsoft-graph-api #access-token #scopes

Вопрос:

вариант использования: вызов https://graph.microsoft.com/v1.0/groups используя поток кода авторизации от имени вошедшего в систему пользователя:

с областью действия OAuth2Session: https://graph.microsoft.com/.default

 oauth_session = OAuth2Session(clientid=clientid, state=session['oauth_state'], client=client,scope="https://graph.microsoft.com/.default")
 

access_token имеет область действия: «User.Read». у меня нет idee, как управлять этой областью!

клиент api имеет все необходимые делегированные разрешения (GroupMember.Read.Все, Группа.Читайте.Все, Каталог.Читайте.Все, Группа.Чтение и запись.Все, Каталог.Чтение и запись.Все, Каталог.AccessAsUser.All) , как описано здесь: https://docs.microsoft.com/de-de/graph/api/group-get?view=graph-rest-1.0amp;tabs=http

я попытался также установить область действия «Group.Read.Все» в OAuth2Session, но это не помогло.

 oauth_session = OAuth2Session(clientid=clientid, state=session['oauth_state'], client=client,scope="https://graph.microsoft.com/Group.Read.All")
 

следующие запросы работают правильно с той же конфигурацией oauth, что и в описанном выше случае использования:
https://graph.microsoft.com/v1.0/me (здесь я получаю идентификатор пользователя, вошедшего в систему),
https://graph.microsoft.com/v1.0/users/{id}/getMemberGroups
(здесь я получаю список групп, к которым принадлежит пользователь)

с https://graph.microsoft.com/v1.0/groups или https://graph.microsoft.com/v1.0/groups/{id} я стремлюсь получить отображаемые имена групп или отображаемое имя идентификатора группы вошедшего в систему пользователя. Мой вопрос: возможно ли вообще получить группы вошедшего в систему пользователя через api graph с потоком авторизации (WebApplicationClient) или, может быть, только через BackendApplicationClient (поток учетных данных клиента). Если да, то как я могу решить проблему с областью применения?

Ответ №1:

Ошибка 403 указывает на то, что маркер не должен корректировать разрешение.

Для потока кода авторизации вам нужно будет запросить область https://graph.Microsoft.com/Group.Read.All действия.

Я всегда использую jwt.ms это позволяет мне проверить токен и посмотреть, какие утверждения доступны.