Справочный материал

Элемент <openid>

Описаны элементы &lt;openid&gt; и &lt;openidconnect&gt; в файле default.vrd: настройка OpenID-провайдеров, параметры их конфигурации и сценарий аутентификации в клиентских приложениях BAS.. Описание элемента. Элемент <rely>. Элемент <provider>. Элемент <openidconnect>

Светящийся защищённый токен проходит от клиентского устройства через синий шлюз к серверному хранилищу данных.

Описание элемента

Элемент <rely>

Элемент <provider>

Элемент <openidconnect>

 

Описание элемента

Этот элемент описывает настройки, связанные с OpenID-аутентификацией. Элемент <openid> подчинен элементу <point> и может быть один или отсутствовать. Элементу <openid> подчинены элементы <rely> и <provider>. Каждый из подчиненных элементов может быть один или отсутствовать.

Этот элемент не имеет атрибутов.

Элемент <rely>

Элемент содержит адрес информационной базы, являющейся OpenID-провайдером.

Атрибут url

Определяет URL информационной базы BAS, являющейся OpenID-провайдером. Информационную базу необходимо опубликовать особым образом.

Внимание!

Взаимодействие с OpenID-провайдером осуществляется только через HTTPS-соединение.

Примечание

URL OpenID-провайдера не должен заканчиваться символом «/». Правильно: https://myserver.org/users-ib/ebasib/oid2op, неправильно: https://myserver.org/users-ib/ebasib/oid2op/.

Пример:

<rely url="https://myserver.org/users-ib/ebasib/oid2op"/>

Элемент <provider>

Описание элемента

Элемент указывает, что эта информационная база является OpenID-провайдером. Этому элементу подчинен элемент <lifetime>, который может быть один или отсутствовать.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns=http://bas-soft.eu/8.2/virtual-resource-system xmlns:xs=http://www.w3.org/2001/XMLSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        base="/demo"
        ib="Srvr=&quot;tcp://Server&quot;;Ref=&quot;demo&quot;;"
        enable="false">
    <openid>
        <provider/>
    </openid>
</point>

Элемент <lifetime>

Элемент определяет время жизни признака аутентифицированности идентификатора в секундах. Если он не указан, значением по умолчанию является 86 400 секунд (24 часа). Максимальное время жизни аутентификационных данных составляет 604 800 секунд (7 суток). Если в элементе lifetime указано число, большее максимального значения, будет использовано максимальное значение.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns=http://bas-soft.eu/8.2/virtual-resource-system xmlns:xs=http://www.w3.org/2001/XMLSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        base="/demo"
        ib="Srvr=&quot;tcp://Server&quot;;Ref=&quot;demo&quot;;"
        enable="false">
    <openid>
        <provider>
            <lifetime>432000</lifetime>
        </provider>
    </openid>
</point>

Элемент <returnto>

Элемент <returnto> подчинен элементу <provider>, его наличие необязательно, а количество таких элементов не ограничено.

<returnto>mysite\.org</returnto>
<returnto>.*\.bas-soft\.eu</returnto>

Содержимое элемента является регулярным выражением, определяющим маску разрешенных имен сайтов, на которые может быть перенаправлен веб-браузер пользователя (параметр запроса openid.return_to) после выполнения команды OpenID-провайдера.

Если при публикации OpenID-провайдера не указан ни один элемент <returnto>, любой запрос к OpenID-провайдеру, содержащий параметр openid.return_to, будет завершаться ошибкой HTTP 400.

Элемент <openidconnect>

Описание элемента

Этот элемент описывает параметры, связанные с аутентификацией по протоколу OpenID Connect. Применяется при использовании тонкого клиента и веб-клиента. Элемент <openidconnect> подчинен элементу <point> и может быть один или отсутствовать. Элементу <openidconnect> подчинены элементы <providers> и <allowStandardAuthentication>. Каждый из подчиненных элементов может быть один или отсутствовать.

Этот элемент не имеет атрибутов.

<openidconnect>
    <providers><![CDATA[[
        <json-data>
        ]]]>
    </providers>
    <allowStandardAuthentication>true</allowStandardAuthentication>
<openidconnect>

Элемент <providers>

