我正在尝试使用OIDC在我的反应应用程序中使用 Apereo CAS 5.1.1登录。寻找库来实现这一点,我登陆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==
另一方面,我认为我的应用程序中缺少或配置错误的东西,因为否则每个使用这个库的人都会遇到同样的问题。
所以,我的问题是:如何在这种情况下成功验证访问令牌?
谢谢。