在完成OAuth2的多个步骤后,一旦收到access_token,应该怎么做?
app.get('/oauth2', function(req, res) {
var code = req.query.code;
var url = "https://.../oauth/access_token";
var options = {
url: url,
method: "POST",
form: {
client_id: '...',
client_secret: '...',
grant_type: 'authorization_code',
redirect_uri: 'http://localhost:8080/oauth2',
code: code,
},
json: true
}
request(options, function(err, response, body) {
// I need to save the user in database if she doesn't exist
// Then redirect, but should I pass the access_token to the redirect?
res.redirect('/'); // or res.redirect('/?access_token=zzz')
}
// Also, should the access_token be encrypted
// Does it need to be saved in database?
// Does it go in local storage?
});
我会想要在响应中收到的一些信息,因此需要将其存储在数据库中。但具体我对access_token做了什么?它会保存到数据库吗?它应该加密吗?当我重定向时,我是否将其添加为查询字符串?我是否将其存储在本地存储中?如果是这样,怎么样?
答案 0 :(得分:0)
首先,您的代码包含json: true
,但RFC 6749 4.1.3. Access Token Request声明参数应使用application/x-www-form-urlencoded
格式发送。
其次,来自令牌端点的响应格式是JSON。有关详细信息,请参阅4.1.4. Access Token Response。
第三,获得访问令牌后,应将其保存以供日后使用。保存访问令牌的地方取决于您。数据库,内存以及您喜欢的任何位置。如果要在保存时加密访问令牌,请按照您的意愿进行操作。
最后,访问令牌用于调用资源服务器的Web API。在正常情况下,Web API的实现以RFC 6750中定义的方式接受访问令牌。在规范中,定义了以下三种方式。