Этот элемент содержит описание внешних OpenID-провайдеров, поддерживающих протокол авторизации OpenID Connect v1.0 (https://openid.net/connect/). Описание представляет собой массив объектов, каждый из которых описывает одного OpenID-провайдера. Массив представлен в виде JSON-сериализации.

Каждый провайдер описывается объектом со следующими свойствами:

  • name – идентификатор провайдера. Должен быть уникальным в пределах массива. Если массив содержит несколько провайдеров с одинаковым идентификатором, будет использован последний в массиве.
  • title – текстовое представление провайдера. Будет отображаться на кнопке провайдера на странице аутентификации при отсутствии изображения (image).
  • image – графическое представление провайдера. Будет отображаться на кнопке провайдера на странице аутентификации. Изображение указывается как data:image в формате base64.
  • discovery – определяет URL провайдера, обращение по которому позволяет получить все его настройки (discovery endpoint URL). Рекомендуется использовать провайдеров, поддерживающих запись discovery endpoint.
  • authenticationClaimName – определяет, какое поле JSON-файла (JSON Web Token, JWT) с результатами аутентификации следует использовать как идентификатор для сопоставления пользователя информационной базы с пользователем провайдера OpenID Connect. Если не указано, используется поле с электронной почтой.
  • authenticationUserPropertyName – определяет, какое поле в настройках пользователя информационной базы используется для сравнения с идентификатором пользователя, переданным провайдером OpenID Connect. Допускается указание следующих значений:

    • name – имя пользователя (свойство Name/Имя объекта InfoBaseUser/ПользовательИнформационнойБазы).
    • OSUser – имя пользователя операционной системы (свойство OSUser/ПользовательОС объекта InfoBaseUser/ПользовательИнформационнойБазы).
  • endSessionEndpoint – определяет URL, на который будет выполнен переход после выполнения команды завершения сеанса аутентификации. К URL автоматически будет добавлен параметр id_token_hint, в который будет помещен токен, полученный при аутентификации пользователя. Закрытие вкладки веб-браузера с запущенным приложением веб-клиента, как и завершение работы клиентского приложения, не приводит к завершению сеанса аутентификации. При работе в веб-клиенте после завершения сеанса аутентификации будет выполнен переход на стандартную страницу завершения сеанса.
  • Provideconfig – описание настроек провайдера в виде JSON-файла, если провайдер не поддерживает запрос на получение настроек. Данные должны быть представлены в формате OpenID Provider Metadata (https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
  • clientconfig – клиентская конфигурация в виде JSON-файла. Формат этой информации соответствует формату OAuth 2.0 Authorization Request (https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest), к которому добавляется свойство authority, содержащее URL провайдера аутентификации. Содержимое этого свойства зависит от используемого провайдера.
  • Свойство redirect_uri структуры clientconfig содержит URL перехода к обработчику аутентификации приложения, которое отправило запрос на эту аутентификацию. Обычно URL имеет следующий вид: https://IBhost/IBname/authform.html, где:

    • IBhost – имя хоста, на котором опубликована информационная база;
    • IBname – имя опубликованной информационной базы, то есть содержимое поля Name/Имя диалога публикации информационной базы или аналогичное значение при другом способе публикации.
  • dialect – определяет протокол, который будет использоваться для взаимодействия с провайдером. Это необязательный атрибут: при его отсутствии для взаимодействия с провайдером будет использоваться протокол OpenID Connect v1.0.
  • crypto – содержит структуру, описывающую модуль криптографии, используемый для подписания запросов. Подписывать отправляемые запросы необходимо при использовании для взаимодействия с провайдером протокола ЕСИА. Структура содержит следующие свойства:

    • module_name – имя модуля криптографии;
    • module_path – путь к модулю криптографии;
    • module_type – тип модуля криптографии;
    • cert_thumbprint – отпечаток сертификата, который будет использоваться для подписания запросов. По отпечатку будет выполнен поиск сертификата. Сертификат должен быть предварительно размещен в хранилище личных сертификатов.
  • Поля структуры, размещенной в свойстве crypto, аналогичны параметрам конструктора объекта CryptoManager/МенеджерКриптографии.

Пример указания провайдеров:

<openidconnect>
    <providers><![CDATA[[
        {
            "name": "google",
            "title": "Google",
            "discovery": "https://accounts.google.com/.well-known/openid-configuration",
            "authenticationClaimName": "email",
            "clientconfig": {
                "authority": "https://accounts.google.com/",
                "client_id": "<идентификатор клиента>",
                "redirect_uri": "https://localhost/openidc/authform.html",
                "response_type": "id_token token",
                "scope": "openid email",
                "filterProtocolClaims": true,
                "loadUserInfo": false
            }
        },
        {
            "name": "microsoft",
            "title": "Microsoft",
            "authenticationUserPropertyName" : "OSUser",
            "image": "data:image/png;base64,………",
            "discovery": "https://login.microsoftonline.com/<ідентифікатор клиента>/.well-known/openid-configuration",
            "clientconfig": {
                "authority": "https://login.microsoftonline.com/<ідентифікатор клиента>/",
                "client_id": "<идентификатор клиента>",
                "redirect_uri": "https://localhost/openidc/authform.html",
                "response_type": "id_token token",
                "scope": "openid email"
            }
        },
        {
            "name": "googleII",
            "title": "Another Google",
            "providerconfig": {
                    "issuer": "https://accounts.google.com",
                    "authorization_endpoint": "https://accounts.google.com/o/oauth2/v2/auth",
                    "token_endpoint": "https://www.googleapis.com/oauth2/v4/token",
                    "response_types_supported": ["code","token"],
                    "scopes_supported": ["openid","email","profile"]
            },
            "clientconfig": {
                    "authority": "https://accounts.google.com/",
                    "client_id": "<идентификатор клиента>",
                    "redirect_uri": «https://localhost/openidc/authform.html",
                    "response_type": "id_token token",
                    "scope": "openid email"
            }
        }
        ]]]>
    </providers>
    <allowStandardAuthentication>true</allowStandardAuthentication>
</openidconnect>

Элемент <allowStandardAuthentication>

Элемент определяет возможность применения аутентификации системы BAS. Если для этого элемента установлено false, на форме аутентификации при попытке входа в веб-клиент будет доступна аутентификация только с помощью провайдеров, описанных в файле default.vrd.

Элемент может иметь следующие значения:

  • true – аутентификация системы BAS разрешена. Значение по умолчанию.
  • false – аутентификация системы BAS запрещена.

Сценарий работы

Аутентификация с помощью провайдера OpenID Connect доступна только при указании параметров одного или нескольких провайдеров в файле default.vrd. При попытке использовать клиентское приложение (тонкий клиент или веб-клиент) для доступа к информационной базе выполняются следующие действия:

  • Если в командной строке клиентского приложения явно указан провайдер, выполняется переход в соответствии с параметрами, указанными в файле default.vrd для этого провайдера.
  • Иначе формируется форма запуска, в зависимости от клиентского приложения, на которой размещены все настроенные в файле default.vrd провайдеры OpenID Connect. В зависимости от настроек на этой странице может быть кнопка доступа с помощью стандартной аутентификации BAS.
  • После выбора провайдера пользователь перенаправляется на страницу аутентификации выбранного провайдера. На этой странице пользователь аутентифицируется у выбранного провайдера любым доступным для этого провайдера способом.
  • Затем провайдер перенаправляет пользователя на специальную страницу системы, передавая в качестве «параметра» JSON-файл (JSON Web Token, JWT) с результатами аутентификации. Адрес этой страницы указан в свойстве redirect_uri структуры clientconfig элемента provider.
  • С помощью результатов аутентификации, переданных провайдером, система получает от провайдера ключевой параметр для идентификации пользователя. По умолчанию этим параметром является адрес электронной почты пользователя, но с помощью файла default.vrd его можно переопределить.
  • Полученный адрес электронной почты используется для поиска пользователя в информационной базе системы. Поиск выполняется по свойству пользователя Name/Имя или OSUser/ПользовательОС. Необходимость использования для поиска свойства OSUser/ПользовательОС должна быть явно указана с помощью файла default.vrd.
  • После этого аутентификация считается успешно завершенной, а приложение продолжает запускаться.
  • В случае неуспешной аутентификации у провайдера дальнейшие действия провайдера не определены.
Записаться по телефону