M365Con 2027 – бесплатная онлайн-конференция · 11–22 Jan 2027 · 120 sessions→ m365con.net

Блог · Mirko Peters

Освоение многоарендной регистрации приложений Entra ID для SPFx

By ·

Добро пожаловать обратно в подкаст! Если вы когда-либо пытались перенести решение SharePoint Framework (SPFx), аккуратно собранное в вашем собственном среде разработки, в среду клиента, вы уже знаете то тревожное чувство, когда всё полностью ломается. Тишина. Пустые веб-части. Бесконечные циклы входа. Межарендная аутентификация — главный экзамен для разработчиков Microsoft 365, и чтобы пройти его,

Automatically translated with AI from the original post. Read the English original

▶ BLOGMastering Multi-TenantEntra ID App…M365.FM
Titelbild: Mastering Multi-Tenant Entra ID App Registrations for SPFx

Добро пожаловать обратно в подкаст! Если вы когда-либо пытались перенести решение SharePoint Framework (SPFx), аккуратно собранное в вашем собственном клиенте разработки, в клиентскую среду, вы уже знаете то тревожное чувство, когда всё полностью ломается. Тишина. Пустые веб-части. Бесконечные циклы входа. Межарендная аутентификация — главный экзамен для разработчиков Microsoft 365, и чтобы пройти его, нужно разобраться в тонкостях регистраций приложений Entra ID, динамических областей действия и принципа наименьших привилегий.

В этом подробном руководстве мы развиваем всё, что обсуждали в последнем выпуске. Чтобы глубже разобрать аудиоразговор, послушайте наш подробный разбор: Fix Multi-Tenant SPFx Authentication.

Введение: почему многоарендный SPFx — это сложный режим

Перенос приложения SPFx через границы идентификации часто называют «сложным режимом», и не зря. Когда вы работаете внутри одного клиента, Entra ID, структура сайтов SharePoint и разрешения API в основном неявны или легко обходятся административными привилегиями глобального администратора. Как только вы переходите к многоарендной модели — будь то независимый поставщик программного обеспечения (ISV), который выводит веб-часть на рынок, или внутренняя ИТ-команда, управляющая несколькими дочерними клиентами, — эти обходные пути исчезают.

Теперь вам приходится иметь дело с жёсткими границами каталогов, механизмами согласия, которые требуют явного одобрения администратором, и уникальной топологией сайтов. Если регистрация вашего приложения настроена как однoарендная или если ваш код опирается на жёстко заданные параметры среды, развёртывание гарантированно провалится в промышленной среде.

Для кого это

Прежде чем перейти к техническим механизмам, давайте определим, кому нужно освоить этот архитектурный подход:

  • Разработчики SPFx и консультанты Microsoft 365, которые поставляют решения нескольким клиентам, которые хотят избежать ручной перенастройки при каждом развёртывании у клиента.
  • ИТ-администраторы и MSP, поддерживающие среды SharePoint Online клиентов, которым нужно поддерживать строгую безопасность, одновременно обеспечивая современные решения для разработчиков.
  • Партнёры и ISV, выводящие на рынок веб-части и расширения SPFx, которым нужен повторяемый и масштабируемый путь к рынку для сотен разрозненных клиентских арендаторов.

Главное

Чтобы успешно работать с многоарендными развёртываниями, держите эти ключевые принципы в центре своей архитектуры:

  • Аутентификация — это не шаблонный код: используйте многоарендное приложение Entra ID и требуйте согласие администратора для каждого клиента; проверяйте эти состояния безопасности во время выполнения.
  • Никогда не жёстко задавайте данные клиента: загружайте URL-адреса, идентификаторы и области действия динамически из источника конфигурации с учётом клиента; надёжно храните необходимые секреты бэкенда в Azure Key Vault.
  • Пустые результаты Graph — не признак неработающего кода: когда Microsoft Graph возвращает пустые массивы, это почти always вызвано отсутствующим согласием или несовпадением данных каталога и фильтров, а не синтаксической ошибкой в коде.
  • Один пакет, много клиентов: проектируйте решения SPFx так, чтобы они полностью не зависели от клиента, в сочетании с развёртываниями, ограниченными клиентом, чтобы исключить индивидуальные сборки для каждого заказчика.
  • Выявляйте сбои заранее: централизуйте телеметрию и проверки работоспособности с помощью Application Insights или Azure Monitor, настроенных для каждого клиента.

