Использование сервиса E NUM владельцами сайтов

Что такое E-NUM

E-NUM – это система авторизации, используемая для дополнительной защиты закрытых ресурсов онлайн-сервисов посредством секретного ключа (уникальной кодовой книги), хранимой в мобильном устройстве пользователя.

E-NUM поддерживает спецификацию стандарта OAuth 2.0 .

OAuth 2.0 позволяет предоставить третьей стороне доступ к защищенным ресурсам без необходимости сообщать ей (третьей стороне) данные аутентификации пользователя (число-вопрос, число-ответ).

Схема авторизации на сайте банка с использованием системы E-NUM.

Как работает E-NUM

1. Клиент банка запрашивает вход в защищенную зону онлайн-банкинга
2. Для предоставления доступа Банк требует пройти авторизацию, для чего перенаправляет его на сайт системы E-NUM
3. После успешной авторизации система E-NUM возвращает клиенту одноразовый код
4. Браузер клиента, в свою очередь, передает код авторизации сайту банка
5. Сайт банка, используя код авторизации, запрашивает у E-NUM временный токен доступа
6. Этот токен используется в дальнейшем для обращения к методам API E-NUM, которые обеспечивают идентификацию клиента.

Детальная схема авторизации с использованием системы E-NUM (сверху вниз)

Описание методов API

Запрос кода авторизации
Получение кода авторизации
Запрос токена доступа
Получение токена доступа
Получение идентификационных данных пользователя

Запрос кода авторизации

Параметры запроса

Название Описание
response_type Значение параметра - "code"
client_id Идентификатор сервиса, полученный в системе E-NUM
redirect_uri URL, на который будет отправлен ответ запроса (необходимо указать в настройках сервиса в аккаунте E-NUM)
scope Набор запрашиваемых данных клиента из системы E-NUM, разделенный пробелом, например: email phone
state Используется для сопоставления запроса и ответа (сквозной параметр)

Пример:

curl -i "https://auth.enum.ru/OAuth/Authorize?client_id=cd2068a8-cb18-4d24-bc85-dab0b3d3baf7&redirect_uri=https%3A%2F%2Fenumdemobank.enum.ru%2Fsignin-enum&scope=email%20phone&response_type=code&state=random-state" 
HTTP/1.1 302 Found
Location: https://auth.enum.ru/Account/Login?ReturnUrl=%2FOAuth%2FAuthorize%3Fclient_id%3Dcd2068a8-cb18-4d24-bc85-dab0b3d3baf7%26redirect_uri%3Dhttps%253A%252F%252Fenumdemobank.enum.ru%252Fsignin-enum%26scope%3Demail%2520phone%26response_type%3Dcode%26state%3Drandom-state

Получение кода авторизации

  • URL адрес — заданный параметр redirect_url при вызове метода запроса кода авторизации
  • Метод HTTP протокола - GET
  • Формат параметров - application/x-www-form-urlencoded

Параметры ответа

Название Описание
code Одноразовый код авторизации, действителен в течение короткого промежутка времени
state Используется для сопоставления запроса и ответа (сквозной параметр)

Пример:

GET https://enumdemobank.enum.ru/signin-enum?code=db8cea2e8bea4328b1ed&state=random-state

Параметры ответа в случае ошибки:

Название Описание
error Варианты: [invalid_request, unauthorized_client, access_denied, unsupported_response_type, invalid_scope, server_error, temporarily_unavailable]
error_description Описание ошибки
error_uri URL описания ошибки
state Используется для сопоставления запроса и ответа

Запрос токена доступа

URL адрес метода - https://auth.enum.ru/OAuth/Token

Формат параметров - application/x-www-form-urlencoded

Параметры запроса

Название Описание
grant_type Значение параметра - "authorization_code"
code Одноразовый код авторизации, полученный из метода запроса кода авторизации
redirect_uri URL, на который будет отправлен ответ, необходимо зарегистрировать в системе E-NUM
client_id Идентификатор, полученный в системе E-NUM

Пример:

curl -i -d "client_id=cd2068a8-cb18-4d24-bc85-dab0b3d3baf7&client-secret=0e919552-1122-3344-5566-197f151bc349&redirect_uri=https%3A%2F%2Fenumdemobank.enum.ru%2Fsignin-enum&grant_type=authorization_code&code=db8cea2e8bea4328b1ed" "https://auth.enum.ru/OAuth/Token" 
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
    "access_token":"2YotnFZFEjr1zCsicMWpAA",
    "token_type":"example",
    "expires_in":900,
    "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
    "example_parameter":"example_value" 
}

Получение токена доступа

  • Url адрес - заданный параметр redirect_url при вызове метода запроса токена доступа
  • Формат параметров - application/json

Параметры запроса:

Название Описание
access_token Токен доступа
token_type Тип токена доступа (Bearer)
expires_in Время жизни токена, в секундах
refresh_token Токен, для повторного получения токена доступа
scope Набор запрашиваемых данных клиента из системы E-NUM, разделенный пробелом, например: email phone

Получение идентификационных данных пользователя

  • Url адрес метода - https://auth.enum.ru/api/Me
  • GET /api/me
  • Заголовок HTTP запроса - Authorization: Bearer {токен доступа}

Ответ - application/json

{
    email: "email",
    phone: "phone" 
}

Демонстрация

На примере несуществующего банка демонстрируем возможность авторизации с использованием E-NUM.

Перейти на рабочий пример

Исходный код примера

Вы можете реализовать свой OAuth2-клиент E-NUM (согласно описанию методов API выше), или воспользоваться "готовыми клиентскими библиотеками": http://oauth.net/2/#client-libraries под вашу платформу.

Если вы используете технологии ASP.NET + Owin от Microsoft, рекомендуем использовать нашу библиотеку E-NUM.OwinSecurityProvider .

Для подачи заявки необходимо авторизоваться в личном кабинете сервиса E-NUM и перейти в раздел Для владельцев сайтов

Если у Вас еще нет аккаунта, то необходимо его получить. Подробнее читайте в статье: Регистрация в сервисе E-num

См. также:
E-num
Использование E-num