webapi接口是开放给外部使用的,包孕接口的地点,传参的规范,还有返回功效的说明。正因为接口的开放性,使得接口的安适很重要。试想一下,用抓包工具(如fiddler),甚至浏览器获取到接口的规范后(甚至可以猜到接口的其它规范),如果接口没有做”安适“这一道防火墙,任何人都可以挪用接口来获取及提交数据,,这真是太可怕了。17年我卖力一个气象类项目的开发,此中有些成果是我们无法完成但甲方要求必需有的成果,并给我们展示了实现该成果的一个产品。后面通过对此产品的fiddler抓包分析,了解了该产品是通过接口向apps端供给数据,而所有的接口竟然都没有加密,于是这个项目基于此成果的实现根基上都是通过挪用该产品的接口实现,对我来说是省去了很大的开发本钱,但对付阿谁产品的公司来说是损掉了有价值的数据。
对付webapi方面的安适,可写的对象太多了,且asp.net webapi及asp.net core webapi在安适方面也有些差异。我只对”webapi框架搭建“项目里用到的技术做一些说明。后续的博客会对每一个技术的实现做详细的描述。
JWT技术考虑http的无状态性,且又必需让处事器能区分每次的http请求是”谁“发出的,但又不想在http请求里携带很多信息(尽量每次的请求包对照小),我给与token技术。即将用户的根基信息,如用户id,用户的角色等进行加密,并附在http请求头里。处事器端只要对token进行解密后就能知道是谁倡议的请求。之前我是本身生成token,规范token的加密/解密法则和token里存储的信息(如一个user实体的信息),后面发明这一技术已经有一个法则,那就是jwt。jwt参考如下网站:https://jwt.io/。
webapi安适微软对webapi的安适拆分为authentication和authorization,authentication的职责是解决”用户是谁“的问题,而authorization的职责是解决”是否有权限“的问题。通过jwt技术,可以解决”用户是谁“的问题,通过”基于角色的权限控制“可以解决”是否有权限“的问题。后续的博客会详细说明。
安适的”切入点“我们必定不想在每个接口里都去写一段”安适代码“,而是用aop的思想,在整个http请求的生命周期中做为一个切面插入到生命周期的某个点上。所以先让我们了解下webapi的生命周期。如下图。