Вызов стороннего приложения регистрации пользователей#
В 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 создаст сессию и обеспечит вход пользователя в приложение, для входа в которое пользователь осуществил регистрацию учетной записи.