我正在使用Angular 7应用程序,该应用程序在另一台服务器上执行API调用。该API需要Oauth1授权。
我担心的是OAuth1凭据在dist/main.js
文件中可见,并且显然我想隐藏此信息。
我首先考虑过使用任何编码方法对凭据进行编码,然后在执行API调用之前对其进行解码。但是该解决方案无效,因为可以访问前端应用程序的任何代码,并且编码/解码方法也不例外。
我还考虑过将凭据存储在前端服务器端的数据库中,并由Angular应用程序直接访问,但是我想知道这对我的需求是否有点“过多”。
当前,凭据是助手类的属性:
export class OAuth1Authorization implements IAuthorization {
private token = {
consumerKey: '...',
consumerSecret: '...',
accessToken: '...',
tokenSecret: '...'
};
private signatureMethod = 'HMAC-SHA1';
private version = '1.0';
private nonce;
// ...
}
最后一点,例如,我的用例不是 ,而不是存储用户名/密码验证后由远程服务器返回的令牌,这一点我想非常清楚。
我的需求实际上是以安全的方式存储的(例如,以便不能以明文形式访问连接信息!)4个令牌,应该在前端和服务器上事先知道后端,并且暂时不会改变。
答案 0 :(得分:2)
不幸的是,OAuth1不是为现代JS应用程序设计的:身份验证是必需的秘密,并且您注意到,没有完全防弹的方式在客户端存储它。
无论您在哪里隐藏它,如何对其进行编码,它都会在您的应用程序的某个时刻被解码,并可以通过调试器轻松地检索到。
OAuth1文档页面(https://oauth1.wp-api.org/docs/advanced/Web.html)建议使用最小代理,该代理知道秘密并可以在Web客户端向其发送非秘密参数时执行身份验证。