如何存储 Angular 前端使用的 OAuth1 令牌

Posted

技术标签:

【中文标题】如何存储 Angular 前端使用的 OAuth1 令牌【英文标题】:How to store OAuth1 tokens used by an Angular Front-End 【发布时间】:2019-07-10 21:09:06 【问题描述】:

我目前正在从事一个无头项目:Angular 前端使用后端的 API 动态检索数据。

此 API 需要 OAuth1 认证,因此 Angular 应用程序必须在每次调用时传递 4 个令牌(请求、请求密码、访问权限、访问密码)。

目前,这些令牌存储在 JS 配置文件中。由于 API 客户端是纯前端应用程序,因此任何用户都可以访问它们(甚至从浏览器的控制台!)。

我的问题很明显:如何在我的用例中以更安全的方式存储这些令牌?

提前谢谢你。

【问题讨论】:

你的 Angular 版本是什么? 我正在使用 Angular 7 您可以将它们保存在 JSON 文件中并使用服务读取它们,或者您可以将它们加密存储在本地存储中。 谢谢艾哈迈德。确实,我已经考虑过这样的策略。我认为它没用,因为任何人都可以看到编码/解码功能,因为它是前端应用程序的一部分...... 【参考方案1】:

我认为您可以对每个令牌进行编码并将其存储在本地存储中,当您需要发送令牌时,后端从本地存储中检索它并对其进行解码并发送回。

【讨论】:

谢谢你,阿里。确实,我已经考虑过这样的策略。我认为它没用,因为任何人都可以看到编码/解码功能,因为它是前端应用程序的一部分......【参考方案2】:

保存在本地存储中:

localStorage.setItem('currentUser', JSON.stringify( token: token, name: name ));

从本地存储中获取:

var currentUser = JSON.parse(localStorage.getItem('currentUser'));
var token = currentUser.token; // your token

【讨论】:

以上是关于如何存储 Angular 前端使用的 OAuth1 令牌的主要内容,如果未能解决你的问题,请参考以下文章

在前端存储令牌和敏感信息的安全方式(Angular 8)

具有 PHP + MySQL 后端的 JS(Angular) 前端用户权限

ExpressJS / Angular 2 JWT 令牌

如何生成签名方法OAuth1

从 MongoDB 在 Angular.js 中显示图像

如何在 Angular 前端使用 Heroku (S3 CDN) 的“简单文件上传”功能