Добрый день.
Бьемся с авторизацией портала через ЕСИА с использованием OAuth2/OpenID Connect. Доступ в систему получен, ключи сгенерированы, разрешения на использования определенного списка scope получены. В общем, вся бюрократия соблюдена.
Список разрешенных для нас scope такой: (sbj_inf, openid, fullname, email, mobile, contacts, usr_org - базовые для получения информации о пользователе, его контактах и списке организаций в которых он состоит и дополнительные для получения более подробной информации о его организациях - org_shortname, org_fullname, org_type, org_ogrn, org_inn, org_leg, org_kpp, org_oktmo, org_ctts, org_addrs, org_brhs, org_brhs_ctts, org_brhs_addrs).
При использовании "базовых" scope мы успешно получаем код авторизации (по url на тестовом контуре
esia-portal1.test.gosuslugi.ru/aas/oauth2/ac), обмениваем его на маркер доступа (
https://esia-portal1.test.gosuslugi.ru/aas/oauth2/te). Здесь все хорошо работает, с использованием полученного Access Token от нас проходят запросы на получение информации о пользователе, его контактах итд.
Дальше сложнее. Скоуп usr_org дает доступ к списку организаций пользователя, в которых содержится краткая информация - название организации, внутренний id и ОГРН (
https://esia-portal1.test.gosuslugi.ru/rs/prns/{oi... Нам же нужна более подробная информация об организациях, в которых состоит пользователь. Для этого есть дополнительные scope, например org_fullname, org_type итд. В документации (доступна по адресу, доступ открытый -
minsvyaz.ru/uploaded/presentations/esiametodichesk... на страницах 145-147 описывается список этих scope и приводится информация о том, что они должны параметризоваться.
Цитата:
Пример scope:
scope=“http://esia.gosuslugi.ru/org_emps?org_oid=1000000357”
Здесь непонятны сразу два момента.
1. До авторизации невозможно узнать списки организаций пользователя и как следствие узнать их id-шники. А список scope составляется до авторизации (при получении авторизационного кода) и должен совпадать со списком scope, который отправляется в запросе на получение маркера доступа. Соответственно до получения маркера доступа невозможно узнать id организаций, их можно узнать только после получения access token из маркера доступа и отправки подписанных им запросов в систему.
2. Непонятен формат подстановки scope в список для авторизации. Мы уже перебрали от безысходности все варианты - и org_fullname и org_fullname?org_id=id (с реальным id организации из тестового контура) и
esia.gosuslugi.ru/org_fullname и
https://esia-portal1.test.gosuslugi.ru/org_fullname с параметрами и без.
На любой запрос со scope содержащим org_fullname система отвечает ошибкой в адресной строке браузера вида:
error=invalid_scope&state=d084a665-6122-4c99-89dc-072c911a3dfa&error_description=ESIA-007006%3A+The+requested+scope+is+invalid%2C+unknown%2C+or+malformed.
В документации об этой ошибке только пара строчек - неправильный scope или некорректно составлен.
Если кто-то сталкивался с подобным при работе ЕСИА - подскажите, пожалуйста, будем признательны.