Веб-часть SPFx в MSTeams Desktop Client создает исключение UnauthorizedAccessException - PullRequest
2 голосов
/ 22 января 2020

Этот вопрос очень похож на вопрос, который был задан ранее в StackOverflow. Однако я получаю другую ошибку.

Сбой AadHttpClient при загрузке страницы SP с веб-частью SPFx в MSTeams Desktop Client

У меня также есть Sharepoint Онлайн-сайт , на котором у меня есть веб-часть SPFx , в которой используется AadHttpClient .

Эта веб-часть работает, если я перехожу на сайт Sharepoint из браузера или открываю веб-клиент MS Teams.

Знакомство с моей настройкой:

enter image description here

Вот краткий обзор шагов, с которыми я сталкиваюсь.

  • Развертывание веб-части в SharePoint
  • Просмотр веб-части в SharePoint - веб-часть отображается и загружается OK
  • Добавить вкладку SharePoint в группах и привязать ее к странице с веб-частью
  • Просмотреть вкладку в клиенте Teams Desktop - данные не загружаются в веб-часть (см. ниже)
  • Просмотр вкладки в веб-клиенте Teams - веб-часть отображается и загружается OK

Когда я отлаживаю настольный клиент MS Teams, у меня есть этот вызов в вкладка «Сетевые запросы»:

https://{mytenant}.sharepoint.com/sites/{mysite}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of my AAD app registration}&clientId={GUID of SharePoint Online Client Extensibility AAD app registration}

С ответом:

Ошибка 403:

{"odata.error": { "code": "- 2147024891, System.UnauthorizedAccessException", "message": {"lang": "en-US", "value": "Доступ запрещен. У вас нет прав доступа n, чтобы выполнить это действие или получить доступ к этому ресурсу. "}}}

Одним интересным наблюдением было то, что этот веб-запрос происходит только в настольном клиенте Microsoft Teams.

Мне интересно узнать почему это происходит только в настольном клиенте MS Teams, а не в веб-клиенте MS Teams или Sharepoint Online.

Обновление: 10/02/2020

Еще одно наблюдение: Мы попробовали ту же настройку на другом арендаторе (личный арендатор вместо нашего корпоративного арендатора). Мы заметили, что такое же поведение можно воспроизвести при включении MFA в Azure Active Directory.

Неудачный запрос:

https://{personal tenant}.sharepoint.com/sites/{site name}/_api/Microsoft.SharePoint.Internal.ClientSideComponent.Token.AcquireOBOToken?resource={GUID of the AD app registration}&clientId={GUID of the SPO Client Extensibility app registration}

Однако теперь возвращается ошибка 500 с ответом:

{"odata.error": {"code": "- 1, System.AggregateException", "message": {"lang ":" en-US "," value ":" Произошла одна или несколько ошибок. "}}}

Подобная проблема найдена (но другая ошибка) в Github: https://github.com/SharePoint/sp-dev-docs/issues/4915

1 Ответ

0 голосов
/ 25 марта 2020

Недавно я столкнулся с подобной проблемой для веб-части, которая вызывала graphAPI. В настольных командах вызов никогда не происходит, и он используется, чтобы застрять. Мне удалось это исправить, выполнив следующие действия: -

Шаг 1. Посетите новую страницу управления разрешениями API на сайте администрирования клиента. Это создает секрет клиента за кулисами.

Шаг 2. Go в -> https://aad.portal.azure.com/#blade / Microsoft_AAD_IAM / ActiveDirectoryMenuBlade / RegisteredApps

Шаг 3. Нажмите на SharePoint Online Client Extensibility Web Application Principal

Шаг 4. Нажмите Манифест в левом меню. Шаг 5. Скопируйте идентификатор из массива oAuth2Permission

"oauth2Permissions": [
        {
            "adminConsentDescription": "Allow the application to access SharePoint Online Client Extensibility Web Application Principal on behalf of the signed-in user.",
            "adminConsentDisplayName": "Access SharePoint Online Client Extensibility Web Application Principal",
            "id": "2143704b-186b-4210-b555-d03aa61823cf",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "type": "User",
            "userConsentDescription": "Allow the application to access SharePoint Online Client Extensibility Web Application Principal on your behalf.",
            "userConsentDisplayName": "Access SharePoint Online Client Extensibility Web Application Principal",
            "value": "user_impersonation"
        }
    ],

Шаг 6. Замените запись «preAuthorizedApplications» следующей json. Сохраните appId, как написано ниже.

"preAuthorizedApplications": [
    {
        "appId": "00000003-0000-0ff1-ce00-000000000000",
        "permissionIds": [
            "YOUR COPIED ID FROM STEP 5"
        ]
    }
],

Шаг 7. Нажмите Сохранить.

Дайте мне знать, если это работает для вас. Я упомянул вышеупомянутые шаги от https://github.com/SharePoint/sp-dev-docs/issues/3923#issuecomment -514726341

...