我已经编写了一个简单的React应用程序,遵循稍微过时的教程的说明,该教程旨在显示侧栏中的联系人列表,其中各个联系人数据显示在索引组件中,但仅限于您有通过登录到Auth0组件并将JSON Web令牌保存在本地存储中进行身份验证。我已经确认我已登录并拥有令牌。到目前为止,一切都很顺利。
当我点击侧边栏中的联系人查看该联系人的数据时会出现问题,该数据来自使用Express设置的非常基本的API。我一直在使用Postman进行故障排除,因为我从应用程序获得的唯一错误是" 401:未经授权"
当我点击我的端点时,使用"承载[JWT_VALUE_HERE]"提供授权标头。邮递员回应" UnauthorizedError:无效算法"
完整输出
UnauthorizedError: invalid algorithm
at /Users/Arkham/Documents/Web/eldrac/react-auth-server/node_modules/express-jwt/lib/index.js:102:22
at /Users/Arkham/Documents/Web/eldrac/react-auth-server/node_modules/jsonwebtoken/verify.js:27:18
at _combinedTickCallback (internal/process/next_tick.js:95:7)
at process._tickCallback (internal/process/next_tick.js:161:9)
我已经完成了一些谷歌搜索和调整我的Auth0客户端设置,特别是算法设置,但无论我设置它(我的选项是RS256和HS256),它似乎没有做差异。我很想过去。
我使用Superagent提出我的请求
getContact: (url) => {
return new Promise((resolve, reject) => {
request
.get(url)
.set('Authorization', 'Bearer ' + AuthStore.getJwt())
.end((err, response) => {
if (err) reject(err);
resolve(JSON.parse(response.text));
})
});
}
这似乎有效。我已经确认url是正确的,并且AuthStore.getJwt()正在提供正确的参数。
答案 0 :(得分:0)
您的问题没有提供诊断问题所需的大量信息 - 首先,您应该向API发送JWT访问令牌,而不是您的Id令牌。
前期问题:
您是否在Auth0仪表板中定义了API?
进行身份验证时,是否使用了受众参数?它是 可能是访问令牌正在使用RS256。请记住访问权限 token和Resource API,它是控制算法的API, 不是客户。
您的API用于验证令牌的算法是什么?
据推测,您的代码段中的url
就是这样的
http://localhost:3001/myendpoint
获取您的令牌,并将其粘贴到https://jwt.io以查看算法使用的内容。将其与用于验证令牌的内容进行比较。
在您提供更多信息时,请在此处更新我的答案 - 请使用评论部分获取此答案。