Я пытаюсь войти в систему с помощью Apereo CAS 5.1.1 в моем приложении реакции с использованием OIDC. В поисках библиотек для этого я приземлился на oidc-client-js 1.7.0 , но у меня возникает следующая ошибка:
ResponseValidator._validateAccessToken: не удалось проверить at_hash dWr5-bD5lv8C1x3VcfFn1Q dWr5 + bD5lv8C1x3VcfFn1Q ==
Следуя трассировке, я обнаружил, куда выдается исключение
var a = s.substr(0, s.length / 2), u = this._joseUtil.hexToBase64Url(a);
return u !== e.profile.at_hash ?
(i.Log.error("ResponseValidator._validateAccessToken: Failed to validate at_hash", u, e.profile.at_hash), Promise.reject(new Error("Failed to validate at_hash"))) :
(i.Log.debug("ResponseValidator._validateAccessToken: success"), Promise.resolve(e));
Проблема в том, что this._joseUtil.hexToBase64Url(a)
не добавляет заполнение (=
) и в данном конкретном случае знак +
. Это потому, что эти символы не принимаются в URL. Таким образом, сравнение всегда (или почти всегда) будет ложным. Например, в этом исполнении:
dWr5-bD5lv8C1x3VcfFn1Q != dWr5+bD5lv8C1x3VcfFn1Q==
С другой стороны, я думаю, что в моем приложении что-то отсутствует или неправильно настроено, потому что в противном случае каждый, кто использует эту библиотеку, столкнется с той же проблемой.
Итак, мой вопрос: как я могу успешно проверить токен доступа в этом сценарии?
Спасибо.