Всем доброго дня! Есть задача реализовать на сайте авторизацию через esia. Наш сайт работает на PHP. Для работы с есиа скачал готовое решение тут: https://github.com/fr05t1k/esia В коде пишу следующее: PHP: include_once $_SERVER['DOCUMENT_ROOT'].'/esia/autoload.php'; function mylog($message){ $file = $_SERVER['DOCUMENT_ROOT'].'/esia/datalog.txt'; file_put_contents($file, $message, FILE_APPEND | LOCK_EX); } $config = [ 'clientId' => 'AAAC01564', 'redirectUrl' => 'http://domen.ru/index.php?id=19', 'portalUrl' => 'https://esia-portal1.test.gosuslugi.ru/', 'privateKeyPath' => $_SERVER['DOCUMENT_ROOT'].'/esia/private.key', 'privateKeyPassword' => 'pass', 'certPath' => $_SERVER['DOCUMENT_ROOT'].'/esia/cert.crt', 'tmpPath' => $_SERVER['DOCUMENT_ROOT'].'/esia/tmp', 'log' => 'mylog', ]; $esia = new \esia\OpenId($config); echo '<a class="btn-base small" target="_self" href="'.$esia->getUrl().'">Войти</a>'; Ссылка генерируется нормально, при переходе по ней открывается тестовый сайт госуслуг, ввожу логин и пароль от тестовых учетных данных, далее у меня выходит ошибка типа: Открываю логи, а там: Код (Text): 2017-12-01 13:53:52,710 DEBUG ru.atc.esia.security [ru.atc.esia.aas.oauth2.server.filter.AbstractOAuth2Filter:62] The client id [AAAC01564] has been authenticated. 2017-12-01 13:53:52,713 ERROR ru.atc.esia.security [ru.atc.esia.aas.oauth2.server.token.SystemScopeAuthorityRulesValidator:63] Requested scope http://esia.gosuslugi.ru/usr_inf by system: AAAC01564, state: a6ad338b-ae26-4125-a5c9-2eb38f1bbfac is not allowed to system by scope authority policy [TABLE ESIA.SYS_SCP_AUT] 2017-12-01 13:53:52,714 ERROR ru.atc.esia.oauth2 [ru.atc.esia.aas.oauth2.server.filter.AuthzCodeEndpointFilter:126] Requested scopes not permitted. request(#1990314443), state: a6ad338b-ae26-4125-a5c9-2eb38f1bbfac, client id AAAC01564 Что я делаю не так? Буду рад любым ответам!
типа запрошенных прав не дает.... имхо это не в технической плоскости лежит .. .чето там шибко мутно было - не всех они одобрямс, кипу документов им шли чтоб зарегаться итд
С документами у нас все в порядке) Проблема была в том что я не правильно указывал имена скопов, проблема в том что я указывал их в виде полного урл, как указывалось в примере, типа: Код (Text): http://esia.gosuslugi.ru/fullname А надо было указать просто: Код (Text): fullname И все встало на свои места. Теперь у меня все работает, все хорошо. Информация о пользователе приходит нормально, но вот в чем проблема, есть такой скоп, называется usr_org, он возвращает список организаций пользователя, не не совсем понятно как запросить подробные данные об организации?
И как решили? Очень интересно. Нужно дополнительно запрашивать маркер со scope типа: http://esia.gosuslugi.ru/org_shortname?org_oid=**** ? и уже после этого запрашивать инфу по ссылке: https://esia.gosuslugi.ru:443/rs/orgs/**** ? Проблем с получением инфы о персоне и контактных данных нет. А вот с организацией засада. Подскажите, как решили задачу?
Список организаций к которым прикреплен пользователь я запрашиваю вот так: Код (Text): https://esia.gosuslugi.ru/rs/prns/{prn_oid}/roles Вот скопы которые я использовал: Код (Text): fullname usr_org
т.е. ИНН организации Вы не вытаскиваете? rs/prns/{prn_oid}/roles не отдает ИНН. Чтобы получить ИНН доступ в scope http://esia.gosuslugi.ru/org_inn?org_oid=*** , который заранее не известен. т.е. получается пользователя придется направлять на страницу ЕСИА 2 раза.