继电器中的认证& GraphQL

时间:2016-07-27 16:20:01

标签: authentication passport.js jwt relayjs graphql-js

我一直在使用react和relay进行应用程序,现在我一直坚持实现身份验证。

我知道您可以通过GraphQL解析函数中提供的上下文将值传递给每个graphql请求。

我对于传递什么以及如何传递更加困惑。

使用JSON Web令牌,护照还是其他什么更好?我该如何传递用户的标识符?

基本上我要问的是, 什么是最适合接力:jwt,护照,别的?以及如何将其与继电器联系起来。谢谢!

2 个答案:

答案 0 :(得分:3)

我认为你最好的选择是研究一些入门套件。不幸的是,这些套件几乎都没有提供完整的JWT实现 - 其中许多似乎只有一半完成了。

退房:

  • Relay Authentication。您的里程可能会有所不同 - 它涵盖了整个概念,但有一些错误。
  • Universal Relay Boilerplate。那个是非常惊人和完整但是是一个野兽,可以有点压倒性的工作,因为它还包括iOS / Android应用程序创建。
  • Relay Starter Kit。在撰写本文时,它只有FB auth设置(因此没有正常的登录表单可行),因为它确实设置了一个JWT cookie。我相信将所有登录路由迁移到GraphQL都在路线图上,因为它现在有点混合。

至于你的jwt /护照问题。它们不是相互排斥的。 Passport可以处理jwt auth,虽然我个人不使用它并直接使用jwt库。这不是很难 - 你可以在Relay Starter Kit的server文件中看到它。

JWT令牌通常在标题周围传递,但是已经转移到 HttpOnly cookie中存储这些令牌(请参阅此article)。该方法的优点是你不需要处理使用Relay传递令牌。

答案 1 :(得分:0)

我是网络蜂鸟回答的第一个例子的作者,目前正在开发一个新的universal relay starter kit。它包含通过AWS Cognito进行身份验证,并且通过Cognito进行FB登录,尽管它是not fully working yet。它使用Cognito发布的JWT令牌。

如果您需要自己实施身份验证工作流而不是使用Cognito或Auth0或类似服务,则

Passport也可能是替代方案。您可以实现一个(单独的)auth服务器,公开auth端点,如登录等。此服务器可以在cookie中设置JWT,可以在GraphQL服务器上进行身份验证。

入门套件仍在开发中(例如,尚未使用刷新令牌),但它已经可以使用了。