update help elma
This commit is contained in:
@ -1,20 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Внешнее приложение в модулях</title>
|
||||
<title>External app in modules</title>
|
||||
<meta name="generator" content="Help+Manual" />
|
||||
<meta name="keywords" content="проверить список подключений и разорвать соединение" />
|
||||
<meta name="keywords" content="" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="В рамках модуля можно подключить внешнее приложение. Оно позволяет разрешить доступ сторонним сервисам к защищённым ресурсам ELMA365 по протоколу авторизации OAuth2." />
|
||||
<meta name="description" content="An external app can be connected as part of the module. It provides access to BRIX protected resources for external services using the OAuth2 authorization protocol." />
|
||||
<meta name="picture" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Cправка по Low-code платформе ELMA365" />
|
||||
<meta property="og:url" content="https://elma365.com/ru/help" />
|
||||
<meta property="og:image" content="" />
|
||||
<meta property="og:site_name" content="ELMA365" />
|
||||
<meta property="og:title" content="Full documentation for BRIX365 platform. Low-code developer guide. User guide. Admin guide. Developer guide." />
|
||||
<meta property="og:url" content="https://brix365.com/en/help" />
|
||||
<meta property="og:image" content="" />
|
||||
<link rel="icon" href="favicon.png" type="image/png" />
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||||
@ -24,7 +23,6 @@
|
||||
<link rel="stylesheet" href="./article.css" />
|
||||
<link rel="stylesheet" href="./glossary.css" />
|
||||
<link rel="stylesheet" href="./theme.css" />
|
||||
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="helpman_settings.js"></script>
|
||||
<script type="text/javascript" src="helpman_topicinit.js"></script>
|
||||
@ -36,16 +34,16 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-M6ETBEC1R9"></script><script>window.dataLayer=window.dataLayer || []; function gtag(){dataLayer.push(arguments);}gtag('js', new Date()); gtag('config', 'G-M6ETBEC1R9');</script>
|
||||
|
||||
<script>!function(e,t,c,n,r,a,m){e.ym=e.ym||function(){(e.ym.a=e.ym.a||[]).push(arguments)},e.ym.l=1*new Date;for(var s=0;s<document.scripts.length;s++)if(document.scripts[s].src===n)return;a=t.createElement(c),m=t.getElementsByTagName(c)[0],a.async=1,a.src=n,m.parentNode.insertBefore(a,m)}(window,document,"script","https://mc.yandex.ru/metrika/tag.js"),ym(83179930,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0})</script><noscript><div><img alt=""src=https://mc.yandex.ru/watch/83179930 style=position:absolute;left:-9999px></div></noscript>
|
||||
|
||||
<header class="header elma-365">
|
||||
<div class="container">
|
||||
<a class="header__logo" href="https://elma365.com/ru/help">
|
||||
<img src="./logo.svg" alt="header logo">
|
||||
<a class="header__logo" href="https://brix365.com/en/help">
|
||||
<img src="./logo-en.svg" alt="header logo">
|
||||
</a>
|
||||
<!-- <div class="hero__search-form" id="search-panel">
|
||||
<form class="search-form" onsubmit="ym(83179930,'reachGoal','poisk')">
|
||||
<form class="search-form" onsubmit="ym(83180416,'reachGoal','poisk')">
|
||||
<label class="search-form__label">
|
||||
<span id="reset-search" class="search__icon"></span>
|
||||
<input class="search-form__input" type="text">
|
||||
@ -65,7 +63,7 @@
|
||||
</div>
|
||||
<div class="header__navi">
|
||||
|
||||
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a class="project-link" href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li><li><a class="project-link" href="https://elma365.com/ru/help/business_solutions/-elma365-store.html">Бизнес-решения</a></li></ul></span></li><li><a href="https://api.elma365.com/ru/"target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/"target="_blank">SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/" target="_blank">Академия</a></li><li><a href="https://elma365.com/ru/" target="_blank">Сайт ELMA365</a></li></ul>
|
||||
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a class="project-link" href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://brix365.com/en/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li><li><a class="project-link" href="https://brix365.com/en/help/business_solutions/-elma365-store.html">Business Solutions</a></li></ul></span></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li><li><a href="https://tssdk.brix365.com/" target="_blank">SDK</a></li></ul>
|
||||
|
||||
|
||||
</div>
|
||||
@ -80,8 +78,8 @@
|
||||
|
||||
<aside class="sidebar" id="sidebar">
|
||||
<div class="sidebar__header">
|
||||
<a class="header__logo" href="https://elma365.com/ru/help">
|
||||
<img src="./logo-light.svg">
|
||||
<a class="header__logo" href="https://brix365.com/en/help">
|
||||
<img src="./logo-light-en.svg">
|
||||
</a>
|
||||
<span class="sidebar__close elma-365-close" id="close"></span>
|
||||
</div>
|
||||
@ -94,15 +92,15 @@
|
||||
<div class="article-inner">
|
||||
<div class="content">
|
||||
<header class="article__header">
|
||||
<div class="article__bread" style="display:flex; gap:10px;">
|
||||
<div class="article__bread" style="display:flex; gap:10px;">
|
||||
<span id="subcategory" class="search-res__item-category search-res__item-category_subcategory subcategory article__badge"></span>
|
||||
|
||||
<div class="topic__breadcrumbs">
|
||||
<p><a href="360024498352.html">Модули расширения системы</a> > <a href="extentions.html">Пользовательские модули</a> / Внешнее приложение в модулях</p>
|
||||
<p><a href="360024498352.html">Modules</a> > <a href="extentions.html">Custom modules</a> / External app in modules</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Внешнее приложение в модулях</span></h1>
|
||||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">External app in modules</span></h1>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
@ -111,114 +109,114 @@
|
||||
<a href="#h1-article" class="scroll-top"></a>
|
||||
</div>
|
||||
<!-- Placeholder for topic body. -->
|
||||
<p style="margin: 7px 0 7px 0;">В рамках модуля можно подключить внешнее приложение. Оно позволяет разрешить доступ сторонним сервисам к защищённым ресурсам ELMA365 по протоколу авторизации OAuth2.</p>
|
||||
<p style="margin: 7px 0 7px 0;">Предоставить доступ к данным из ELMA365 можно компьютерным программам, мобильным приложениям, веб‑сервисам и т. д. Для этого на стороне ELMA365 в модуле создаётся внешнее приложение, при его настройке подключается сторонний сервис и определяется его уровень доступа. </p>
|
||||
<p style="margin: 7px 0 7px 0;">После подключения данные из ELMA365 могут служить способом аутентификации на стороннем сервисе, а также источником для обращения через Web API.</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">An external app can be connected as part of the module. It provides access to BRIX protected resources for external services using the OAuth2 authorization protocol.</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">You can grant access to data from BRIX to computer programs, mobile apps, web services, etc. To do this, an external app is created on the BRIX side in the module, an external service is connected during its configuration, and its access level is defined.</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">Once connected, the data from BRIX can serve as a way of authentication to the external service, as well as a source for access via Web API.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало внимание</span></p>
|
||||
<p style="margin: 7px 0 7px 0;">Создавать и настраивать внешнее приложение могут только <a href="360006871932.html#administrators" class="topiclink">администраторы системы</a>. </p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">Creating an external app in the module is available in BRIX On-Premises delivery. In the SaaS delivery, the feature will be enabled after the system is upgraded to version 2024.2</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">Only <a href="360006871932.html#administrators" class="topiclink">system administrators</a> can create and setup an external app. </p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец внимание</span></p>
|
||||
<h2 class="p_Heading2"><a id="main-info" class="hmanchor"></a><span class="f_Heading2">Общий принцип работы внешнего приложения</span></h2>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">Внешнее приложение осуществляет работу по протоколу авторизации OAuth2 следующим образом: </p>
|
||||
<h2 class="p_Heading2"><a id="main-info" class="hmanchor"></a><span class="f_Heading2">How an external app works</span></h2>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">The external app implements the OAuth2 authorization protocol as follows: </p>
|
||||
<ol style="list-style-type:decimal">
|
||||
<li value="1" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">На стороне ELMA365 в модуле <a href="module-external-app.html#enable-app" class="topiclink">включается внешнее приложение и добавляется шаблон клиента OAuth2/OIDC</a>, по которому определяется предоставляемый уровень доступа. </li><li value="2" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><a href="module-external-app.html#create-client" class="topiclink">Создаётся клиент OAuth2/OIDC</a>, т. е. указываются данные стороннего сервиса, которому разрешается доступ к ресурсам ELMA365. </li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;">Сервис нужно разработать самостоятельно, реализовав в нём клиентскую часть протокола OAuth2. <span style="background-color: #ffffff;">Технические спецификации и стандарты</span> работы протокола OAuth2 читайте в <a href="https://datatracker.ietf.org/doc/html/rfc6749" target="_blank" class="weblink">документации RFC</a>.</p>
|
||||
<li value="1" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">On the BRIX side, <a href="module-external-app.html#enable-app" class="topiclink">the external app is enabled in the module and an OAuth2/OIDC client template is added</a>, which is used to determine the access level to be granted. </li><li value="2" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">An <a href="module-external-app.html#create-client" class="topiclink">OAuth2/OIDC client is created</a>, i.e. the data of an external service that is allowed to access BRIX resources is specified. </li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;">The service should be developed independently, implementing the client part of the OAuth2 protocol in it. Technical specifications and standards of the OAuth2 protocol can be found in the <a href="https://datatracker.ietf.org/doc/html/rfc6749" target="_blank" class="weblink">RFC documentation</a>.</p>
|
||||
<ol style="list-style-type:decimal">
|
||||
<li value="3" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><a href="module-external-app.html#add-service" class="topiclink">В стороннем сервисе осуществляется подключение к ELMA365</a> по протоколу OAuth2. Соединение выполняется c помощью уникального идентификатора и секрета внешнего приложения, полученных при создании клиента.</li><li value="4" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">После установки связи пользователь разрешает стороннему сервису доступ с уровнем, указанным в настройках внешнего приложения, через свой аккаунт в ELMA365. </li><li value="5" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Генерируется код авторизации и передаётся стороннему сервису. По полученному коду авторизации создаются токен доступа и токен обновления. </li><li value="6" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">В стороннем сервисе по токену доступа составляются и выполняются запросы на получение ресурсов ELMA365. Токен обновления применяется для генерации нового токена доступа в случае истечения срока его годности.</li><li value="7" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Пользователь может <a href="module-external-app.html#check-connections" class="topiclink">проверить список подключений и разорвать соединение</a> в своём профиле.</li></ol>
|
||||
<h2 class="p_Heading2"><a id="enable-app" class="hmanchor"></a><span class="f_Heading2">Включить внешнее приложение и создать шаблон доступа</span></h2>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">Внешнее приложение подключается на стороне ELMA365 в модуле и служит способом интеграции платформы и стороннего сервиса. Соединение ELMA365 со сторонним сервисом осуществляется по протоколу OAuth2. </p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">Для каждого пользовательского модуля можно создать одно внешнее приложение. При этом через внешнее приложение в модуле можно подключить несколько сервисов. </p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">При настройке внешнего приложения создаётся <span style="font-weight: bold;">Шаблон клиента OAuth2/OIDC</span>. В нём указывается уровень доступа для стороннего сервиса. Можно предоставить доступ к данным пользователя, Web API или выбрать оба варианта. </p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="background-color: #ffffff;">Созданный шаблон выбирается при подключении стороннего сервиса. Если несколько сервисов подключаются к одному внешнему приложению, вы можете использовать один настроенный шаблон для предоставления одинакового уровня доступа. </span></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">Для настройки внешнего приложения выполните следующие действия: </p>
|
||||
<li value="3" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><a href="module-external-app.html#add-service" class="topiclink">Connection to BRIX via OAuth2 protocol is performed in an external service</a>. The connection is made using a unique identifier and the secret of the external app, obtained when creating the client.</li><li value="4" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">After the connection is established, the user allows external service access with the level specified in the external app settings through their account in BRIX.</li><li value="5" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">An authorization code is generated and passed to the external service. An access token and an refresh token are created using the received authorization code. </li><li value="6" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">The external service generates and executes requests for BRIX resources using the access token. The refresh token is used to generate a new access token in case of its expiration date.</li><li value="7" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">The user can <a href="module-external-app.html#check-connections" class="topiclink">check the connection list and interrupt the connection</a> in their profile.</li></ol>
|
||||
<h2 class="p_Heading2"><a id="enable-app" class="hmanchor"></a><span class="f_Heading2">Enable an external app and create an access template</span></h2>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="background-color: #ffffff;">The external app is connected on the BRIX side in the module and serves as a way to integrate the platform and the external service. BRIX connection to the external service is performed via the OAuth2 protocol.</span></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="background-color: #ffffff;">One external app can be created for each user module. At the same time, several services can be connected via an external app in the module.</span></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="background-color: #ffffff;">When configuring an external app, an </span><span style="font-weight: bold; background-color: #ffffff;">OAuth2/OIDC client template</span><span style="background-color: #ffffff;"> is created. It specifies the access level for the external service. Access can be granted to user data, Web API, or both.</span></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="background-color: #ffffff;">The created template is selected when connecting an external service. If several services connect to one external app, you can use one customized template to provide the same level of access. </span></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">To configure an external app, follow the steps below: </p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="1" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Перейдите в раздел <span style="font-weight: bold;">Администрирование > Модули</span> и выберите созданный <a href="extentions.html" class="topiclink">пользовательский модуль</a>.</li><li value="2" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">На странице модуля нажмите <span style="font-weight: bold;">Управление</span> и перейдите на вкладку <span style="font-weight: bold;">Внешнее приложение</span>.</li><li value="3" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">На открывшейся странице выберите <span style="font-weight: bold;">Включить</span>. Создастся внешнее приложение, через которое будет осуществляться подключение стороннего сервиса. </li><li value="4" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Название внешнего приложения можно отредактировать. Детали используются для идентификации внешнего приложения, когда пользователь разрешает доступ стороннему сервису на выполнение действий от его аккаунта.</li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;">Для изменения названия нажмите <span style="font-weight: bold;">Настроить</span>. В открывшемся окне в поле <span style="font-weight: bold;">Наследование</span> снимите флажок с опции <span style="font-weight: bold;">Использовать основные данные модуля</span> и задайте название, описание и иконку для внешнего приложения. Сохраните настройки. </p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;"><img alt="module-external-app-1" width="1030" height="592" style="margin:0;width:1030px;height:592px;border:none" src="module-external-app-1.png"/></p>
|
||||
<li value="1" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Go to <span style="font-weight: bold;">Administration > Modules</span> and select the <a href="extentions.html" class="topiclink">custom module you created</a>.</li><li value="2" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">On the module page, click <span style="font-weight: bold;">Settings</span> and click the <span style="font-weight: bold;">External App</span> tab.</li><li value="3" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">On the opened page, select <span style="font-weight: bold;">Enable</span>. An external app will be created through which the external service will be connected. </li><li value="4" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">You can edit the name of the external app. Details are used to identify the external app when the user authorizes access to an external service to perform activities from their account. </li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;">To change the name, click <span style="font-weight: bold;">Set up</span>. In the opened window, in the Inherit field, uncheck the Use<span style="font-weight: bold;"> main module data</span> checkbox and set a name, description, and icon for the external app. Save the settings. </p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;"><img alt="ext_app_01" width="814" height="520" style="margin:0;width:814px;height:520px;border:none" src="ext_app_01.png"/></p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="5" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">После включения внешнего приложения на странице появится блок <span style="font-weight: bold;">Шаблоны клиентов OAuth2/OIDC</span>. Нажмите <span style="font-weight: bold;">+ Создать шаблон</span> и задайте уровень доступа для подключаемых сторонних сервисов:</li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;"><img alt="module-external-app-2" width="861" height="534" style="margin:0;width:861px;height:534px;border:none" src="module-external-app-2.png"/></p>
|
||||
<li value="5" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Once the external app is enabled, the <span style="font-weight: bold;">OAuth2/OIDC client templates</span> section will appear on the page. Click <span style="font-weight: bold;">+Create</span> <span style="font-weight: bold;">template</span> and set the access level for the external services to be connected::</li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;"><img alt="ext_app_02" width="750" height="379" style="margin:0;width:750px;height:379px;border:none" src="ext_app_02.png"/></p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Название</span><span style="font-weight: bold; color: #ff0000;">*</span> — укажите название, которое будет отображаться в списке созданных шаблонов при подключении стороннего сервиса; </li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Уровни доступа</span><span style="font-weight: bold; color: #ff0000;">*</span> — определите, к каким ресурсам ELMA365 предоставляется доступ стороннему сервису после его подключения: <ul style="list-style-type:circle">
|
||||
<li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">openid</span> — доступ к данным пользователя, который разрешает подключение сервиса к ELMA365. Доступ необходим для выполнения протокола OpenID. Включает информацию об идентификаторе, компании и email. Например, через внешнее приложение с таким уровнем доступа можно запрашивать адреса электронной почты и синхронизировать учётные записи из ELMA365 с аккаунтами пользователей в стороннем сервисе;</li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">api</span> — доступ к выполнению любых операций через <a href="https://api.elma365.com/ru/public-api/guides/IntroWebAPI/" target="_blank" class="weblink">WebAPI</a>. Например, через внешнее приложение можно передавать запросы с стороннего сайта и создавать элементы приложений в ELMA365. </li></ul></li></ul>
|
||||
<li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Name</span><span style="font-weight: bold; color: #ff0000;">*</span>. Specify the name that will be displayed in the list of created templates when an external service is connected; </li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Access levels</span><span style="font-weight: bold; color: #ff0000;">*</span>. Define to which BRIX resources an external service is granted access once it is connected: <ul style="list-style-type:circle">
|
||||
<li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">openid</span>. It grants access to user data, which authorizes the service connection to BRIX. The access is required to execute the OpenID protocol. It includes information about ID, company, and email. For example, through an external app with this level of access, you can request email addresses and synchronize accounts from BRIX with user accounts in an external service;</li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">api</span>. It grants access to performing any operations via <span style="color: #0000ff; text-decoration: underline;"><a href="https://api.brix365.com/en/public-api/guides/IntroWebAPI/" target="_blank" class="weblink">WebAPI</a></span>. For example, through an external app, you can pass requests from an external website and create app items in BRIX. </li></ul></li></ul>
|
||||
<ol style="list-style-type:upper-roman" start="6">
|
||||
<li value="6" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Сохраните шаблон клиента. </li></ol>
|
||||
<p style="margin: 7px 0 7px 0;"><span style="font-weight: bold;">Важно:</span> при создании шаблона клиента OAuth2/OIDC продумайте, каким образом будет использоваться настроенное внешнее приложение. В зависимости от этого выберите необходимые уровни доступа. При эксплуатации подключённого стороннего сервиса пользователи не смогут самостоятельно изменить набор предоставленных уровней доступа. </p>
|
||||
<h2 class="p_Heading2"><a id="create-client" class="hmanchor"></a><span class="f_Heading2">Создать клиента OAuth2/OIDC и подключить его к внешнему приложению </span></h2>
|
||||
<p style="margin: 7px 0 7px 0;">После настройки внешнего приложения и шаблона клиента OAuth2/OIDC необходимо указать данные стороннего сервиса, которому разрешается доступ к ресурсам ELMA365.</p>
|
||||
<p style="margin: 7px 0 7px 0;">Чтобы подключить сторонний сервис, выполните следующие действия:</p>
|
||||
<li value="6" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Save the client template. </li></ol>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;"><span style="font-weight: bold;">Important:</span> When creating the OAuth2/OIDC client template, consider how the configured external app will be used. Depending on this, select the necessary access levels. When using a connected external service, users will not be able to change the set of provided access levels on their own. </p>
|
||||
<h2 class="p_Heading2"><a id="create-client" class="hmanchor"></a><span class="f_Heading2">Create an OAuth2/OIDC client and connect it to an external app </span></h2>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">After configuring the external app and the OAuth2/OIDC client template, you need to specify the details of the external service that is allowed to access BRIX resources.</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">To connect an external service, follow the steps below:</p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="1" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Перейдите на главную страницу пользовательского модуля, для которого настроено внешнее приложение, и включите модуль. </li><li value="2" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Разверните блок <span style="font-weight: bold;">Токены</span>, который появится на главной странице модуля. </li><li value="3" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Нажмите кнопку <span style="font-weight: bold;">+ Создать клиент OAuth/OIDC</span> и заполните данные о подключаемом стороннем сервисе: </li></ol>
|
||||
<p style="margin: 7px 0 7px 36px;"><img alt="module-external-app-3" width="900" height="542" style="margin:0;width:900px;height:542px;border:none" src="module-external-app-3.png"/></p>
|
||||
<li value="1" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Go to the main page of the user module for which the external app is configured and enable the module. </li><li value="2" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Expand the <span style="font-weight: bold;">Tokens</span> section that appears on the module’s main page. </li><li value="3" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Click <span style="font-weight: bold;">+Create OAuth/OIDC client </span>and fill in the details of the external service to be connected: </li></ol>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 36px;"><img alt="ext_app_03" width="630" height="424" style="margin:0;width:630px;height:424px;border:none" src="ext_app_03.png"/></p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Название</span><span style="font-weight: bold; color: #ff0000;">*</span> — введите название подключаемого стороннего сервиса; </li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Шаблон</span><span style="font-weight: bold; color: #ff0000;">*</span> — выберите любой шаблон клиента OAuth2/OIDC, созданный для внешнего приложения в модуле. С помощью указанного шаблона вы определяете, к каким ресурсам ELMA365 сторонний сервис будет иметь доступ; </li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Области применения</span> — данные уровней доступа из выбранного вами шаблона клиента OAuth2/OIDC. Показывается для информации;</li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">URI перенаправления</span><span style="font-weight: bold; color: #ff0000;">*</span> — укажите URL стороннего сервиса, по которому код авторизации из ELMA365 будет возвращаться в сервис. Доступна возможность внести несколько URI перенаправления. Для этого нажмите <span style="font-weight: bold;">+ Добавить</span> и заполните поле; </li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Истекает</span> — отметьте срок действия токенов, по которым выполняется соединение стороннего сервиса и ELMA365. По истечении этого периода работа с сервисом прекращается. Вы сможете создать клиента OAuth2/OIDC повторно и выпустить новые токены. </li></ul>
|
||||
<li style="text-align: justify; line-height: 1.20; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Name</span><span style="font-weight: bold; color: #ff0000;">*</span>. Enter the name of the external service to be connected.</li><li style="text-align: justify; line-height: 1.20; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Template</span><span style="font-weight: bold; color: #ff0000;">*</span><span style="font-weight: bold;">.</span><span style="font-weight: bold; color: #ff0000;"> </span>Select any OAuth2/OIDC client template created for an external app in the module. Using the specified template, you define which BRIX resources the external service will have access to.</li><li style="text-align: justify; line-height: 1.20; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Scopes</span>. Access level data from the OAuth2/OIDC client template you selected is shown for information.</li><li style="text-align: justify; line-height: 1.20; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Redirect URI</span><span style="font-weight: bold; color: #ff0000;">*</span>. Specify the URL of the external service, which will be used to return the authorization code from BRIX to the service. It is possible to enter several redirection URIs. To do this, click <span style="font-weight: bold;">+ Add</span> and fill in the field.</li><li style="text-align: justify; line-height: 1.20; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Expires</span>. Select the validity period of the tokens used to connect the external service and BRIX. After this period expires, work with the service will be terminated. You will be able to create the OAuth2/OIDC client again and issue new tokens.</li></ul>
|
||||
<ol style="list-style-type:upper-roman" start="4">
|
||||
<li value="4" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Сохраните настройки. </li><li value="5" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Появится окно с сгенерированными данными внешнего приложения модуля, которые понадобятся для соединения с добавленным клиентом OAuth2/OIDC.</li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;">Окно показывается только один раз. Посмотреть эти данные повторно нельзя. Скопируйте и сохраните <span style="font-weight: bold;">Уникальный идентификатор приложения</span> и <span style="font-weight: bold;">Секрет приложения</span> и нажмите <span style="font-weight: bold;">Готово</span>. </p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;"><img alt="module-external-app-4" width="838" height="518" style="margin:0;width:838px;height:518px;border:none" src="module-external-app-4.png"/></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">Настройки на стороне ELMA365 завершены. Теперь необходимо установить соединение с ELMA365 в стороннем сервисе. </p>
|
||||
<h2 class="p_Heading2"><a id="add-service" class="hmanchor"></a><span class="f_Heading2">Подключить сторонний сервис к ELMA365 по протоколу OAuth2</span></h2>
|
||||
<p style="margin: 7px 0 7px 0;">Подключение выполняется в стороннем сервисе по протоколу OAuth2 любым способом, который зависит от типа сервиса, набора применяемых инструментов, наличия готовых библиотек с решениями и действующих норм безопасности.</p>
|
||||
<p style="margin: 7px 0 7px 0;">Приведём описание одного из возможных способов установки соединения стороннего сервиса и ELMA365:</p>
|
||||
<li value="4" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">Save the settings. </li><li value="5" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;">The window with generated data from the module’s external app will appear, which will be needed to connect to the added OAuth2/OIDC client.</li></ol>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;">The window is shown only once. You cannot view this data again. Copy and save the<span style="font-weight: bold;"> App unique identifier</span> and <span style="font-weight: bold;">App secret</span> and click <span style="font-weight: bold;">Done</span>.</p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 36px;"><img alt="ext_app_04" width="662" height="333" style="margin:0;width:662px;height:333px;border:none" src="ext_app_04.png"/></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;">The settings on the BRIX side are completed. Now it is necessary to establish a connection with BRIX in the external service. </p>
|
||||
<h2 class="p_Heading2"><a id="add-service" class="hmanchor"></a><span class="f_Heading2">Connect an external service to BRIX using the OAuth2 protocol</span></h2>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">The connection is performed in an external service using the OAuth2 protocol in any way that depends on the type of service, the set of tools used, the availability of ready-made libraries with solutions, and the current security regulations.</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">The following is a description of one of the possible ways to establish a connection between an external service and BRIX:</p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="1" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">В стороннем сервисе сохраняются <span style="font-weight: bold;">Уникальный идентификатор приложения</span> и <span style="font-weight: bold;">Секрет приложения</span>, полученные при создании клиента OAuth2/OIDC в ELMA365. Данные следует указывать в коде не в явном виде, поскольку это нарушает требования безопасности и не позволяет их оперативно изменять.</li><li value="2" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">В<span style="font-weight: bold;"> </span>стороннем сервисе реализуется перенаправление пользователя на страницу ELMA365. На этой странице пользователь разрешает доступ сервису к ресурсам ELMA365 при запуске передачи данных.</li></ol>
|
||||
<p style="text-indent: 1px; margin: 7px 0 7px 35px;">Способ реализации перенаправления:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample"><URL-адрес_ELMA365>/api/o/oauth/v2/authorize/client_id=<Уникальный_идентификатор_приложения>&redirect_uri=<Обратная_ссылка>&scope=<Запрашиваемый_уровень_доступа>&response_type=code&response_mode=query&state=<Ключ_защиты></span></p>
|
||||
<p style="margin: 7px 0 7px 36px;">Где:</p>
|
||||
<li value="1" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">The <span style="font-weight: bold;">App unique identifier</span> and <span style="font-weight: bold;">App secret</span> obtained when creating the OAuth2/OIDC client in BRIX are stored in an external service. The data should be specified in the code in a non-explicit way, as this violates security requirements and does not allow them to be changed promptly.</li><li value="2" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">The external service implements redirection of the user to the BRIX page. On this page, the user authorizes the service to access BRIX resources when the data transmission is started.</li></ol>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 36px;">Method of redirection realization:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample"><URL-address_elma365>/api/o/oauth/v2/authorize/client_id=<app_unique_identifier>&redirect_uri=<redirect_link>&scope=<Requested_access_level>&response_type=code&response_mode=query&state=<security_key></span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 36px;">Where:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><URL-адрес_ELMA365></span> — путь до сервера ELMA365, где включено внешнее приложение в модуле и добавлен клиент OAuth2/OIDC;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Уникальный_идентификатор_приложения></span> — значение идентификатора, полученное при создании клиента OAuth2/OIDC в ELMA365;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Обратная_ссылка></span> — ссылка обратного перехода в сторонний сервис после того, как пользователь предоставил разрешение доступа к ресурсам ELMA365;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Запрашиваемый_уровень_доступа></span> — название запрашиваемого уровня доступа, указанного в шаблоне клиента OAuth2/OIDC: <span style="font-weight: bold;">api</span> или <span style="font-weight: bold;">openid</span>. Если в шаблоне настроено несколько уровней доступа, прописывается каждый из них;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Ключ_защиты></span> — верификационный ключ защиты, который представляет собой произвольное строковое значение.</li></ul>
|
||||
<p style="text-indent: -1px; margin: 7px 0 7px 36px;">Для пользователя страница разрешения доступа стороннему сервису может выглядеть следующим образом:</p>
|
||||
<p style="text-indent: -1px; margin: 7px 0 7px 36px;"><img alt="module-external-app-5" width="796" height="485" style="margin:0;width:796px;height:485px;border:none" src="module-external-app-5.png"/></p>
|
||||
<p style="margin: 7px 0 7px 0;">После разрешения доступа должен выполняться следующий порядок действий: </p>
|
||||
<li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><URL-address_BRIX></span>. The path to the BRIX server, where the external app is enabled in the module and the OAuth2/OIDC client is added.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><App_unique_identifier></span>. Identifier value obtained when creating OAuth2/OIDC client in BRIX.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Backlink></span>. The link to switch back to the external service after the user has granted permission to access BRIX resources.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><</span><span style="font-size: 15px;"> </span><span style="font-weight: bold;">Requested_level_access ></span>. Name of the requested access level specified in the OAuth2/OIDC client template: <span style="font-weight: bold;">api</span> or <span style="font-weight: bold;">openid</span>. If several access levels are configured in the template, each of them is specified.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Security_key></span>. Verification security key, which is an arbitrary string value.</li></ul>
|
||||
<p style="text-align: justify; text-indent: -1px; line-height: 1.20; margin: 7px 0 7px 36px;">For the user, the page of authorizing access to an external service to execute requests will be displayed. It displays the requested access levels. The user can grant permission or leave the page.</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">After access is granted, the following steps should be followed: </p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">по пути из значения <span style="font-weight: bold;"><Обратная_ссылка></span> сторонний сервис принимает приходящие данные;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">из поля <span style="font-weight: bold;">code</span>, приходящего в ответе, извлекается код авторизации. С его помощью выполняется получение токена доступа и токена обновления.</li></ul>
|
||||
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">On the path from the <<span style="font-weight: bold;">Backlink</span>> value, the external service accepts incoming data.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">The authorization <span style="font-weight: bold;">code</span> is extracted from the code field received in the response. It is used to obtain an access token and an update token.</li></ul>
|
||||
<ol style="list-style-type:upper-roman" start="3">
|
||||
<li value="3" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Для выполнения этих действий необходимо:</li></ol>
|
||||
<li value="3" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">To perform these actions, it is necessary to:</li></ol>
|
||||
<ol style="list-style-type:lower-latin">
|
||||
<li value="1" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">составить скрипт, который отправляет в ELMA365 запрос POST:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample"><URL-адрес_ELMA365>/api/o/oauth/v2/token</span></p>
|
||||
<li value="1" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Write a script that sends a POST request to BRIX:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample"><URL-address_elma365>/api/o/oauth/v2/token</span></p>
|
||||
<ol style="list-style-type:lower-latin" start="2">
|
||||
<li value="2" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">в заголовок добавить значение:</li></ol>
|
||||
<li value="2" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Add value to the header:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Content-Type:application/x-www-form-urlencoded.</span></p>
|
||||
<ol style="list-style-type:lower-latin" start="3">
|
||||
<li value="3" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">в теле передать:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">grant_type=authorization_code&code=<Код_авторизации>&client_id=<Уникальный_идентификатор_приложения>&client_secret=<Секрет_приложения>&redirect_uri=<Обратная_ссылка></span></p>
|
||||
<p style="margin: 7px 0 7px 36px;">Где:</p>
|
||||
<li value="3" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">In the body, pass:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">grant_type=authorization_code&code=<authorization_code>&client_id=<app_unique_identifier>&client_secret=<app_secret>&redirect_uri=<backlink></span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 36px;">Where:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Код_авторизации></span> — код авторизации, полученный в предыдущем действии;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Уникальный_идентификатор_приложения></span> — значение идентификатора внешнего приложения из ELMA365;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Секрет_приложения></span> — значение секрета внешнего приложения из ELMA365;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Обратная_ссылка></span> — ссылка обратного перехода в сторонний сервис.</li></ul>
|
||||
<li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><<span style="font-weight: bold;">Authorization_code</span>>. The authorization code obtained in the previous activity.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><<span style="font-weight: bold;">App_unique_identifier</span>>. The value of the external app identifier from BRIX.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><<span style="font-weight: bold;">App_secret</span>>. The value of the external app secret from BRIX.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><<span style="font-weight: bold;">Backlink</span>>. Backlink to the external service.</li></ul>
|
||||
<ol style="list-style-type:upper-roman" start="4">
|
||||
<li value="4" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Полученный json-ответ содержит: </li></ol>
|
||||
<li value="4" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Полученный json-ответ содержит: </li></ol>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">в поле <span style="font-weight: bold;">access_token</span> — токен доступа;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">в поле <span style="font-weight: bold;">refresh_token</span> — токен обновления;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">в поле <span style="font-weight: bold;">id_token</span> — данные о пользователе в виде строки <a href="https://jwt.io/introduction" target="_blank" class="weblink">JSON Web Token (JWT)</a>. Возвращается, если указан уровень доступа <span style="font-weight: bold;">openid</span>. </li></ul>
|
||||
<li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">In the <span style="font-weight: bold;">access_token</span> field—access token.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">In the <span style="font-weight: bold;">refresh_token</span> field—refresh token.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">In the id_<span style="font-weight: bold;">token</span> field—data about the user in the form of a <span style="color: #0000ff;"><a href="https://jwt.io/introduction" target="_blank" class="weblink">JSON Web Token (JWT)</a></span> string. It will be returned if <span style="font-weight: bold;">openid</span> access level is specified.</li></ul>
|
||||
<ol style="list-style-type:upper-roman" start="5">
|
||||
<li value="5" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Получив токен доступа, сторонний сервис запрашивает необходимые ресурсы в ELMA365 по реализованному для этого интерфейсу. </li></ol>
|
||||
<p style="margin: 7px 0 7px 0;">По истечении срока действия токена доступа сторонний сервис отправляет запрос, который содержит токен обновления, для получения нового токена доступа.</p>
|
||||
<li value="5" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Having received the access token, the external service requests the necessary resources from BRIX via the interface implemented for this purpose. </li></ol>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">When an access token expires, the external service sends a request, which contains an update token, to obtain a new access token.</p>
|
||||
<ol style="list-style-type:upper-roman" start="6">
|
||||
<li value="6" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Для обновления токенов необходимо:</li></ol>
|
||||
<li value="6" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">To update the tokens, it is necessary to:</li></ol>
|
||||
<ol style="list-style-type:lower-latin">
|
||||
<li value="1" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">реализовать отправку в ELMA365 запроса <code><b>POST</b></code>: </li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample"><URL-адрес_ELMA365>/api/o/oauth/v2/token </span></p>
|
||||
<li value="1" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Implement sending <code><b>POST</b></code> request to BRIX: </li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample"><URL-address_elma365>/api/o/oauth/v2/token </span></p>
|
||||
<ol style="list-style-type:lower-latin">
|
||||
<li value="2" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">в заголовок добавить значение:</li></ol>
|
||||
<li value="2" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Add value to the header:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Content-Type:application/x-www-form-urlencoded </span></p>
|
||||
<ol style="list-style-type:lower-latin">
|
||||
<li value="3" style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;">в теле передать: </li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">grant_type=refresh_token&refresh_token=<Токен_обновления>&client_id=<Уникальный_идентификатор_приложения>&client_secret=<Секрет_приложения></span></p>
|
||||
<p style="margin: 7px 0 7px 36px;">Где:</p>
|
||||
<li value="3" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">In the body, pass: </li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">grant_type=refresh_token&refresh_token=<refresh_token>&client_id=<app_unique_identifier>&client_secret=<app_secret></span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 36px;">Where:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Токен_обновления></span> — токен обновления, полученный вместе с токеном доступа;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Уникальный_идентификатор_приложения></span> — значение идентификатора внешнего приложения из ELMA365, полученный ранее в секретах.</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><Секрет_приложения></span> — значение секрета внешнего приложения из ELMA365.</li></ul>
|
||||
<p style="margin: 7px 0 7px 0;">Полученный json-ответ будет содержать: в поле <span style="font-weight: bold;">access_token</span> новый токен доступа, в поле <span style="font-weight: bold;">refresh_token</span> новый токен обновления.</p>
|
||||
<h2 class="p_Heading2"><a id="data-transfer" class="hmanchor"></a><span class="f_Heading2">Особенности передачи данных</span></h2>
|
||||
<p style="margin: 7px 0 7px 0;">Ознакомьтесь с особенностями передачи данных при различных уровнях доступа стороннего сервиса к ресурсам ELMA365:</p>
|
||||
<li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;"><</span><span style="font-size: 15px;"> </span><span style="font-weight: bold;">Refresh_token></span>. Refresh token received together with the access token.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><<span style="font-weight: bold;">App_unique_identifier</span>>. The value of the external app identifier from BRIX obtained earlier in secrets.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><<span style="font-weight: bold;">App_secret</span>>. The value of the external app secret from BRIX.</li></ul>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;">The received json response will contain a new access token in the <span style="font-weight: bold;">access_toke</span>n field and a new refresh token in the <span style="font-weight: bold;">refresh_token</span> field.</p>
|
||||
<h2 class="p_Heading2"><a id="data-transfer" class="hmanchor"></a><span class="f_Heading2">Features of data transmission</span></h2>
|
||||
<p style="text-align: justify; line-height: 1.20; margin: 7px 0 7px 0;">Familiarize yourself with the features of data transmission at different levels of external service access to BRIX resources:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">доступ к Web API</span> — при выполнении запросов используется токен доступа, полученный для уровня <span style="font-weight: bold;">api</span>. Подробнее о принципе использования токена читайте в <a href="https://api.elma365.com/ru/public-api/guides/WebAPIAuthorization/" target="_blank" class="weblink">справке по публичному API ELMA365</a>;</li><li style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">доступ к данным пользователя</span> — запросы осуществляются по токену доступа уровня <span style="font-weight: bold;">openid</span>. В поле <span style="font-weight: bold;">id_token</span> <span style="background-color: #ffffff;">передаются сериализованные данные по стандарту </span><a href="https://jwt.io/introduction" target="_blank" class="weblink">JSON Web Token (JWT)</a>, содержащие информацию о пользователе: идентификатор, его электронный адрес и название компании. Для декодирования токена можно воспользоваться готовыми решениями для работы с JWT или самостоятельно реализовать алгоритм разбора.</li></ul>
|
||||
<h3 class="p_Heading3"><a id="tokens-due-date" class="hmanchor"></a><span class="f_Heading3">Срок действия токенов подключения</span></h3>
|
||||
<p style="margin: 7px 0 7px 0;">Срок действия кода авторизации и токенов доступа и обновления ограничен:</p>
|
||||
<li style="text-align: justify; line-height: 1.20; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Access to Web API</span>. Access token received for <span style="font-weight: bold;">api</span> level is used when executing requests. For more details on the token usage principle, read <span style="color: #0000ff;"><a href="https://api.brix365.com/en/public-api/guides/WebAPIAuthorization/" target="_blank" class="weblink">BRIX public API</a></span>.</li><li style="text-align: justify; line-height: 1.20; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-weight: bold;">Access to user’s data</span>. Requests are made by <span style="font-weight: bold;">openid</span> level access token. The <span style="font-weight: bold;">id_token</span> field contains serialized data according to the <span style="color: #0000ff;"><a href="https://jwt.io/introduction" target="_blank" class="weblink">JSON Web Token (JWT)</a></span> standard, containing information about the user: identifier, email address, and company name. To decode the token, you can use ready-made solutions for working with JWT or implement your own parsing algorithm.</li></ul>
|
||||
<h3 class="p_Heading3"><a id="tokens-due-date" class="hmanchor"></a><span class="f_Heading3">Validity period of connection tokens</span></h3>
|
||||
<p style="text-align: justify; line-height: 1.20; margin: 7px 0 7px 0;">The authorization code and access and update tokens have a limited validity period:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">код авторизации</span> — срок действия для одного запроса 10 минут. Он используется единожды для получения других токенов. После этого код считается недействительным, дальнейшие запросы с его использованием отклоняются;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">токен доступа</span> — срок действия 10 минут. Токен позволяет выполнять несколько запросов в течение этого времени. По истечении срока действия он будет недоступен. Новый токен доступа запрашивается с помощью токена обновления;</li><li style="margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">токен обновления</span> — срок действия 14 дней. По истечении этого времени необходимо получить новые токены доступа и обновления. Для этого пользователь должен запустить процесс авторизации повторно и разрешить доступ стороннему сервису к ELMA365.</li></ul>
|
||||
<h2 class="p_Heading2"><a id="check-connections" class="hmanchor"></a><span class="f_Heading2">Посмотреть список выданных разрешений</span></h2>
|
||||
<p style="margin: 7px 0 7px 0;">Если в стороннем сервисе реализовано соединение с ELMA365, пользователь может запустить передачу данных. После этого он перенаправляется на страницу разрешения доступа сервису к ресурсам ELMA365. </p>
|
||||
<p style="margin: 7px 0 7px 0;">Все выданные разрешения и установленные соединения фиксируются в ELMA365. Пользователь может просмотреть список предоставленных доступов и отозвать их в настройках своего профиля, на вкладке <span style="font-weight: bold;">Внешние приложения</span>. </p>
|
||||
<p style="text-align: justify; margin: 7px 0 7px 0;">Подробнее об этом читайте в статье <a href="360016398552.html#external-apps" class="topiclink">«Настройки профиля пользователя»</a>.</p>
|
||||
<li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Authorization code</span>. The validity period for one request is 10 minutes. It is used once to obtain other tokens. After that the code is considered invalid, and further requests using it are rejected.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Access token</span>. The validity period is 10 minutes. The token allows multiple requests during this time. After the expiration date, it will be unavailable. A new access token is requested using an update token.</li><li style="text-align: justify; line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Refresh token</span>. The validity period is 14 days. After this time has expired, new access and update tokens must be obtained. To do this, the user must run the authorization process again and allow an external service to access BRIX.</li></ul>
|
||||
<h2 class="p_Heading2"><a id="check-connections" class="hmanchor"></a><span class="f_Heading2">View a list of granted accesses</span></h2>
|
||||
<p style="text-align: justify; line-height: 1.20; margin: 7px 0 7px 0;">If a connection to BRIX is implemented in an external service, the user can run data transmission. After that, the user is redirected to the page allowing the service to access BRIX resources.</p>
|
||||
<p style="text-align: justify; line-height: 1.20; margin: 7px 0 7px 0;">All granted permissions and established connections are recorded in BRIX. The user can view the list of granted accesses and revoke them in the profile settings, on the <span style="font-weight: bold;">External Apps</span> tab.</p>
|
||||
<p style="text-align: justify; line-height: 1.20; margin: 7px 0 7px 0;">Read more about it in the <span style="color: #0000ff;"><a href="360016398552.html#user-profile-tab" class="topiclink">User profile settings</a></span> article.</p>
|
||||
|
||||
<div class="bottom-nav">
|
||||
|
||||
@ -235,7 +233,7 @@
|
||||
|
||||
</div>
|
||||
<!-- добавляет на страницу строку блок Была ли статья полезной? -->
|
||||
<div class="feedback-wrap"><div class="feedback" id="feedback"><span><b>Была ли статья полезной?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx">Спасибо за ваш отзыв!</div><div id="feedback-success-popup"><div class="wrap"><button type="button" class="feedback-popup-close">×</button><svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_212_2187)"><path d="M22 0.6875C10.2294 0.6875 0.6875 10.2294 0.6875 22C0.6875 33.7706 10.2294 43.3125 22 43.3125C33.7706 43.3125 43.3125 33.7706 43.3125 22C43.3125 10.2294 33.7706 0.6875 22 0.6875ZM22 40.5625C11.8023 40.5625 3.4375 32.3078 3.4375 22C3.4375 11.8024 11.6922 3.4375 22 3.4375C32.1977 3.4375 40.5625 11.6922 40.5625 22C40.5625 32.1976 32.3078 40.5625 22 40.5625ZM34.1713 16.933L18.6613 32.3186C18.257 32.7197 17.604 32.7171 17.203 32.3128L9.82283 24.873C9.42176 24.4686 9.42434 23.8157 9.82867 23.4146L10.5609 22.6884C10.9652 22.2873 11.6181 22.2899 12.0192 22.6942L17.9468 28.6697L31.9926 14.7366C32.3969 14.3356 33.0498 14.3382 33.4509 14.7425L34.1772 15.4747C34.5783 15.879 34.5757 16.532 34.1713 16.933Z" fill="#27AE60"></path></g><defs><clipPath id="clip0_212_2187"><rect width="44" height="44" fill="white"></rect></clipPath></defs></svg><p>Ваш отзыв успешно отправлен!</p><span>Спасибо за обратную связь.</span></div></div><div class="feedback__popup" id="feedback__popup_why"><button type="button" class="feedback-popup-close">×</button><div class="feedback__popup-header">Уточните, почему:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Рекомендации не помогли</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Текст трудно понять</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Нет ответа на мой вопрос</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Содержание статьи не соответствует заголовку</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Другая причина</label></div><div class="feedback__popup" id="feedback__popup-other"><button type="button" class="feedback-popup-close">×</button> <div class="feedback__popup-header">Расскажите, что вам не понравилось в статье:</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Отправить"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg"/><span class="feedback-form__btn-group_yes-btn">Да</span></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg"/><span class="feedback-form__btn-group_no-btn">Нет</span></label></div><select name="category"><option disabled>Выберите вариант</option><option value="bad_recommendation" selected>Рекомендации не помогли</option><option value="difficult_text">Текст трудно понять</option><option value="no_answer">Нет ответа на мой вопрос</option><option value="bad_header">Содержание статьи не соответствует заголовку</option><option value="other_reason">Другая причина</option></select><input type="submit"></form></div></div>
|
||||
<div class="feedback" id="feedback"><div class="feedback-help"><span><b>Was this helpful?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx" style="display: none;">Thanks for your feedback!</div><div class="feedback__popup" id="feedback__popup_why" style="display: none;"><div class="feedback__popup-header">Please specify why:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Recommendations did not help me</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Article is hard to understand</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Didn`t answer my question</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Content does not match the topic</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Other</label></div><div class="feedback__popup" id="feedback__popup-other" style="display: none;"><div class="feedback__popup-header">How we can improve it?</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Submit"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg" class="small-img" alt="like"><spanclass="feedback-form__btn-group_yes-btn">Yes</spanclass="feedback-form__btn-group_yes-btn"></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg" class="small-img" alt="dislike"><spanclass="feedback-form__btn-group_no-btn">No</spanclass="feedback-form__btn-group_no-btn"></label></div><select name="category"><option disabled="">Please specify why</option><option value="bad_recommendation" selected="">Recommendations did not help me</option><option value="difficult_text">Article is hard to understand</option><option value="no_answer">Didn`t answer my question</option><option value="bad_header">Content does not match the topic</option><option value="other_reason">Other</option></select><input type="submit"></form></div><div class="found_typo"><p style="margin: 0px; margin-top: 16px !important;"><span><b>Found a typo?</b></span> Select it and press <i>Ctrl+Enter</i> to send us feedback</p></div></div>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
@ -243,7 +241,7 @@
|
||||
<input type="checkbox" />
|
||||
<div class="article__arrow"></div>
|
||||
<div class="table-of-contents elma365-right" id="toc2Content">
|
||||
<h3 class="h3-toc">В этой статье</h3>
|
||||
<h3 class="h3-toc">In this topic</h3>
|
||||
<nav id="toc2"></nav>
|
||||
</div>
|
||||
</aside>
|
||||
@ -254,63 +252,30 @@
|
||||
<div class="footer-container">
|
||||
<div class="footer-mobile">
|
||||
|
||||
<ul class="footer-mobile__list"><li><a href="https://api.elma365.com/ru/" target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/" target="_blank">TS SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/elma365" target="_blank">Академия</a></li></ul><ul class="footer-mobile__list"><li><a href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li></ul>
|
||||
<ul class="footer-mobile__list"><li><a href="https://brix365.com/en/" target="_blank">BRIX</a></li><li><a href="https://tssdk.brix365.com/en/latest/" target="_blank">SDK</a></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li></ul><ul class="footer-mobile__list"><li><a href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li></ul>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="footer-wrap">
|
||||
|
||||
<div><span class="mobile-question-popup">Отправить фидбэк</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Задать вопрос</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Отправить"></div></form><div class="hidden fade-in question-success-xs">Ваш фидбэк отправлен.</div></div>
|
||||
|
||||
<div class="footer-flex-b">
|
||||
<div class="footer-top">
|
||||
<span class="footer-copy">© 2025
|
||||
ELMA365
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
|
||||
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="footer-line">
|
||||
|
||||
<div class="footer-line-copy">
|
||||
<span class="footer-copy">© 2025
|
||||
ELMA365
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<ul class="footer-list">
|
||||
|
||||
<li class="footer-item"><a href="https://elma365.com/ru/" target="_blank" class="footer-link" style="color: #0D4A75;"><img src="browse.svg" alt="browse icon" class="footer-img">elma365.com</a></li><li class="footer-item"><a href="https://www.youtube.com/user/ELMABPM" target="_blank" class="footer-link"><img src="yt.svg" alt="youtube icon" class="footer-img"></a></li><li class="footer-item"><a href="https://vk.com/elma_bpm" target="_blank" class="footer-link"><img src="vk.svg" alt="vk icon" class="footer-img"></a></li><li class="footer-item"><a href="https://t.me/elmaday" target="_blank" class="footer-link"><img src="tg.svg" alt="telegram icon" class="footer-img"></a></li><li class="footer-item"><a href="https://dzen.ru/elma" target="_blank" class="footer-link"><img src="dzen.svg" alt="dzen icon" class="footer-img"></a></li>
|
||||
|
||||
|
||||
<li class="footer-item">
|
||||
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
|
||||
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-wrap">
|
||||
|
||||
<div><span class="mobile-question-popup">Send feedback</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Ask a question</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Send"></div></form><div class="hidden fade-in question-success-xs">Sent</div></div>
|
||||
|
||||
<div class="footer-flex-b">
|
||||
<span class="footer-copy">© 2025 BRIX</span>
|
||||
<ul class="footer-list">
|
||||
|
||||
<li class="footer-item">
|
||||
<a href="#" class="arrow-top" style="display: block;"></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<a href="#" class="arrow-top"></a>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
<!-- <script type="text/javascript" src="jquery1.min.js"></script>-->
|
||||
<iframe name="hmnavigation" style="display:none!important"></iframe>
|
||||
<!--<script src="./jquery-ui.js"></script> -->
|
||||
<script src="./jquery-ui.min.js"></script>
|
||||
<script src="./jquery-ui.js"></script>
|
||||
<!--script src="//cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js" type="text/javascript" charset="utf-8"></script-->
|
||||
<script src="./jquery.tocify.min.js"></script>
|
||||
<script src="./TypoReporter.min.js"></script>
|
||||
|
Reference in New Issue
Block a user