Веб-надстройка Outlook вызывает Microsoft Graph

Я слежу за office-js-helpers, чтобы включить систему единого входа, а затем использую токен доступа для вызова Graph API.

Но Authentication откроет окна входа в новую вкладку, даже если я добавили в manifest.xml

<AppDomain>https://login.windows.net</AppDomain>
<AppDomain>https://login.microsoftonline.com</AppDomain>

Текущий результат.
 введите описание изображения здесь

Изменить:
Для входа в систему через единый вход должен ли он быть перенаправлен в надстройке Outlook вместо открытия нового окна веб-браузера?

Вот демонстрационный проект OutlookOneDriveGraphAddIn.

Я хочу включить api графика в моем веб-надстройке Outlook, api-графику потребуется процесс входа в систему, я хочу иметь возможность запрашивать токен доступа в моем веб-надстройке.

Если что-то неясно, дайте мне знать.


person Edward    schedule 15.03.2019    source источник
comment
Здесь нет вопроса - или воспроизводимого кода.   -  person Mavi Domates    schedule 15.03.2019
comment
Мы можем помочь вам лучше, если вы сможете объяснить, чего вы пытаетесь достичь и в чем проблема, с которой вы сталкиваетесь. Кроме того, добавьте код, с помощью которого мы сможем воспроизвести проблему, когда это возможно.   -  person Outlook Add-ins Team - MSFT    schedule 16.03.2019
comment
@MaviDomates Пожалуйста, проверьте обновление.   -  person Edward    schedule 18.03.2019
comment
@ OutlookAdd-insTeam-MSFT Пожалуйста, проверьте обновление. Я хочу достичь Создайте надстройку ASP.NET Office, которая использует систему единого входа (предварительная версия)   -  person Edward    schedule 18.03.2019
comment
Для потоков аутентификации мы рекомендуем использовать API диалогового окна Office.js. Раздел документации, на который я ссылаюсь, описывает, как использовать API для реализации потока аутентификации.   -  person Outlook Add-ins Team - MSFT    schedule 20.03.2019
comment
@ OutlookAdd-insTeam-MSFT office-js-helpers устарели? Есть ли какая-то конкретная причина, по которой нам нужно повторно реализовать office.helpers.js для достижения потока аутентификации?   -  person Edward    schedule 20.03.2019


Ответы (2)


Здесь есть 2 вопроса.

Вопрос №1: следует ли перенаправлять вход в систему через систему единого входа в надстройке Outlook вместо открытия нового окна веб-браузера?

Его не следует перенаправлять в надстройке Office по той простой причине, что это противоречит OAuth. С аутентификацией OAuth вам нужно будет показать пользователю URL-адрес - в противном случае вы можете подделать пользовательский интерфейс, который похож на вход в систему Microsoft в вашей надстройке, и украсть учетные данные людей. Очевидно, это небезопасно. Поэтому вместо этого, когда вы вызываете getAccessTokenAsync, должно появиться всплывающее диалоговое окно, если пользователь не вошел в систему. Вход в систему обрабатывается Microsoft, которая после этого токен становится доступным с помощью того же метода getAccessTokenAsync.

Вопрос № 2: Как получить токен доступа от надстройки?

См. Документацию здесь: https://docs.microsoft.com/en-us/office/dev/add-ins/develop/sso-in-office-add-ins#add-client-side-code

Office.context.auth.getAccessTokenAsync(function (result) {
    if (result.status === "succeeded") {
        // Use this token to call Web API
        var ssoToken = result.value;
        ...
    } else {
        if (result.error.code === 13003) {
            // SSO is not supported for domain user accounts, only
            // work or school (Office 365) or Microsoft Account IDs.
        } else {
            // Handle error
        }
    }
});
person Mavi Domates    schedule 21.03.2019
comment
Как вы думаете, ожидается ли, что я получу предупреждающее сообщение, позволяющее открыть новое окно? Если всплывающее окно является ожидаемым и разумным, почему появляются всплывающие окна? Почему бы не открывать окна напрямую без этого сообщения? - person Edward; 22.03.2019
comment
Вы не поверите, но это ожидаемо. Причина этого (я знаю, это выглядит ужасно) - опять же функция безопасности. Гипотетически говоря, если вы не предупредите пользователя о всплывающем окне из другого домена - он может вывести вас на любой вредоносный веб-сайт. И они это сделали (много лет назад, помните сумасшедшее количество всплывающих окон, которые мы использовали при серфинге в Интернете?). Вместо этого теперь - разрешены только те же всплывающие окна домена без дополнительных запросов. Существует альтернативный способ использования OAuth с надстройками Office, но вы не сможете использовать SSO, что, на мой взгляд, упрощает работу. - person Mavi Domates; 22.03.2019
comment
@Edward Я был бы признателен за зеленую галочку, если она подходит для ответа. - person Mavi Domates; 17.10.2020

Эй, я столкнулся с той же проблемой. Я также работал над надстройкой Outlook, которой требовался токен доступа для запроса ресурсов из GraphAPI. После долгих часов поиска я нашел лучший из возможных методов и завершил реализацию своего надстройки.

Попробуйте выполнить действия, указанные в Токен доступа без пользователя. Я использовал промежуточное ПО nodejs для аутентификации и его работы. Теперь я могу получить доступ к большинству ресурсов GraphApi, используя это. Надеюсь это поможет.

Обратите внимание, что при использовании этого метода вы должны включать разрешения приложения, а не делегировать.

person Seba Cherian    schedule 20.03.2019
comment
Разным пользователям нужен доступ к своим файлам на диске. Может ли разрешение приложения работать для этого сценария? - person Edward; 20.03.2019
comment
Я так не думаю - person Seba Cherian; 20.03.2019