Ключевые моменты

В ходе нашего технического разбора мы прошли несколько важных этапов, которые нужно учитывать в жизненном цикле разработки:

  • Три ошибки аутентификации, которые срывают межарендные развёртывания: регистрации приложений только для одного клиента, миф о единоразовом согласии и встраивание секретов непосредственно в клиентский код.
  • Почему Microsoft Graph отлично работает в вашем клиенте разработки, но возвращает абсолютный ноль в клиентской среде, и как проверить это до выхода в продуктив.
  • Упаковать один раз, настроить везде: архитектурный план по-настоящему не зависящего от клиента SPFx.
  • Стратегии логирования и мониторинга, которые выявляют скрытые проблемы конфигурации до того, как их заметят ваши клиенты.
  • Структуры управления, которые помогают вашей организации соответствовать требованиям и поддерживать высокий темп поставки.

Контрольный список быстрого старта (копировать и вставить)

  1. Регистрация приложения Entra ID
    • Установите Поддерживаемые типы учетных записей: Multitenant.
    • Определите точный набор делегированных областей Graph, необходимых для работы, следуя принципу наименьших привилегий.
    • Настройте корректные redirect URI, охватывающие как SharePoint Online, так и ваши локальные среды разработки.
  2. Укрепление проекта SPFx
    • Используйте MSGraphClient или AadHttpClient для всех вызовов API с делегированными разрешениями.
    • Читайте специфичные для клиента конфигурации (например, конечные точки и идентификаторы целевых сайтов) из выделенного списка конфигурации SharePoint или из защищённого API; убедитесь, что во фронтенд-коде нет секретов.
    • Реализуйте проверку разрешений во время выполнения, которая корректно отображает баннер «Requires admin consent» с прямой ссылкой для быстрого перехода, если разрешения отсутствуют.
  3. Процесс предоставления согласия
    • Создайте отдельную страницу онбординга клиента, на которой отображаются необходимые области, точный URL для согласия администратора и шаги проверки.
    • Поддерживайте модели согласия для разных аудиторий, различая развёртывание для всей организации и целевую пилотную группу.
  4. Упаковка и развёртывание
    • Упакуйте решение один раз в стандартный файл .sppkg и при необходимости включите развёртывание с областью действия на уровне клиента.
    • Публикуйте через центральный каталог приложений (App Catalog), подробно документируя шаги добавления на уровне сайта.
    • Автоматизируйте цикл выпуска с помощью надёжного конвейера CI/CD (сборка, связывание, упаковка, загрузка и развёртывание).
  5. Мониторинг и поддержка
    • Отправляйте подробную телеметрию, включающую Tenant ID, correlation ID, конкретные функции и коды ошибок.
    • Подключите панели мониторинга Application Insights или Azure Monitor вместе с действенными оповещениями.
    • Задокументируйте понятную процедуру отката к предыдущим версиям пакета вместе с подробной картой версий для каждого клиента.

Типичные ошибки и их устранение

Даже опытные разработчики регулярно попадают в предсказуемые ловушки при настройке многоклиентских приложений. Вот как быстро их диагностировать и устранить:

  • Симптом: Циклический вход в систему или досадный сценарий «у меня работает, у них — нет».
    Причина: Регистрация вашего приложения в Entra ID всё ещё настроена как одноклиентская, либо reply URL не соответствуют целевой среде.
    Решение: Переключите регистрацию приложения на многоклиентскую, исправьте redirect URI и инициируйте новый запрос согласия.
  • Симптом: Microsoft Graph возвращает полностью пустые наборы данных.
    Причина: Отсутствует согласие администратора клиента или слишком строгие фильтры каталога.
    Решение: Запустите корректный процесс согласия администратора, проверьте запросы напрямую в Graph Explorer от имени реального пользователя из клиента и ослабьте жёсткие допущения или фильтры в коде.
  • Симптом: Пользователи не могут добавить веб-часть на свои страницы.
    Причина: Пакет не был должным образом развёрнут в каталоге приложений клиента либо его блокируют политики организации.
    Решение: Проверьте статус развёртывания в App Catalog и просмотрите настройки и политики приложений клиента.
  • Симптом: Необходимость пересобирать пакет при каждом незначительном изменении конфигурации у разных клиентов.
    Причина: Жёстко заданные ID, URL или секреты встроены непосредственно в бандл.
    Решение: Вынесите конфигурацию наружу; используйте списки конфигурации SharePoint или Azure Key Vault и читайте эти значения динамически во время выполнения.

