2017-04-19 146 views
0

我目前正在致力于Facebook Messenger的聊天机器人。我正在使用Microsoft bot框架,代码是用node.js编写的。我应该在哪里存储访问令牌

我正在通过API与数据库进行交互。对于每个请求,我必须在请求头中传递一个访问令牌。我已经在互联网上阅读过,你通常会在Cookie或网络存储器中存储这样一个令牌。不过,我也发现你不能在Facebook Messenger上做到这一点。我正在考虑将访问令牌存储在变量中,但我担心这可能不安全。 有没有其他安全的方式来存储访问令牌?

我对node.js相当陌生,这是我第一次使用令牌。非常感谢帮助。

+0

“对于每个请求,我必须在请求 标头内传递访问令牌。” 为什么? –

+0

@Bob Swager我已经实现了账户链接。用户必须输入他的用户名和密码。我发送了一个包含这两个值的发布请求。如果数据库中存在具有给定凭证的条目,我将获得一个访问和刷新令牌。为了向用户发送个性化数据,我必须将访问令牌传递给每个请求。 –

+0

我确定你有每个用户的唯一ID。对 ? 您不必每次都刷新令牌。 –

回答

2

您可以使用session.userData来保存您的数据库令牌。如果您担心安全,请在保存前加密。

session.userData.dbtoken = encryptToken(token); 

令牌可以在以后检索和使用,当你需要它:

var token = decryptToken(session.userData.dbtoken); 
var databaseData = getUserDataFromDatabase(token); 

https://docs.botframework.com/en-us/core-concepts/userdata/

或者使用本地数据库一样NeDB:https://github.com/louischatriot/nedb这将是最安全的选择,因为数据库将驻留在您的服务器上。

+0

非常感谢。 –

+0

如果我在将数据存储到本地数据库之前对其进行加密,是否会增加安全性? –

+0

“它会增加安全性”吗?加密数据通常比未加密的数据更安全。但是,如果攻击者获得对源代码和加密标记的访问权限,那么他们也可以解密该标记。我不知道所有的要求,或者你的特定项目的细节。 –