Обнаружена ошибка при попытке установить разрешение Sites.Selected на уровне приложения с помощью Graph API

Наше приложение многогранно и зарегистрировано на портале Azure (https://portal.azure.com). Допустим, имя приложения — «Целевое приложение». Мы предоставили разрешение для API Graph на портале Azure и пытаемся получить документы с демонстрационного сайта. Здесь демонстрационный сайт также зарегистрирован на портале Azure, но в другом домене. После этого мы назначили разрешение Sites.Selected демонстрационному приложению, но не можем получить документы и получаем ошибку «доступ запрещен» при попытке использовать этот Graph API:

POST https://graph.microsoft.com/v1.0/sites/{sitesId}/permissions
Content-Type: application/json{ 
 "roles": ["write"],
 "grantedToIdentities": [{
    "application": {
      "id": //Target Application’s Client Id
      "displayName": //Target Application’s Display name
    }
  }]
}

нам не хватает какой-либо конфигурации на уровне приложения?

Вот SS, генерирующий токен:

Не могли бы вы рассказать, как вы генерируете токен на предъявителя, с каким потоком и разрешениями API?

Sridevi 30.07.2024 07:50

Вы пытаетесь получить доступ к сайту от того же арендатора или от другого арендатора? Не могли бы вы добавить более подробную информацию об этом для ясности?

Sridevi 30.07.2024 08:09

другой арендатор.

Pooja Parmar 30.07.2024 08:10

Вы генерируете токен от одного арендатора и используете его для доступа к сайту в другом арендаторе?

Sridevi 30.07.2024 08:13

Нет, создайте токен, используя того же клиента, и получите доступ к этому сайту под этим клиентом.

Pooja Parmar 30.07.2024 08:15

Давайте продолжим обсуждение в чате.

Sridevi 30.07.2024 08:15
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
7
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка обычно возникает, если у токена нет необходимых разрешений для выполнения операции.

Первоначально я тоже получил ту же ошибку, когда попытался выполнить POST-запрос с токеном, имеющим только разрешение Sites.Selected:

POST https://graph.microsoft.com/v1.0/sites/{sitesId}/permissions
Content-Type: application/json
{ 
 "roles": ["write"],
 "grantedToIdentities": [{
    "application": {
      "id": //Target Application’s Client Id
      "displayName": //Target Application’s Display name
    }
  }]
}

Ответ:

Чтобы устранить эту ошибку, обязательно добавьте разрешение «Sites.FullControl.All» типа «Приложение» и дайте ему согласие, как показано ниже:

Теперь я снова сгенерировал токен, используя поток учетных данных клиента через Postman, следующим образом:

POST https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
grant_type:client_credentials
client_id:<appID>
client_secret:<secret>
scope: https://graph.microsoft.com/.default

Ответ:

Чтобы убедиться в этом, вы можете декодировать этот токен в jwt.ms и проверить разрешения в утверждении roles, как показано ниже:

Когда я использовал этот токен для запроса POST на создание разрешения, я получил такой ответ:

POST https://graph.microsoft.com/v1.0/sites/{sitesId}/permissions
Content-Type: application/json
{ 
 "roles": ["write"],
 "grantedToIdentities": [{
    "application": {
      "id": //Target Application’s Client Id
      "displayName": //Target Application’s Display name
    }
  }]
}

Ответ:

Ссылка: Разрешение на создание — Microsoft Graph v1.0

Это работает для меня; просто нам нужно добавить разрешение YYY приложения Sites.Selected как на уровне SharePoint, так и на уровне Microsoft Graph.

Pooja Parmar 31.07.2024 06:54

Другие вопросы по теме