不允许使用 JWT 令牌保护 GraphQL 端点
Posted
技术标签:
【中文标题】不允许使用 JWT 令牌保护 GraphQL 端点【英文标题】:Not allowed to secure GraphQL endpoint with JWT token 【发布时间】:2017-05-13 07:38:08 【问题描述】:我正在运行一个快速服务器,只是在我的端点上设置了 JWT 保护。我正在测试我的 /graphql
端点,我收到 403 Not allowed to provide a JWT token
错误。我的其他端点工作正常,所以我不认为这是 JWT 签名或验证的问题。有什么想法吗?
var jwt = require('express-jwt');
var app = express();
var jwtCheck = jwt(
secret: new Buffer(config.secret, 'base64'),
audience: aud,
issuer: iss
);
// enforce on all endpoints
app.use(jwtCheck);
app.use('/', postgraphql(config.db_string, config.db_schema,
development: true,
log: true,
secret: config.secret,
graphiql: true,
));
【问题讨论】:
没有一些代码是无法分辨的...... @miparnisari 没什么可分享的。这是express
服务器上的普通graphql
端点
你能分享这个端点的代码吗?另外,必须有一个中间件功能做JWT保护,你能分享一下吗?
@miparnisari Gotcha,更新:)
好的,谢谢。但是您共享了中间件功能的代码,我们也需要端点的代码。
【参考方案1】:
想通了,问题在于没有将正确的参数传递给PostgraphQL
。如果您将 Authorization 标头中的 JWT 令牌传递给 PostgraphQL
,则它需要一个秘密。如果 secret 不存在,则PostgraphQL
将抛出错误 403 Not allowed to provide a JWT
错误。
【讨论】:
我相信此行为已在 v3.3.0 中修复以上是关于不允许使用 JWT 令牌保护 GraphQL 端点的主要内容,如果未能解决你的问题,请参考以下文章