Авторизация с помощью сторонних поставщиков удостоверений

В дополнение к платформа удостоверений Майкрософт, которые можно использовать в надстройке, существует множество популярных служб, предоставляющих удостоверения. Они предоставляют пользователям и приложениям, таким как надстройка Office, доступ к учетным записям пользователей в других приложениях.

Стандартная платформа, позволяющая обеспечить доступ веб-приложения к веб-службе, — OAuth 2.0. В большинстве ситуаций не обязательно знать абсолютно все о работе платформы, чтобы использовать ее в своей надстройке. Доступно множество библиотек, упрощающих работу с платформой.

Основной принцип работы OAuth заключается в том, что приложение может быть субъектом безопасности для самого себя (как пользователь или группа) и использовать собственное удостоверение и набор разрешений. В большинстве типичных сценариев, когда пользователь выполняет действие в надстройке Office, требующее вовлечения веб-службы, надстройка отправляет службе запрос на получение определенного набора разрешений для учетной записи пользователя. Затем служба предлагает пользователю предоставить надстройке эти разрешения. После предоставления разрешений служба отправляет надстройке небольшой зашифрованный маркер доступа. Надстройка может использовать службу, включая этот маркер во все свои запросы к API-интерфейсам службы. Но надстройка может действовать только в рамках разрешений, предоставленных ей пользователем. Кроме того, срок действия маркера ограничен указанным периодом времени.

Разные шаблоны OAuth (потоки или типы предоставления) предназначены для разных сценариев. Чаще всего реализуются следующие два шаблона.

  • Неявный поток. Обмен данными между надстройкой и веб-службой реализуется с помощью JavaScript на стороне клиента. Этот поток часто используется в одностраничных приложениях (SPA).
  • Поток кода авторизации. Используется подключение типа сервер-сервер между веб-приложением надстройки и веб-службой. Следовательно, используется серверный код.

Поток OAuth предназначен для безопасной идентификации и авторизации приложения. В потоке кода авторизации вам предоставляется секрет клиента, который необходимо держать в тайне. Приложение без серверной части, например SPA, не может защитить секрет, поэтому в таких приложениях рекомендуется использовать неявный поток.

Дополнительные сведения о преимуществах и недостатках неявного потока и потока кода авторизации см. в разделах Код авторизации и Неявный поток.

Примечание.

Вы также можете использовать службу-посредник, которая будет выполнять авторизацию и передавать маркер доступа надстройке. Подробная информация об этом сценарии приведена в разделе Службы-посредники далее в этой статье.

Использование неявного потока в надстройках Office

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

Сведения о библиотеках, поддерживающих неявный поток, см. в разделе Библиотеки далее в этой статье.

Использование потока кода авторизации в надстройках Office

Для реализации потока кода авторизации на различных языках и платформах доступно множество библиотек. Дополнительные сведения о некоторых из этих библиотек см. в разделе Библиотеки далее в этой статье.

Библиотеки

Библиотеки доступны для многих языков и платформ, как для неявного потока, так и для потока кода авторизации. Одни из них универсальны, а другие предназначены для определенных веб-служб.

Если вы используете Facebook, выполните на сайте Facebook для разработчиков поиск по запросу "library" или "sdk".

Общий OAuth 2.0: страница ссылок на библиотеки для более чем десятка языков поддерживается рабочей группой IETF OAuth по адресу: Код OAuth. Обратите внимание, что некоторые из этих библиотек предназначены для реализации службы, совместимой с OAuth. Библиотеки, интересующие вас как разработчика надстроек, называются клиентскими библиотеками на этой странице, так как ваш веб-сервер является клиентом службы, совместимой с OAuth.

Службы-посредники

Для авторизации надстройка может использовать службу посредника , например OAuth.io или auth0 . Служба-посредник может либо предоставлять маркеры доступа для популярных веб-служб, либо упрощать процесс входа в надстройку через социальные сети. Используя минимум кода, надстройка может подключаться к службе-посреднику с помощью клиентского или серверного кода и отправлять надстройке все необходимые токены для веб-службы. Весь код, реализующий авторизацию, находится в службе-посреднике.

Рекомендуем сделать так, чтобы надстройка при проверке подлинности или авторизации использовала наши Dialog API для открытия страницы входа. Дополнительные сведения см . в статье Проверка подлинности с помощью API диалогового окна Office . Когда вы открываете диалоговое окно Office так, оно открывается в совершенно новом экземпляре браузера. При этом используется модуль JavaScript из экземпляра на родительской странице (например, область задач надстройки, FunctionFile). Токен и другие данные, которые можно преобразовать в строку, передается на родительскую страницу с помощью API под названием messageParent. Затем родительская страница может использовать этот токен для авторизованных вызовов ресурса. Из-за особенностей архитектуры те API, которые предоставляет служба-посредник, следует использовать с осторожностью. Часто служба предоставляет набор API, в котором ваш код создает определенный объект контекста, получающий токен и использующий его для последующих вызовов ресурса. Часто у службы есть один метод API, который делает начальный вызов и создает объект контекста. Подобный объект невозможно полностью преобразовать в строку, поэтому его нельзя передать из диалогового окна Office на родительскую страницу. Как правило, служба-посредник предоставляет второй набор API с более низким уровнем абстракции (например, REST API). Этот второй набор содержит API, который получает токен из службы, и другие API, которые передают токен службе при использовании для авторизованного доступа к ресурсу. Вам нужно работать с API на этом нижнем уровне абстракции, чтобы можно было получить токен в диалоговом окне Office, а затем использовать messageParent для его передачи на родительскую страницу.

Что такое CORS?

CORS расшифровывается как общий доступ к ресурсам между источниками. Сведения об использовании CORS в надстройках см. в статье Устранение ограничений политики одного источника в надстройках Office.

См. также