Автоматическая идентификация пользователя по свойствам сессии#

Blitz Identity Provider может выполнять автоматическую идентификацию пользователя и предоставление доступа по предварительно вычисленным свойствам сессии. Поддерживаются любые свойства сессии, которые могут быть определены средствами Заказчика и предоставлены в Blitz Identity Provider.

Совет

Частным случаем использования метода является вход пользователя по номеру мобильного телефона, автоматически определенного по его IP-адресу Заказчиком-оператором сотовой связи.

Внимание

Автоматическая идентификация возможна только для первого фактора.

Для использования данного метода аутентификации выполните описанную ниже последовательность действий.

Шаг 1. Создание процедуры входа#

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

  1. Определение IP-адреса пользователя. В случае если IP-адрес лежит в установленном диапазоне, производится вызов сервиса Заказчика-оператора сотовой связи для определения номера мобильного телефона.

  2. После получения номера телефона процедура запрашивает у Blitz Identity Provider вход методом автоматической идентификации.

Шаг2. Добавление метода в blitz.conf#

Для того чтобы метод автоматической идентификации отображался на вкладке Аутентификация -> Первый фактор, выполните следующие действия:

  1. Откройте файл конфигурации /usr/share/identityblitz/blitz-config/blitz.conf.

    sudo vim /usr/share/identityblitz/blitz-config/blitz.conf
    
  2. Добавьте метод в список доступных методов первого фактора блока blitz.prod.local.idp.login.factors по аналогии с примером ниже. Методы первого фактора задаются в первой секции блока. Название метода должно состоять из префикса sprop_ и идентификатора: например, у метода sprop_msisdn из примера идентификатор msisdn.

    Примечание

    Можно добавить несколько методов.

    "login" : {
        "factors" : [
            [
                {
                    "enabled" : false,
                    "method" : "sprop_msisdn"
                },
                …
            ],
            [
                …
            ]
        ],
        …
    }
    
  3. Перезагрузите сервисы.

    sudo systemctl restart blitz-idp blitz-console
    

Шаг 3. Настройка метода в консоли#

Конфигурация метода в консоли управления выполняется следующим образом:

  1. В консоли управления перейдите Аутентификация -> Первый фактор -> настройки метода Автоматическая идентификация.

  2. Выполните маппинг атрибута, хранящегося в источнике данных Blitz Identity Provider, на свойство сессии, получаемое от сервиса Заказчика при выполнении процедуры входа. После получения свойства сессии Blitz Identity Provider выполнит поиск его значения среди значений указанного атрибута и в случае успеха разрешит вход по соответствующей учетной записи. Например, маппинг phone_number=${p_msisdn} означает, что свойство сессии p_msisdn будет сравниваться с атрибутом phone_number в хранилище данных.

    Совет

    Вы можете добавить несколько условий для поиска среди атрибутов, которые должны выполниться одновременно, чтобы пользователь был идентифицирован, а также ввести альтернативное правило.

    session_property_console

  3. По умолчанию после автоматической идентификации пользователя на его экране отображается его идентификатор и запрос на подтверждение входа. Задайте правило для формирования идентификатора пользователя из его атрибутов в виде строки подстановки. Это может быть замаскированный номер телефона, имя пользователя и др.

    Для того чтобы деактивировать подтверждение входа, поставьте флажок Не показывать пользователю экран с подтверждением входа.

  4. Нажмите Сохранить.

  5. По умолчанию поиск пользователей для аутентификации происходит во всех активных хранилищах. В блоке Правила выбора хранилища атрибутов можно настроить правила, при выполнении которых поиск пользователя будет осуществляться в определенном хранилище. Можно задать несколько альтернативных правил выбора хранилища. Это позволит аутентифицировать одних пользователей по одному хранилищу, других – по другому.

    Для создания правила используйте следующие компоненты:

    • флажок not: признак инвертирования условия;

    • первый столбец: проверяемое выражение, например, атрибут учетной записи, идентификатора приложения и пр.;

    • второй столбец: условие выбора в виде регулярного выражения, например, значение атрибута пользователя, значение идентификатора приложения и пр.

    Например, для того чтобы аутентифицировать всех пользователей, номер телефона которых содержит код 980, в указанном хранилище, создайте правило, как показано на рисунке ниже.

    session_property_storage

  6. Нажмите Сохранить.

Шаг 4. Кастомизация текстов#

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

В идентификатор текстовой строки понадобится включить имя метода или идентификатор метода. Имя метода определено в файле конфигурации /usr/share/identityblitz/blitz-config/blitz.conf и состоит из префикса sprop_ и идентификатора метода: например, у метода sprop_msisdn идентификатор msisdn.

Для кастомизации используются следующие способы и строки:

Форма входа

Кастомизация с помощью имени метода <sprop_id>:

login.methods.sprop.head.title.<sprop_id>=Подтверждение входа по номеру телефона
login.methods.sprop.info.<sprop_id>=Ваш номер<br><strong>{0}</strong>.
login.methods.sprop.btn.consent.<sprop_id>=Войти
login.methods.sprop.btn.refuse.<sprop_id>=Войти под другим номером
Отображение метода в списке доступных методов при аутентификации

Кастомизация с помощью идентификатора метода <id>:

login.methods.switcher.title.sprop.<id>=Автовход по номеру телефона
login.methods.switcher.label.sprop.<id>=Автовход по номеру телефона
Отображение метода в списке методов в консоли управления

Кастомизация с помощью имени метода <sprop_id>:

page.authn.<sprop_id>.title=Автовход по номеру телефона
page.authn.<sprop_id>.info=Для идентификации пользователя используется свойство сессии p_msisdn, которое вычисляется и сохраняется при старте процедуры входа.
Форма настройки метода в консоли

Кастомизация с помощью имени метода <sprop_id>:

page.method.sprop.title.<sprop_id>=Автовход по номеру телефона
page.method.sprop.info.<sprop_id>=<p>Для корректной работы автовхода укажите, какие свойствам текущей сессии соответствуют каким атрибутам в источнике данных. Вы можете создать несколько альтернативных правил. </p>Например, правило <code>phone_number=$'{p_msisdn}'</code> означает, что свойство сессии <code>p_msisdn</code>, будет сравниваться с атрибутом <code>phone_number</code> в хранилище данных.</p>
Результат выполнения метода на вкладке События консоли управления
  • Успешный вход: добавьте строку audit.method.<sprop_id>.

  • Вход не выполнен: добавьте строку console.audit.type.auth_failed.<sprop_id>.

audit.method.<sprop_id>=Автовход по номеру телефона
console.audit.type.auth_failed.sprop_msisdn=Ошибка автовхода по номеру телефона
Отображение события неуспешного входа в Личном кабинете

Для отображения неуспешного входа в Личном кабинете пользователя добавьте строку profile.audit.type.auth_failed.<sprop_id>.

profile.audit.type.auth_failed.<sprop_id>=Ошибка автовхода по номеру телефона