Основы управления и безопасности

Безопасность не может быть второстепенной задачей при развёртывании кода в каталогах внешних клиентов. Внедрите следующие основы управления, чтобы сохранить доверие:

  • Соблюдайте принцип наименьших привилегий для областей и регулярно проводите их пересмотр, чтобы удалять неиспользуемые разрешения.
  • Храните секреты бэкенд-приложений в Azure Key Vault и установите регулярный график их ротации.
  • Используйте политики разрешений приложений Teams и SharePoint, чтобы жёстко ограничить целевые аудитории и предотвратить несанкционированное использование.
  • Ведите подробный журнал согласий, фиксирующий, кто дал согласие, когда оно было предоставлено и какие области были одобрены.
  • Динамически настраивайте брендинг веб-части через API тем Microsoft 365, вместо того чтобы включать в код стили, специфичные для клиента.

План проверки (перед выходом на продакшен у клиента)

Никогда не развёртывайте вслепую. Пройдите этот план проверки перед тем, как представить решение клиенту:

  • Протестируйте все вызовы Microsoft Graph непосредственно в клиенте, используя Graph Explorer, под тем же самым пользователем и с теми же делегированными областями.
  • Проведите локальное пилотное развёртывание на одной изолированной коллекции сайтов с небольшой группой целевых пользователей.
  • Проверяйте историю версий и возможность отката прямо в каталоге приложений SharePoint.
  • Смоделируйте сценарии работы без сети и с истекшим токеном, чтобы убедиться, что сообщения об ошибках и автоматические механизмы восстановления работают как ожидается.

Часто задаваемые вопросы

Нужны ли мне разрешения уровня приложения для SPFx?
Обычно нет. Решения SPFx выполняются в контексте делегированного пользователя. Разрешения уровня приложения требуют дополнительных административных согласований и специальных архитектурных решений — используйте их строго тогда, когда нет других подходящих вариантов.

Можно ли обойтись без согласия для каждого клиента?
Нет. Администратор каждого клиента должен явно предоставить запрошенные вашим приложением области доступа. Однако процесс можно существенно упростить, создав пошаговые интерфейсы онбординга и проактивные баннеры уведомлений во время работы.

Как поддерживать одну кодовую базу для многих клиентов?
Сделайте решение полностью независимым от клиента, вынесите все конфигурации, зависящие от среды, и автоматизируйте сборку и развёртывание. Используйте флаги функций для безопасного управления настройками, специфичными для клиента.

Как быстрее диагностировать ситуацию «данных нет»?
Записывайте в журнал исходные ответы Graph вместе с проверками областей доступа. При возникновении сбоя выводите встроенное уведомление с текстом «Отсутствует согласие или недостаточная область доступа» и прямой ссылкой для немедленного устранения проблемы.

Заключение

Освоение регистрации многоклиентских приложений Entra ID для решений SharePoint Framework — это то, что отличает любительские скрипты от корпоративных программных продуктов. Перейдя к мышлению, ориентированному на независимую от клиента упаковку, динамическую загрузку конфигурации и надёжную проверку согласия во время выполнения, вы сможете устранить тихие сбои развёртывания и обеспечить бесперебойную работу для каждого клиента.

Чтобы узнать больше о реальных историях и архитектурных решениях, стоящих за этими решениями, обязательно посмотрите связанный эпизод подкаста: Fix Multi-Tenant SPFx Authentication. Спасибо за чтение и удачной разработки!

Entities in this article

Microsoft Entra ID SharePoint Application registration Microsoft Graph Azure Key Vault SharePoint Framework (SPFx) Microsoft 365 Application Insights Azure Monitor Graph Explorer

Related articles

RSS