【发布时间】:2016-12-17 11:58:44
【问题描述】:
我正在开发一个具有以下架构的项目:
UI:通过 Node 服务器、Apollo Client for GraphQL 对客户端和服务器端渲染做出反应,
API:Django 通过 Graphene 处理 GraphQL 查询。
我使用 Auth0(基于 JWT)进行前端身份验证。我想使用我获得的令牌在 GraphQL 查询 API 端的上下文中对我的用户进行身份验证。
[编辑2]
要将令牌传递给我的 API,我使用:
const idToken = cookie.load('idToken') || null;
networkInterface.use([{
applyMiddleware(req, next) {
if (!req.options.headers) {
req.options.headers = {}; // Create the header object if needed.
}
req.options.headers.authorization = `Bearer ${idToken}`;
next();
}
}]);
然后我需要在 Django 中检索它:我使用 django-jwt-auth 和@Craig Ambrose 提出的代码。
我的授权标头被接收并解码(我可以得到有效载荷)但在验证签名时出现问题:我得到“错误解码签名”。
这很奇怪,因为我在 jwt.io 上测试签名时验证了签名。
如何在 Django 端进行身份验证?
【问题讨论】:
-
据我了解,您正在尝试执行以下操作。 - 使用 Auth0 进行身份验证, - 使用 Auth0 返回的令牌调用 Django 应用程序,然后使用 Graphene 进行查询?对吗?
-
绝对是!我想设置我的 Django 项目,以便当使用 JWT 标头进行 GraphQL 查询时,我可以在我的 graphql-django-view 中使用:@with_context 并使用 context.user.is_authenticated() 就像在 User-based Queryset Filtering
-
那么您到底面临什么问题呢?目前,id_token 可以工作,但 Auth0 很快就会添加允许您设置资源服务器并请求访问令牌以便能够向这些请求服务器发出请求的功能。
-
嗨@Abhishrek。我的问题是我找不到任何文档来解释我的 Django 设置对于这个配置应该是什么样子(可能这个配置不是那么特别)。 django-auth0、django-jwt-auth 或 djangorestframework-auth0 似乎不适合。所以我要求对此提供某种输入/指导。我没有时间尝试一些解决方案。你对我应该在哪里看有什么建议吗?一旦我有东西启动并运行,我会发布我的设置。
标签: node.js django authentication jwt auth0