# Полное встраивание приложения Доступно лишь на платных планах Metabase и не входит в возможности GlarusBI {% include plans-blockquote.html feature="Full-app embedding" %} Metabase предлагает несколько [типов встраивания](./introduction.md) с разными уровнями настройки и безопасности. Если вы хотите настроить только фиксированное количество фильтров и представлений детализации ваших данных (т. е. запретить людям создавать свои собственные вопросы, вы можете предпочесть [Подписанное встраивание](. /signed-embedding.md). ## Предварительные условия 1. Убедитесь, что у вас есть [токен лицензии](../paid-features/activating-the-enterprise-edition.md) для [платного плана](https://store.metabase.com/checkout/login-details). 2. Организуйте людей в GlarusBI [группы](../people-and-groups/start.md). 3. Настройте [разрешения](../permissions/introduction.md) для каждой группы. 4. Настройте [SSO](../people-and-groups/start.md#authentication), чтобы автоматически применять разрешения и показывать людям правильные данные при входе в систему. ## Включение полного встраивания приложения в GlarusBI 1. Перейдите в **Настройки** > **Настройки администратора** > **Встраивание**. 2. Нажмите **Включить**. 3. Нажмите **Полное встраивание приложения**. 4. В разделе **Авторизованные источники** добавьте URL-адрес веб-сайта или веб-приложения, в которое вы хотите встроить GlarusBI (например, `https://*.example.com`). ## Настройка встраивания на ваш сайт 1. Создайте iframe с атрибутом `src`, установленным на: - [URL](#pointing-an-iframe-to-a-metabase-url) страницы GlarusBI, которую вы хотите внедрить, или - [точка аутентификации](#pointing-an-iframe-to-an-authentication-endpoint), которая перенаправляет на URL-адрес вашей GlarusBI. 2. Необязательно: в зависимости от того, как настроено ваше веб-приложение, задайте для [переменные среды](../configuring-metabase/environment-variables.md): - [Добавьте токен лицензии](../configuring-metabase/environment-variables.md#mb_premium_embedding_token). - [Встроить GlarusBI в другой домен](#embedding-metabase-in-a-other-domain). - [Защитите встраивание полного приложения](#securing-full-app-embeds). 3. Необязательно: включите связь со встроенной GlarusBI и из нее с помощью поддерживаемых сообщений [`postMessage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage): - [Из GlarusBI] (#supported-postmessage-messages-from-embedded-metabase) - [В GlarusBI] (#supported-postmessage-messages-to-embedded-metabase) 4. Необязательно: установите для параметров значение [показать или скрыть компоненты пользовательского интерфейса GlarusBI](#showing-or-hiding-metabase-ui-components). Когда вы будете готовы развернуть свое полное встраивание приложения, убедитесь, что люди **разрешают** файлы cookie браузера из GlarusBI, иначе они не смогут войти в систему. ### Указание iframe на URL-адрес GlarusBI Перейдите в свой экземпляр GlarusBI и найдите страницу, которую хотите встроить. Например, чтобы встроить домашнюю страницу вашей GlarusBI, установите для атрибута `src` ваш [URL-адрес сайта](../configuring-metabase/settings.md#site-url), например: `http://metabase.yourcompany.com/` Чтобы встроить определенную панель управления GlarusBI, используйте URL-адрес панели управления, например: `http://metabase.yourcompany.com/dashboard/1` ### Pointing an iframe to an authentication endpoint Используйте эту опцию, если вы хотите направлять людей прямо на экран входа в систему SSO (т. е. пропускать экран входа в GlarusBI с помощью кнопки SSO) и автоматически перенаправлять в GlarusBI после аутентификации. Вам нужно будет установить атрибут `src` на вашу конечную точку аутентификации с параметром, содержащим закодированный URL-адрес GlarusBI. Например, чтобы отправить людей на вашу страницу входа SSO и автоматически перенаправить их на `http://metabase.yourcompany.com/dashboard/1`: ``` https://metabase.example.com/auth/sso?redirect=http%3A%2F%2Fmetabase.yourcompany.com%2Fdashboard%2F1 ``` Если вы используете [JWT](../people-and-groups/authenticating-with-jwt.md), вы можете использовать относительный путь для перенаправления (т. е. URL-адрес вашей GlarusBI без [URL-адрес сайта](../configuring-metabase/settings.md#site-url)). Например, чтобы отправить людей на страницу GlarusBI в `/dashboard/1`: ``` https://metabase.example.com/auth/sso?jwt=&redirect=%2Fdashboard%2F1 ``` Вы должны кодировать URL (или дважды кодировать, в зависимости от настроек вашего веб-сайта) все параметры в вашей ссылке перенаправления, включая параметры для фильтров (например, `filter=value`) и [настройки пользовательского интерфейса](#showing-or-hiding-metabase-ui-components) (например, `top_nav=true`). Например, если вы добавили два параметра фильтра в пример JWT, показанный выше, ваша ссылка `src` станет такой: ``` https://metabase.example.com/auth/sso?jwt=&redirect=%2Fdashboard%2F1%3Ffilter1%3Dvalue%26filter2%3Dvalue ``` ## Встраивание GlarusBI в другой домен Если вы хотите встроить GlarusBI в другой домен (скажем, если GlarusBI размещена в `metabase.yourcompany.com`, но вы хотите встроить GlarusBI в `yourcompany.github.io`), установите следующую [переменную среды](../configuring-metabase/environment-variables.md): `MB_SESSION_COOKIE_SAMESITE=Нет` Если вы установите для этой переменной среды значение «Нет», вы должны использовать HTTPS в GlarusBI, чтобы браузеры не могли отклонить запрос. Для получения дополнительной информации см. документацию MDN по [куки-файлам SameSite](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite). ## Защита приложений использующих полное встраивание GlarusBI использует файлы cookie HTTP для аутентификации людей и сохранения их входа в вашу встроенную GlarusBI, даже когда кто-то закрывает сеанс браузера. Чтобы ограничить время, в течение которого человек остается в системе, установите [`MAX_SESSION_AGE`](../configuring-metabase/environment-variables.md#max_session_age) число в минутах. Значение по умолчанию — 20160 (две недели). Например, чтобы люди оставались в системе не более 24 часов: `MAX_SESSION_AGE=1440` Чтобы автоматически очистить файлы cookie для входа пользователя после завершения сеанса браузера: `MB_SESSION_COOKIES=истина` Чтобы вручную выйти из GlarusBI, загрузите следующий URL-адрес (например, в скрытом iframe на странице выхода вашего приложения): `https://metabase.yourcompany.com/auth/logout` Если вы используете [JWT](../people-and-groups/authenticating-with-jwt.md) для единого входа, мы рекомендуем установить для свойства `exp` (срок действия) короткую продолжительность (например, 1 минуту). ## Поддерживаемые сообщения postMessage _from_ встроенной GlarusBI Чтобы не отставать от изменений URL-адреса встроенной GlarusBI (например, при применении фильтра), настройте свое приложение для прослушивания сообщений «местоположение» из встроенной GlarusBI. Если вы хотите использовать это сообщение для создания ссылок, обратите внимание, что «location» отражает «window.location». ``` { "metabase": { "type": "location", "location": LOCATION_OBJECT_OR_URL }} ``` Чтобы встроенная страница GlarusBI (например, вопрос) заполнила весь iframe в вашем приложении, настройте свое приложение для прослушивания сообщения "frame" в "нормальном" режиме из GlarusBI: ``` { "metabase": { "type": "frame", "frame": { "mode": "normal" }}} ``` Чтобы указать размер iframe в вашем приложении, чтобы он соответствовал встроенной странице GlarusBI (например, панели инструментов), настройте свое приложение для прослушивания сообщения «frame» с режимом «fit» из GlarusBI: ``` { "metabase": { "type": "frame", "frame": { "mode": "fit", height: HEIGHT_IN_PIXELS }}} ``` ## Поддерживаемые сообщения postMessage _to_ встроенной GlarusBI Чтобы изменить URL-адрес встраивания, отправьте сообщение «местоположение» из своего приложения в GlarusBI: ``` { "metabase": { "type": "location", "location": LOCATION_OBJECT_OR_URL }} ``` ## Отображение или скрытие компонентов пользовательского интерфейса GlarusBI Чтобы изменить интерфейс полнофункционального встраивания приложения, вы можете добавить параметры в конец URL-адреса встраивания. Если вы хотите изменить цвета или шрифты во встраивании, см. раздел [Настройка внешнего вида](../configuring-metabase/appearance.md). Например, вы можете отключить в GlarusBI [верхнюю панель навигации](#top_nav) и [боковое меню навигации](#side_nav) следующим образом: `your_embedding_url?top_nav=false&side_nav=false` ![Верхняя и боковая навигация отключены](./images/no-top-no-side.png) ### верхняя панель навигации Скрыта по умолчанию. Чтобы отобразить верхнюю панель навигации: `top_nav=истина` ![Верхняя панель навигации](./images/top-nav.png) ### поиск Скрыт по умолчанию. Чтобы отобразить окно поиска в верхней части навигации: `top_nav=true&search=true` ### новая_кнопка Скрыт по умолчанию. Чтобы отобразить кнопку **+ Создать**, используемую для создания запросов или панелей мониторинга: `top_nav=true&new_button=true` ### боковая_навигация Боковая панель навигации отображается на `/ collection` и маршрутах домашней страницы и по умолчанию скрыта везде. Чтобы люди могли свернуть боковую панель: `top_nav=true&side_nav=true` ![Боковая навигация](./images/side-nav.png) ### заголовок Отображается по умолчанию на страницах вопросов и информационных панелей. Чтобы скрыть вопрос или заголовок панели, [дополнительная информация](#additional_info) и [кнопки действий](#action_buttons): `header=false` ### Дополнительная информация Отображается по умолчанию на страницах вопросов и информационных панелей, если [header](#header) включен. Чтобы скрыть серый текст «Отредактировано X дней назад пользователем Имя Фамилия», а также навигационные цепочки с именами коллекций, баз данных и таблиц: `header=false&additional_info=false` ![Дополнительная информация](./images/additional-info.png) ### action_buttons Отображается по умолчанию на страницах вопросов, когда [header](#header) включен. Чтобы скрыть кнопки действий, такие как **Фильтр**, **Суммировать**, кнопку построителя запросов и т. д.: `header=false&action_buttons=false` ![Кнопки действий](./images/action-buttons.png) ## Справочное приложение Чтобы создать образец полного встраивания приложения, см. наше [справочное приложение на GitHub](https://github.com/metabase/sso-examples/tree/master/app-embed-example). ## Еще почитать - [Стратегии предоставления клиентской аналитики. Документация Metabase](https://www.metabase.com/learn/embedding/embedding-overview). - [Стратегии разрешений. Документация Metabase](https://www.metabase.com/learn/permissions/strategy). - [Настройка внешнего вида GlarusBI](../configuring-metabase/appearance.md).