如何在从javascript传递到web api 2时隐藏或保护令牌

eth*_*hem 6 javascript c# token asp.net-web-api angularjs

我在UI站点/项目和Web API 2以及其他站点/项目上使用javascript(angularjs)

UI项目:localhost/12345
Web API:localhost/98777

UI项目正在调用Web API(C#)项目,将令牌从UI传递到WebAPI以获取CRUD请求.

我在ServerSide项目中生成了令牌 - WEB API2(localhost/98777),1-用户名/密码2-然后是url localhost:/ 98777/Token,传递用户名+密码+令牌

以这种方式,如果你在fiddler中调用它,它会返回一个令牌:content-type:application/x-www-form-urlencoded.像这样生成令牌并将其写入localDB,稍后可以在您的UI应用程序中使用此生成的令牌,使用javascript(ajax/angular)调用传递给WebAPI项目.

我已经实现了在我的客户端站点中调用GET/POST/PUT方法的承载令牌.

localhost/12345 defined in Client site to get employee records via token:
----------------------------------------------
method: 'GET'
contenttype: 'application/json, charset=utf-8',
authorization: "Bearer 040jdU6ry....."
url: localhost/98777/api/employees/
Run Code Online (Sandbox Code Playgroud)

这将返回所有员工的数据...它的工作原理.

localhost/98777 defined in server site web.config:
---------------------------------
<httpProtocol>
 <customHEaders>
   <remove name="Access-Control-Allow-Origin" />
   <add name="Access-Control-Alllow-Origin" value ="*"/>
 <customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)

问题?问题是人们可以在IE/Chrome/FF中执行并打开开发人员工具,并查看javascript的来源并查看令牌.然后在Fiddler/composer中执行代码并添加记录:(.

那么为什么我需要一个令牌呢?

有人可以建议我错过哪一部分吗?人们可以看到令牌是正常的吗?

此应用程序将在Intranet中使用并由开发人员使用,因此我需要最大限度地保护它...

Cha*_*mal 1

您可以考虑以下步骤,

  1. 有公钥
  2. 使用时间戳加密密钥
  3. 发送带有时间戳的加密密钥
  4. 使用相同的时间戳对 API 中的密钥进行加密
  5. 比较两个键。
  6. 检查时间戳与系统时间。