За последние 24 часа нас посетили 22789 программистов и 1223 робота. Сейчас ищут 790 программистов ...

Кто делал авторизацию через ESIA на сайте? Помогите разобраться

Тема в разделе "PHP для профи", создана пользователем VaneS, 5 дек 2017.

Метки:
  1. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Всем доброго дня!
    Есть задача реализовать на сайте авторизацию через esia. Наш сайт работает на PHP.
    Для работы с есиа скачал готовое решение тут: https://github.com/fr05t1k/esia
    В коде пишу следующее:
    PHP:
    1. include_once $_SERVER['DOCUMENT_ROOT'].'/esia/autoload.php';
    2. function mylog($message){
    3.     $file = $_SERVER['DOCUMENT_ROOT'].'/esia/datalog.txt';
    4.     file_put_contents($file, $message, FILE_APPEND | LOCK_EX);
    5. }
    6. $config = [
    7.    'clientId' => 'AAAC01564',
    8.    'redirectUrl' => 'http://domen.ru/index.php?id=19',
    9.    'portalUrl' => 'https://esia-portal1.test.gosuslugi.ru/',
    10.    'privateKeyPath' => $_SERVER['DOCUMENT_ROOT'].'/esia/private.key',
    11.    'privateKeyPassword' => 'pass',
    12.    'certPath' => $_SERVER['DOCUMENT_ROOT'].'/esia/cert.crt',
    13.    'tmpPath' => $_SERVER['DOCUMENT_ROOT'].'/esia/tmp',
    14.    'log' => 'mylog',
    15. ];
    16. $esia = new \esia\OpenId($config);
    17. echo '<a class="btn-base small" target="_self" href="'.$esia->getUrl().'">Войти</a>';
    Ссылка генерируется нормально, при переходе по ней открывается тестовый сайт госуслуг, ввожу логин и пароль от тестовых учетных данных, далее у меня выходит ошибка типа:
    [​IMG]
    Открываю логи, а там:
    Код (Text):
    1. 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.
    2. 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]
    3. 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
    Что я делаю не так?
    Буду рад любым ответам!
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    типа запрошенных прав не дает....
    имхо это не в технической плоскости лежит .. .чето там шибко мутно было - не всех они одобрямс, кипу документов им шли чтоб зарегаться итд
     
  3. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    С документами у нас все в порядке)
    Проблема была в том что я не правильно указывал имена скопов, проблема в том что я указывал их в виде полного урл, как указывалось в примере, типа:
    Код (Text):
    1. http://esia.gosuslugi.ru/fullname
    А надо было указать просто:
    Код (Text):
    1. fullname
    И все встало на свои места.
    Теперь у меня все работает, все хорошо. Информация о пользователе приходит нормально, но вот в чем проблема,
    есть такой скоп, называется usr_org, он возвращает список организаций пользователя, не не совсем понятно как запросить подробные данные об организации?
     
    artoodetoo нравится это.
  4. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    А нет, проблему решил, спасибо)
     
    denis01 нравится это.
  5. VladimirP

    VladimirP Новичок

    С нами с:
    15 дек 2017
    Сообщения:
    2
    Симпатии:
    0
    И как решили? Очень интересно.

    Нужно дополнительно запрашивать маркер со scope типа: http://esia.gosuslugi.ru/org_shortname?org_oid=**** ?

    и уже после этого запрашивать инфу по ссылке: https://esia.gosuslugi.ru:443/rs/orgs/**** ?

    Проблем с получением инфы о персоне и контактных данных нет. А вот с организацией засада. Подскажите, как решили задачу?
     
  6. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Список организаций к которым прикреплен пользователь я запрашиваю вот так:
    Код (Text):
    1. https://esia.gosuslugi.ru/rs/prns/{prn_oid}/roles
    Вот скопы которые я использовал:
    Код (Text):
    1. fullname usr_org
     
  7. VladimirP

    VladimirP Новичок

    С нами с:
    15 дек 2017
    Сообщения:
    2
    Симпатии:
    0
    т.е. ИНН организации Вы не вытаскиваете? rs/prns/{prn_oid}/roles не отдает ИНН.

    Чтобы получить ИНН доступ в scope http://esia.gosuslugi.ru/org_inn?org_oid=*** , который заранее не известен. т.е. получается пользователя придется направлять на страницу ЕСИА 2 раза.
     
  8. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Для реализации моей задачи было достаточно получить список организаций где состоит пользователь.
     
  9. ibobby

    ibobby Новичок

    С нами с:
    8 май 2018
    Сообщения:
    1
    Симпатии:
    0
    Всем привет в данной теме , есть вопрос где получить сертификаты для доступа ?