在OAuth2身份验证调用和重定向调用之间传递值

问题描述 投票:0回答:1

我有一个使用OAuth2的简单节点应用。我们的应用程序调用另一个应用程序来授权我的用户,然后它会发回我的应用程序。因此,流程是用户触发操作,它将把他们重定向到外部服务器。成功登录后,它们将被重定向回我们的应用程序。问题是我需要一些信息,例如第一次呼叫时的用户信息,当他们以不同的端点返回我的应用程序时,这些信息会丢失。我正在使用hapisimple-oauth2 lib。

//hapi routes

server.route(
  {
    method: 'GET',
    path: '/validate',
    handler: function (request, h) {
      var params = request.query;
      var userId = params.userId;
      var info: params.info;
      .....
      h.redirect(authorizationUri);
    }
  },
  {
    method: 'GET',
    path: '/callback',
    handler: function (request, h) {
      var token = getTokenUsingSimpleOAuth2Lib(request);
      //I do not have access to userId and info from orginal client request
      saveTokenWithUserIdAndInfo(token, userId, info);
    }
  }
);

如上第二个回调所示,我没有原始呼叫提供的那些信息。我猜我们可以将缓存用作OAuth2请求的存储甚至是加密的“状态”字段。试图了解执行这些操作的标准方法。有什么建议吗?

node.js oauth-2.0 callback hapijs
1个回答
0
投票

您可以使用状态参数:

https://auth0.com/docs/protocols/oauth2/oauth-state

我没有使用与您相同的技术堆栈,但是我遇到了同样的问题。您必须对置于状态参数中的数据使用url base64编码。您可以在这里了解更多信息:

Passing base64 encoded strings in URL

© www.soinside.com 2019 - 2024. All rights reserved.