Авторизация пользователей через OAUTH2 в ЕСИА: различия между версиями
Перейти к навигации
Перейти к поиску
Misha (обсуждение | вклад) (→Как все работает) |
Misha (обсуждение | вклад) (→Как все работает) |
||
Строка 54: | Строка 54: | ||
Делаем заявку для подключения к ЕСИА. Описание есть [http://minsvyaz.ru/ru/documents/4244/ тут].<br> | Делаем заявку для подключения к ЕСИА. Описание есть [http://minsvyaz.ru/ru/documents/4244/ тут].<br> | ||
==Как все работает== | ==Как все работает== | ||
− | # Сначала делаем запрос на https://esia-portal1.test.gosuslugi.ru/aas/oauth2/ac на авторизацию . Более подробно можно посмотреть в документации. Единственно, scope дб openid. Это ссылка с GET параметрами.<br>Структура запроса | + | # Сначала делаем запрос на https://esia-portal1.test.gosuslugi.ru/aas/oauth2/ac на авторизацию . Более подробно можно посмотреть в документации. Единственно, scope дб openid. Это ссылка с GET параметрами (В.2.2).<br>Структура запроса |
##client_id=LPUV01355 - Выданный при регистрации ИС на сайте ГУ. Можно посмотреть [https://esia.gosuslugi.ru/console/tech/ тут] | ##client_id=LPUV01355 - Выданный при регистрации ИС на сайте ГУ. Можно посмотреть [https://esia.gosuslugi.ru/console/tech/ тут] | ||
##client_secret=MIIG1wYJKoZI......... | ##client_secret=MIIG1wYJKoZI......... | ||
Строка 64: | Строка 64: | ||
##timestamp=2017.07.01+10%3A59%3A50+%2B0300 | ##timestamp=2017.07.01+10%3A59%3A50+%2B0300 | ||
#В ответ получаем code авторизации. | #В ответ получаем code авторизации. | ||
− | #Используем данный code для запроса токена. Структура запроса | + | #Используем данный code для запроса токена (п. В.2.3 Получение маркера доступа в обмен на авторизационный код). Структура запроса |
##[client_id] => LPUV01355 | ##[client_id] => LPUV01355 | ||
##[code] => Полученный при авторизации код | ##[code] => Полученный при авторизации код | ||
Строка 77: | Строка 77: | ||
#В ответ получаем маркер обновления, который можно использовать для продления сессии, когда данная сессия устареет | #В ответ получаем маркер обновления, который можно использовать для продления сессии, когда данная сессия устареет | ||
#Вот далее пока не понятно. По идее мы должны послать запрос на получение маркера доступа (п.В.3.2 документации). Вот его структура | #Вот далее пока не понятно. По идее мы должны послать запрос на получение маркера доступа (п.В.3.2 документации). Вот его структура | ||
− | ##[client_id] => LPUV01355 | + | ##[client_id] => LPUV01355 мнемоника ИС |
##[response_type] => token | ##[response_type] => token | ||
##[grant_type] => client_credentials | ##[grant_type] => client_credentials | ||
− | ##[scope] => fullname gender | + | ##[scope] => fullname gender то что ьыхотим получить с сайта ГУ |
− | ##[state] => a4947434-f9ac-4267-b83b-7e4036998898 | + | ##[state] => a4947434-f9ac-4267-b83b-7e4036998898 генерится новый |
##[timestamp] => 2017.07.01 11:47:14 +0300 | ##[timestamp] => 2017.07.01 11:47:14 +0300 | ||
##[token_type] => Bearer | ##[token_type] => Bearer | ||
− | ##[client_secret] => MIIG1wYJK............... | + | ##[client_secret] => MIIG1wYJK............... генерится как обычно |
На этом пока все. Буду дописывать, по мере продвижения. | На этом пока все. Буду дописывать, по мере продвижения. | ||
Использую [https://github.com/fr05t1k/esia Class]<br> | Использую [https://github.com/fr05t1k/esia Class]<br> |
Версия 11:56, 1 июля 2017
Буду писать основные моменты, когда получится все опишу подробно.
Описание всего этого дела лежит тут. Правда в нем уже куча ошибок. Обещают поправить в будущем.
Содержание
Генерация ключа
создаем файл config.cfg
# Параметры для генерации открытого ключа. [ req ] # Секция основных опций default_bits=2048 # Число бит #default_keyfile=miac.pem # Имя ключа, используемого для сертификата distinguished_name=req_distinguished_name # DN организации, выдавшей сертификат prompt=no # Брать параметры из конфига неинтерактивный режим [ req_distinguished_name ] # DN организации CN=RU # Страна ST=Vologodskaya # Область L=Vologda # Город O=MIAC # Название организации OU=MIAC # Название отделения CN=volmed.org.ru # Имя для сертификата (персоны, получающей сертификат) emailAddress=miac35@mail.ru # Мыло организации
Создаем файл генерации esia.sh. Сделал ключи без пароля.
openssl req -x509 -sha256 -newkey rsa:2048 -nodes -days 3650 \ -keyout miac_priv.pem \ -out miac_root.pem \ -config config.cfg
Запускаем его и получаем 2 файла сертификата.
$ sh esia.sh
Регистрация ИС
- Получаем ЭЦП на руководителя для входа на сайт ГУ
- Настраиваем комп для входа с этой ЭЦП. Учтите на данный момент при входе через FF, версия его дб , иначе не установится плагин для работы с ГУ.
- Входим на сайт ГУ.
- Регистрируем организацию.
- Регистрируем ИС. При этом загружаем сгенерированный файл сертификата miac_root.pem.
Создание заявки для подключения к тестовой версии ЕСИА
Делаем заявку для подключения к ЕСИА. Описание есть тут.
Как все работает
- Сначала делаем запрос на https://esia-portal1.test.gosuslugi.ru/aas/oauth2/ac на авторизацию . Более подробно можно посмотреть в документации. Единственно, scope дб openid. Это ссылка с GET параметрами (В.2.2).
Структура запроса- client_id=LPUV01355 - Выданный при регистрации ИС на сайте ГУ. Можно посмотреть тут
- client_secret=MIIG1wYJKoZI.........
- redirect_uri=https%3A%2F%2Fzapis.volmed.org.ru%2Fesia.php
- scope=openid
- response_type=code
- state=5f0fd916-2499-4719-8236-d895ac458979
- access_type=offline
- timestamp=2017.07.01+10%3A59%3A50+%2B0300
- В ответ получаем code авторизации.
- Используем данный code для запроса токена (п. В.2.3 Получение маркера доступа в обмен на авторизационный код). Структура запроса
- [client_id] => LPUV01355
- [code] => Полученный при авторизации код
- [grant_type] => authorization_code
- [client_secret] => MIIG1wYJKoZIhvcNAQcCoIIGy.... формируется как и при авторизации
- [state] => 5d77d9ac-5d55-494d-8a0c-1e5f021aa813 снова формируется новый
- [redirect_uri] => https://zapis.volmed.org.ru/esia/response.php (Может и не нужен)
- [scope] => openid - В доке написано, что scope дб такой же, как при авторизации (тут стр 135)
- [timestamp] => 2017.07.01 11:15:40 +0300
- [token_type] => Bearer
- [refresh_token] => 5d77d9ac-5d55-494d-8a0c-1e5f021aa813
- В ответ получаем маркер обновления, который можно использовать для продления сессии, когда данная сессия устареет
- Вот далее пока не понятно. По идее мы должны послать запрос на получение маркера доступа (п.В.3.2 документации). Вот его структура
- [client_id] => LPUV01355 мнемоника ИС
- [response_type] => token
- [grant_type] => client_credentials
- [scope] => fullname gender то что ьыхотим получить с сайта ГУ
- [state] => a4947434-f9ac-4267-b83b-7e4036998898 генерится новый
- [timestamp] => 2017.07.01 11:47:14 +0300
- [token_type] => Bearer
- [client_secret] => MIIG1wYJK............... генерится как обычно
На этом пока все. Буду дописывать, по мере продвижения.
Использую Class