我有一个使用OAuth2的简单节点应用。我们的应用程序调用另一个应用程序来授权我的用户,然后它会发回我的应用程序。因此,流程是用户触发操作,它将把他们重定向到外部服务器。成功登录后,它们将被重定向回我们的应用程序。问题是我需要一些信息,例如第一次呼叫时的用户信息,当他们以不同的端点返回我的应用程序时,这些信息会丢失。我正在使用hapi和simple-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请求的存储甚至是加密的“状态”字段。试图了解执行这些操作的标准方法。有什么建议吗?
您可以使用状态参数:
https://auth0.com/docs/protocols/oauth2/oauth-state
我没有使用与您相同的技术堆栈,但是我遇到了同样的问题。您必须对置于状态参数中的数据使用url base64编码。您可以在这里了解更多信息: