Closed plutonio00 closed 3 years ago
Сегодня стал смотреть более детально что нет так. Выяснилось что проблемы начинаются в классе vendor/lcobucci/jwt/src/Token.php
public function verify(Signer $signer, $key)
{
if ($this->headers->get('alg') !== $signer->getAlgorithmId()) {
return false;
}
return $this->signature->verify($signer, $this->getPayload(), $key);
}
Оказывается, $signer->getAlgorithmId() отдает значение RS256, тогда как $this->headers->get('alg') - GOST3410_2012_256 В общем $singer как-то на ГОСТ не перешел. С чем это может быть связано?
Внимательно разберитесь с настройками и какие классы вы используете.
У вас явно у системы проверка токена идёт через ГОСТ -- вот гостовый сигнер ей и дайте.
Проблема в том, что по каким-то причинам в классе vendor/ekapusta/oauth2-esia/src/Provider/EsiaProvider.php в конструкторе не выполняется условие
if (isset($collaborators['remoteSigner']) && $collaborators['remoteSigner'] instanceof Signer) {
$this->remoteSigner = $collaborators['remoteSigner'];
}
Хотя я передаю remoteSinger. Не понимаю пока в чем дело. Для эксперимента захардкодил remoteSinger в вышеуказанном конструкторе.
$this->remoteSigner = new OpenSslCliJwtSigner('openssl');
Получаю дальше ошибку:
Operation failed with code#1 as of: engine "gost" set.
in /var/www/esia-service/vendor/ekapusta/oauth2-esia/src/Transport/Process.php
if (0 != $code) {
throw new RuntimeException("Operation failed with code#$code as of: $stderr");
}
А это с чем связано? Если закомментировать этот кусок кода - то все работает
Добрый день. После обновления этого пакета до последней версии (1.4.1) у меня ошибка с валидацией токена все так же появляется (скрин с ошибкой прикладываю)
Что я пытаюсь делать:
К ключам претензий нет, т.к. авторизация проходит без проблем. Проблемы только с валидацией токена. Соответственно, если отключить в классе vendor/ekapusta/oauth2-esia/src/Token/EsiaAccessToken.php вторую проверку, то все работает отлично. Вот проверка:
Что я делаю не так?