移动客户端,资源graphql服务器和auth0刷新令牌流

时间:2019-03-20 00:21:17

标签: graphql auth0 refresh-token

我正在使用node.js开发一个graphql服务器,并且正在使用auth0进行身份验证。我大部分完成了身份验证。我现在关注的部分是刷新令牌。这是我的流程。

我在IOS中有一个连接到graphql服务器的移动应用程序。 auth0的所有身份验证逻辑都是通过graphql服务器处理的,因此身份验证方面是客户端不可知的,宁愿将刷新令牌存储在服务器上以确保安全性。

当我尝试实现刷新令牌时会出现问题。现在,我正在考虑处理此流程。

  1. 客户端通过身份验证并检索访问令牌(服务器获取刷新令牌,加密并保存到数据库)
  2. (令牌过期后),客户端尝试访问graphql查询或变异,并获取错误“ TOKEN_EXPIRED”
  3. 在这里,我希望客户端将其访问令牌赋予一个突变,以刷新令牌并获得新的令牌。

这是引起我关注的地方。我不能只在服务器上自动刷新,因为客户端需要访问令牌。由于刷新令牌不会以任何方式使先前的访问令牌无效,因此攻击者可以攻击此端点以继续获取新令牌。由于客户端没有客户端ID或密码,因此它的安全性较低,因为由于添加了ID和密码,刷新令牌是安全的。除非通过登录,否则Auth0不允许您检索新的刷新令牌(如果可以的话,我将撤消刷新令牌并替换为新的令牌)。

Auth0似乎建议在移动设备上存储客户端机密,客户端ID,刷新令牌和访问令牌。这似乎是很多不应在设备上显示的信息。

如果您有任何建议,请告诉我,我觉得我缺少一些简单的东西。

0 个答案:

没有答案