Правильная ссылка на эту статью: |
Использование сервиса 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
Запрос кода авторизации
Получение кода авторизации
Запрос токена доступа
Получение токена доступа
Получение идентификационных данных пользователя
Запрос кода авторизации¶
- URL метода - https://auth.enum.ru/OAuth/Authorize
- Метод HTTP протокола - GET
- Формат параметров - application/x-www-form-urlencoded
Параметры запроса
Название | Описание |
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