Вызов стороннего приложения регистрации пользователей#

В Blitz Identity Provider можно настроить использование стороннего приложения регистрации пользователей. В этом случае Blitz Identity Provider сможет вызвать приложение регистрации пользователей со страницы входа (при переходе по ссылке Зарегистрироваться) или в результате первого входа пользователя через внешний поставщик идентификации. При этом доступны следующие возможности:

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

  • Если пользователь успешно пройдет регистрацию, то он сможет продолжить процесс входа. Например, можно обеспечить автоматический вход зарегистрированного пользователя в приложение аналогично тому, как это происходит при использовании встроенного в Blitz Identity Provider приложения регистрации.

Для подключения к Blitz Identity Provider стороннего приложения регистрации необходимо на стороне веб-приложения регистрации поддержать сервисы в соответствии с описанными в последующих разделах требованиями.

Сервис инициирования регистрации#

Стороннее приложение регистрации должно предоставить HTTP POST сервис инициирования регистрации.

Примечание

Адрес сервиса задается в настройках Blitz Identity Provider (см. Администрирование).

Сервис должен принимать следующие параметры (в виде JSON):

  • id – идентификатор заявки на регистрацию;

  • entryPoint – сведения о точке входа. Возможны следующие значения:

    • SOCIAL – регистрация вызвана вследствие входа нового пользователя через внешний поставщик идентификации;

    • WEB – пользователь самостоятельно инициировал регистрацию (выбрал «Зарегистрироваться» на странице входа).

  • appId – идентификатор приложения, в которое изначально хотел войти пользователь, в результате чего запустился процесс регистрации;

  • expires – время окончания действия заявки на регистрацию. Указывается в Unix time, в секундах;

  • source – источник сведений о пользователе (в случае получения сведений из внешнего поставщика входа). Содержит идентификатор внешнего поставщика входа;

  • перечень атрибутов, полученных из внешнего поставщика идентификации. Передаются атрибуты из настроек связывания учетных записей соответствующего внешнего поставщика идентификации.

  • hints – подсказки, переданные в вызов формы входа. Например, тут может быть передан логин пользователя, в случае если пользователь инициировал самостоятельную регистрацию с формы входа, которая в свою очередь была открыта с параметром login_hint;

  • lang – текущий язык интерфейса пользователя на странице входа.

Пример запроса (при вызове в режиме входа через ЕСИА):

POST /reg/url HTTP/1.1
Content-Type: application/json

