Довідковий матеріал

Елемент <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.
  • Після цього аутентифікація вважається успішно завершеною, а програма продовжує запускатися.
  • У разі неуспішної аутентифікації на провайдері подальші дії провайдера не визначено.
Записатися телефоном