Аутентификация
Аутентификация предполагает проверку подлинности номера телефона, введённого пользователем. Проверка происходит через push-уведомление, которое оператор поднимает на устройстве пользователя через обращение к SIM-карте. Если проверка по push не удалась, будет произведена попытка аутентифицировать пользователя с помощью СМС.
Особенности подключения / интеграции
- Услуга предоставляется по схеме Server Initiated (SI), при которой пользователь остаётся на ресурсе сервис-провайдера, и всё взаимодействие с оператором производит сервис-провайдер.
- Сервис-провайдеру необходимо опубликовать криптографические ключи (подробнее о JWKS).
Как выглядит процесс для пользователя?
- На площадке сервис-провайдера пользователь вводит номер телефона.
- Пользователь получает sim-push либо СМС с кодом для подтверждения входа.
- Пользователь подтверждает вход.
Как выглядит процесс для сервис-провайдера?

- На площадке Сервис-провайдера Пользователь вводит номер телефона.

- Сервис-провайдер направляет Мобильному ID запрос на аутентификацию Пользователя.
На что обратить внимание:
- параметр “scope” для данного кейса должен содержать два значения: “openid” и “mc_authn”;
- значение для параметра “request” требует предварительной подготовки (см. описание si-authorize).
Пример запроса на аутентификацию:
POST https://idgw.mobileid.mts.ru/oidc/si-authorize
Content-Type: application/json
{
"client_id": "b27c101b-727d-4316-a2b2-8901f0821194",
"response_type": "mc_si_async_code",
"scope": "openid mc_authn",
"request": "eyJ0eXAiOiUzI1pZJzYTEifQ...gWw",
"correlation_id":"5c16bec6-5d61-4931-9adf-d7f4f723bc97"
}
- Мобильный ID запрашивает у Сервис-провайдера публичный ключ с меткой sig, чтобы проверить подпись под значением параметра request из запроса на авторизацию. Подробнее о криптографических ключах
Пример ключа (sig):
{
"kty":"RSA",
"e":"AQAB",
"use":"sig",
"kid":"zno_K2w2J28A0CGPciEDDfMcCgd2JK5x779hAgmmUgc",
"alg":"RS256",
"n":"k_cWneEqkYOcMgec5H2yhw6C-MQa_BIUnlgUVa8...0Lw"
}
4-5. Мобильный ID проверяет подпись и отправляет Сервис-провайдеру ответ об успешной валидации запроса на аутентификацию.
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json
{
"auth_req_id":"020ce831-a6cb-495b-b78e-b39753ae9d79",
"expires_in":140,
"correlation_id":"5c16bec6-5d61-4931-9adf-d7f4f723bc97"
}
- Мобильный ID отправляет Пользователю push с запросом на подтверждение входа на площадку Сервис-провайдера.

-
Пользователь подтверждает вход на площадку.
-
Если push не может быть доставлен Пользователю, Мобильный ID получает сообщение об ошибке и может инициировать отправку СМС с кодом (шаги 9-15).
-
Мобильный ID отправляет Пользователю СМС.

- Мобильный ID отправляет Сервис-провайдеру нотификацию на sms_otp_notification_endpoint.
Подробнее про smsotp-notification
Пример smsotp-notification:
POST {SMS_OTP_NOTIFICATION_ENDPOINT}
Authorization:bearer {client_notification_token}
{
"auth_req_id": "020ce831-a6cb-495b-b78e-b39753ae9d79",
"smsotp_endpoint":{sms_otp_enpoint},
"correlation_id": "5c16bec6-5d61-4931-9adf-d7f4f723bc97",
"send":
{
"verify_code": "enter_otp_code"
}
}
-
Сервис-провайдер отвечает “200 ОК”.
-
Сервис-провайдер запрашивает у Пользователя код.

-
На площадке Сервис-провайдера Пользователь вводит код из СМС.
-
Сервис-провайдер передаёт код Мобильному ID.
Подробнее про smsotp-notification
Пример запроса на проверку кода:
POST {smsotp_endpoint}
Content-Type: application/json
{
"verify_code" : "8492"
}
-
Мобильный ID отвечает “200 ОК”.
-
Мобильный ID направляет Сервис-провайдеру нотификацию с id_token.
На что обратить внимание:
- значение параметра “id_token” всегда имеет формат JSON Web Token (JWT), поэтому, чтобы получить данные, его необходимо декодировать (подробнее про ID Token).
Пример нотификации при успешной аутентификации:
POST https://service-provider.io/notification_uri/
Authorization: bearer 53f4f85c-4fca-454e-92f5-3996e46f246c
Content-Type: application/json
{
"auth_req_id": "020ce831-a6cb-495b-b78e-b39753ae9d79",
"access_token": "6346d40e-a15d-497a-992d-f3273c113ab9",
"token_type": "Bearer",
"id_token": "eyJ0eXAiOiJKV1QiLbGciOiJIUzI1Ni...J9",
"expires_in": 3600,
"correlation_id": "5c16bec6-5d61-4931-9adf-d7f4f723bc97"
}
- Сервис-провайдер запрашивает у Мобильного ID публичный ключ с меткой sig.
Публичный ключ сервиса опубликован по ссылке – https://idgw.mobileid.mts.ru/oidc/jwks
18-19. Сервис-провайдер с помощью полученного ключа проверяет подпись под значением параметра id_token и отвечает “204 No content”.
- Сервис-провайдер обрабатывает id_token – извлекает sub и связывает его с профилем пользователя на своей площадке.
Пример sub из id_token:
"sub": "873d1a98-23ef-42be-a14c-f577674fd349"
- Сервис-провайдер авторизует Пользователя на своей площадке.