我在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-然后网址 localhost:/ 98777 / Token ,传递用户名+密码+令牌
以这种方式,如果你在fiddler中调用它,它会返回一个标记:content-type: 应用程序/ x-WWW窗体-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/
这将返回所有员工的数据......它有效。
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>
问题? 问题是人们可以在IE / Chrome / FF中执行并打开开发人员工具,并查看javascript的来源并查看令牌。 然后在Fiddler / composer中执行代码并添加记录:(。
那为什么我需要一个令牌呢?
有人可以建议我错过哪一部分吗?人们可以看到令牌是否正常?
此应用程序将在Intranet中使用并由开发人员使用,因此我需要最大限度地保护它...
答案 0 :(得分:4)
人们可以看到令牌是否正常?
是的,这很正常。据我所知,令牌只包含身份信息,以及客户端无法修改的一些声明。这是唯一可以信赖的东西:身份。
服务器端,您必须检查(角色/权限/业务规则)与令牌身份对应的用户是否有权执行请求的操作。
永远不要依赖客户端UI的业务规则实施。始终仔细检查服务器端,您将是安全的。
答案 1 :(得分:0)
您可以考虑以下步骤,