webapi框架搭建-安全机制(一)

前言

  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的生命周期。如下图。

原文地址:https://www.cnblogs.com/shengyu-kmust/p/8283383.html

时间: 2024-10-10 07:44:02

webapi框架搭建-安全机制(一)的相关文章

webapi框架搭建-安全机制(三)-基于角色的权限控制

webapi框架搭建系列博客 上一篇已经完成了"身份验证",如果只是想简单的实现基于角色的权限管理,我们基本上不用写代码,微软已经提供了authorize特性,直接用就行. Authorize特性的使用方法 配置Authorize 比较简单,直接上代码 using System.Collections.Generic; using System.Net.Http; using System.Security.Claims; using System.Web.Http; using we

webapi框架搭建系列博客

webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin webapi框架搭建-依赖注入之autofac webapi框架搭建-日志管理log4net webapi框架搭建-webapi异常处理 原文地址:https://www.cnblogs.com/shengyu-kmust/p/8279300.html

WebApi框架搭建(一)集成Swagger

概要: 1.安装包 2.插入代码:Startup.cs 3.创建项目XML注释文档 4.配置默认启动打开Swagger 过程: 1.安装包 Swashbuckle.AspNetCore 2.插入代码:Startup.cs public void ConfigureServices(IServiceCollection services) { services.AddControllers(); // 注册Swagger服务,声明一个或多个文档 services.AddSwaggerGen(c =

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(0) - 目录概述

概述 博主自毕业后,进公司就一直是以ASP.NET MVC 5.0 + MySQL 进行项目开发,在项目也使用了很多常用功能,如 WCF.SignalR.微信公众号API.支付宝API.Dapper等等,前端是大杂烩,如:Bootstrap.AmazeUI.EasyUI.Light7.WeUI等等.其实对于我们公司的项目来说,技术栈虽说不庞大,但五脏俱全,而且基于这一套技术,开发速度有保证.但是,作为一个有梦想的程序猿,必须与时俱进,因此无意中接触了.Net Core 2.0.听说它是开源的?它

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(4) - EF Core CodeFirst 数据库创建

概述 在 基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入 一文中,我们介绍如何快速以CodeFirst快速搭建数据库,这一章,我们来完善一下创建数据库中可以添加的验证与约束. 微软爸爸官方文档:Entity Framework Core 数据库操作 (1) 数据库迁移  add-migration [任一名称,须唯一] (2) 更新数据库  update-database (3) 删除数据库迁

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入

概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 微软爸爸官方文档:使用新数据库在 ASP.NET Core 上开始使用 EF Core    数据库表字段命名规范 步骤 1. 右击 Entity 项目,点击"管理NuGet程序包" 2. 安装以下三个包 Microsoft.EntityFrameworkCore     安装版本:2.1.0 Microsoft.Entity

社会化海量数据采集爬虫框架搭建

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前.如何能够做到所见即所得的无阻拦式采集.如何快速把不规则页面结构化并存储.如何满足越来越多的数据采集还要在有限时间内采集.这篇文章结合我们自身项目经验谈一下. 我们来看一下作为人是怎么获取网页数据的呢? 打开浏览器,输入网址url访问页面内容. 复制页面内容的标题.作者.内容. 存储到文本文件或者exc

领域层框架搭建

领域层框架搭建 根据前面对领域驱动设计概念以及一些最佳实践的理解,领域模型是系统最核心的部分,我们还是采用前面销售订单的例子,这个案例系统的核心构建就从领域层开始.领域层框架搭建主要完成两个任务: 1.领域模型的建立,聚合与聚合根的确定,关系的确定. 2.建立支持DDD理论的领域层接口. 这里先上代码图,再详细讲每个部分的主要功能: 1.Model中主要确定了领域对象,聚合与聚合根,关联关系等,我们这里采用的是EF 的Model First建模,你也可以采取Code First.如下图: 2.A

SSM框架搭建web服务器实现登录功能(Spring+SpringMVC+Mybatis)

初学java EE,虽然知道使用框架会使开发更加便捷高效,但是对于初学者来说,感到使用框架比较迷惑,尤其是各种jar包的引用.各种框架的配置.注解的使用等等. 最好的学习方法就是实践,于是下载了一个现成的DEMO,通过简单的修改先成功在自己电脑上跑起来,然后再逐个文件进行分析学习,最终才能从总体的高度上掌握框架的运行机制和配置方法,这样才能在实际运用中灵活配置,不会再局限于示例框架中. SSM框架搭建流程 SSM框架Web程序的流程 上面链接总结的流程很好,但是该流程没有加入DAO这一层,经过分