在Chrome扩展中安全地存储Django REST API令牌

时间:2017-03-22 22:46:25

标签: javascript python django google-chrome google-chrome-extension

我制作Chrome扩展程序,允许用户在弹出界面中输入用户名和密码,通过AJAX将这些用户名和密码发布到服务器,并接收Chrome扩展程序可以使用的Django REST API令牌与Django应用程序交互(获取用户信息,创建新记录等 - 所以它应该是安全的)。

现在我已经让Chrome扩展程序发出请求并收到了API令牌,但我正在努力安全地存储API令牌。

我知道chrome.storage已经出局了,因为文档说它不安全。可以在这里使用cookies吗?扩展程序需要在多个域上运行,因此我不确定是否可以安全地使用Cookie。

我不希望用户每次使用Chrome时都要登录,但我不确定如何存储API数据。

2 个答案:

答案 0 :(得分:0)

您应该使用chrome.identity

  

开发人员可以利用chrome.identity API来存储用户凭据。 Chrome扩展程序通常会向外部资源发出API请求。最佳做法是存储OAuth API令牌。这样的令牌可以代表用户执行授权请求,而无需用户名/密码,并且可以随时被用户吊销。

     

Chrome API提供了chrome.identity服务,该服务为扩展程序提供了一种安全的方式来验证,获取和刷新令牌。使用此API,用户可以针对第三方服务执行身份验证。 Chrome可以交互式显示弹出式UI,

这里是official docs

答案 1 :(得分:0)

Chrome不允许扩展程序使用Cookie修改/处理。

documentation中说:“使用Chrome Identity API验证用户身份: getAuthToken 用于登录其Google帐户的用户,而 launchWebAuthFlow 用于用户登录到非Google帐户。如果您的应用使用自己的服务器对用户进行身份验证,则需要使用后者的服务器

您可以找到有关非Google帐户here的文档。

您可以将令牌存储在本地存储中,该令牌只能由您的扩展程序访问,但请注意,该令牌未加密,可以通过Chrome的开发工具看到。