{
   "id":"6DXDHyyiZ2hByUN-sCRUEdvAoQun7WwQ",
   "entryPoint":"SOCIAL",
   "appId":"portal",
   "expires":1608129702,
   "source":"esia:esia_1",
   "hints": {},
   "attrs":[
      {
         "esia_family_name":"Петров",
         "esia_given_name":"Иван",
         "esia_middle_name":"Сергеевич",
         "esia_passport": "{\"issueDate\":\"01.01.2016\",\"stateFacts\":[\"EntityRoot\"],\"eTag\":\"452E4EEA3A9FBCD244766D6549B8E7E616478BD2\",\"vrfStu\":\"VERIFIED\",\"type\":\"RF_PASSPORT\",\"issueId\":\"111001\",\"number\":\"123456\",\"series\":\"4567\",\"issuedBy\":\"РУВД г.Москвы\",\"id\":38226}",
         "esia_trusted":true,
         "esia_id":"1000334562",
         "esia_gender": "M",
         "esia_birthdate": "01.01.1999",
         "esia_birthplace": "Москва",
         "esia_email": "johndoe@company.ru",
         "esia_snils": "123-456-789 12",
         "esia_inn": "123456789012",
         "esia_phone_number": "+7(999)1234567",
         "esia_liv_address": {\"stateFacts\":[\"Identifiable\"],\"id\":24243131,\"type\":\"PRG\",\"addressStr\":\"г Москва, ул Онежская\",\"fiasCode\":\"06690b31-d4ae-463d-ad12-cf3963e0d7ed\",\"flat\":\"56\",\"countryId\":\"RUS\",\"house\":\"16\",\"zipCode\":\"125414\",\"street\":\"Онежская\",\"region\":\"Москва\",\"vrfDdt\":\"0,10,0\",\"eTag\":\"0C7C02CA3BC3623B2628A7603DA342792D5CE491\"}",
         "esia_reg_address": {\"stateFacts\":[\"Identifiable\"],\"id\":24343142,\"type\":\"PRG\",\"addressStr\":\"г Москва, ул Онежская\",\"fiasCode\":\"06690b31-d4ae-463d-ad12-cf3963e0d7ed\",\"flat\":\"56\",\"countryId\":\"RUS\",\"house\":\"16\",\"zipCode\":\"125414\",\"street\":\"Онежская\",\"region\":\"Москва\",\"vrfDdt\":\"0,10,0\",\"eTag\":\"0C7C02CA3BC3623B2628A7603DA342792D5CE591\"}"
      }
   ],
   "lang": "ru"
}

Пример запроса (при нажатии пользователем «Зарегистрироваться» на странице входа):

POST /reg/url HTTP/1.1
Content-Type: application/json

{
   "id":"6DXDHyyiZ2hByUN-sCRUEdvAoQun7WwQ",
   "entryPoint":"WEB",
   "appId":"portal",
   "expires":1608129702,
   "hints": {},
   "attrs": {},
   "lang": "ru"
}

В ответ сервис инициирования регистрации должен вернуть либо HTTP-ответ для выполнения в браузере пользователя (например, код HTML-страницы или инициировать перенаправление пользователя в браузере на страницу регистрации), либо сообщение об ошибке.

Пример ответа:

HTTP/1.1 302 Found
Location: https://www.company.ru/register/

В результате пользователь будет перенаправлен из Blitz Identity Provider в стороннее приложение регистрации.

Сервис завершения регистрации#

Когда пользователь в стороннем приложении регистрации ввел все данные, необходимые для регистрации учетной записи, стороннее приложение регистрации должно вызвать в Blitz Identity Provider сервис завершения регистрации учетной записи пользователя. Сервис вызывается методом POST по адресу https://login.company.com/blitz/reg/api/v1/users/{id}, где в качестве id в URL сервиса передается идентификатор заявки на регистрацию, ранее полученный от Blitz Identity Provider.

В запрос должен быть добавлен следующий заголовок, где secret – это присвоенные приложению при регистрации в Blitz Identity Provider client_id:rest_secret в формате Base64:

Authorization: Basic <secret>

Внимание

Список атрибутов приведен в качестве образца. Содержание списка необходимо скорректировать в зависимости от конкретных настроек, сделанных при внедрении Blitz Identity Provider. См. Администрирование.

Тело запроса должно содержать атрибуты регистрируемой учетной записи:

  • first_name – фамилия;

  • name – имя;

  • middle_name – отчество;

  • phone_number – номер мобильного телефона в виде составного объекта с атрибутами:

    • value – номер телефона в формате 7XXXXXXXXXX;

    • verified – признак, что телефон подтвержден – true или false;

  • email – адрес электронной почты в виде составного объекта с атрибутами:

    • value – адрес электронной почты;

    • verified – признак, что адрес подтвержден – true или false;

  • password – пароль для создаваемой учетной записи пользователя (должен соответствовать настроенной парольной политике).

Пример запроса (регистрация с подтвержденными email и телефоном):

POST /blitz/reg/api/v1/users/6DXDHyyiZ2hByUN-sCRUEdvAoQun7WwQ HTTP/1.1
Authorization: Basic YXBwX2lkOmFwcF9zZWNyZXQ=
Content-Type: application/json

{
    "first_name":"Иванов",
    "name":"Иван",
    "middle_name":"Иванович",
    "phone_number": {
        "value": "79991234567",
        "verified": true
    },
    "email": {
        "value":"mail@example.com",
        "verified": true
    },
    "password":"QWErty$123"
}

В ответ Blitz Identity Provider в случае успешного завершения регистрации вернет JSON со следующими данными:

  • subject – идентификатор зарегистрированного пользователя;

  • origin – ссылку, на которую необходимо направить браузер пользователя;

  • cookies – куки, которые нужно установить при перенаправлении браузера пользователя на общем с Blitz Identity Provider домене;

  • instanceId, instructions – прочие технологические сведения, которые нужно проигнорировать.

Пример ответа:

{
   "instanceId": "amRiY2lkcG9zdGdyZXM6YzhjMGExYzEtYzdmYS00ZDg3LWFiYmMtZTNiYzg1YTk4",
   "subject":"5cffd68f-2cb8-4f7a-b0f3-9fa69a1fbbcd",
   "context":"6DXDHyyiZ2hByUN-sCRUEdvAoQun7WwQ",
   "cookies": [{
      "name": "css",
      "value": "TSQA-AruOjUNphGZ984eLgzT_ROebNiBsjyjEg4n-nL-PdsiXqq"
    }],
    "origin": "/blitz/profile?",
    "instructions": []
}

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