ASP.NET Web API(二) 安全验证之使用HTTP基本认证

在前一篇文章ASP.NET Web API(一):使用初探,GET和POST数据中,我们初步接触了微软的REST API: Web API。

我们在接触了Web API的后就立马发现了有安全验证的需求,所以这篇文章我们先来讨论下 安全验证一个最简单的方法:使用HTTP基本认证。

HTTP基本认证原理

在HTTP协议进行通信的过 程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份认证的方法,当一个客户端 向HTTP服务器进行数据请求时,如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及 密码进行验证,以决定用户是否合法。

其基本的实现方式是:

客户端在用户输入用户名及密码 后,将用户名及密码以BASE64加密,加密后的密文将附加于请求信息中,如当用户名为Parry,密码为123456 时,客户端将用户名和密码用":"合并,并将合并后的字符串用BASE64加密,并于每次请求数据时 ,将密文附加于请求头(Request Header)中。

HTTP服务器在每次收到请求包后,根据协议取得客户 端附加的用户信息(BASE64加密的用户名和密码),解开请求包,对用户名及密码进行验证,如果用户名及密 码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及 密码。

Web API使用HTTP基本认证进行安全验证

我们还是基于前一篇文章的示例进行测试。

首先我 们基于System.Web.Http.AuthorizeAttribute类实现一个HTTP基本认证的类,并实现两个方法: OnAuthorization和HandleUnauthorizedRequest。

添加一个类HTTPBasicAuthorizeAttribute,继承于 System.Web.Http.AuthorizeAttribute,先来实现OnAuthorization。

public override void 

OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
 {
     if (actionContext.Request.Headers.Authorization != null)
     {
         string userInfo = Encoding.Default.GetString(Convert.FromBase64String

(actionContext.Request.Headers.Authorization.Parameter));
         //用户验证逻辑
         if (string.Equals(userInfo, string.Format("{0}:{1}", "Parry", "123456")))
         {
             IsAuthorized(actionContext);
         }
         else
         {
             HandleUnauthorizedRequest(actionContext);
         }
     }
     else
     {
         HandleUnauthorizedRequest(actionContext);
     }
 }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索密码
, http
, web api
, 请求api
, 用户名
, 认证
, AuthorizeAttribute
, 请求加密
, AuthorizeAttribute 
, 基本
, ActionContext
, 基本安全
HTTP认证
,以便于您获取更多的相关知识。

时间: 2024-10-31 12:17:59

ASP.NET Web API(二) 安全验证之使用HTTP基本认证的相关文章

【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API

原文 [ASP.NET Web API教程]2.1 创建支持CRUD操作的Web API 2.1 Creating a Web API that Supports CRUD Operations2.1 创建支持CRUD操作的Web API By Mike Wasson | January 28, 2012作者:Mike Wasson | 日期:2012-1-28 本文引自:http://www.asp.net/web-api/overview/creating-web-apis/creating

【ASP.NET Web API教程】4.3 ASP.NET Web API中的异常处理

原文:[ASP.NET Web API教程]4.3 ASP.NET Web API中的异常处理 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内容. Exception Handling in ASP.NET Web API ASP.NET Web API中的异常处理 本文引自:http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling

购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证

原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证   chsakell分享了前端使用AngularJS,后端使用ASP.NET Web API的购物车案例,非常精彩,这里这里记录下对此项目的理解. 文章:http://chsakell.com/2015/01/31/angularjs-feat-web-api/http://chsakell.com/2015/03/07/angularjs-feat-web-ap

Asp.Net Web API 2第十二课——Media Formatters媒体格式化器

原文:Asp.Net Web API 2第十二课--Media Formatters媒体格式化器 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本教程演示如何在ASP.NET Web API中支持额外的媒体格式. Internet Media Types--Internet的媒体类型 媒体类型,也叫做MIME类型,标识了一片数据的格式.在HTTP中,媒体类型描述了消息体

Asp.Net Web API 2第十五课——Model Validation(模型验证)

原文:Asp.Net Web API 2第十五课--Model Validation(模型验证) 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文参考链接文章地址http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api 当客户端发送数

【ASP.NET Web API教程】6.4 模型验证

原文:[ASP.NET Web API教程]6.4 模型验证 本文是Web API系列教程的第6.4小节 6.4 Model Validation 6.4 模型验证 摘自:http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api By Mike Wasson|July 20, 2012 作者:Mike Wasson | 2012-6-20 When a clie

如何让ASP.NET Web API的Action方法在希望的Culture下执行

在今天编辑推荐的<Hello Web API系列教程--Web API与国际化>一文中,作者通过自定义的HttpMessageHandler的方式根据请求的Accep-Language报头设置当前线程UI Culture的方式来解决Localization的问题.如果你对ASP.NET Web API的执行机制有足够了解的话,你会发现实际上有很多种解决方案.不过这些解决方案都不够完美,原因很简单:ASP.NET Web API的整个框架均采用基于Task的并行编程模式,所以每个可扩展组件均可以

Self Host模式下的ASP. NET Web API是如何进行请求的监听与处理的?

构成ASP.NET Web API核心框架的消息处理管道既不关心请求消息来源于何处,也不需要考虑响应消息归于何方.当我们采用Web Host模式将一个ASP.NET应用作为目标Web API的宿主时,实际上是由ASP.NET管道解决了这两个问题.具体来说,ASP.NET自身的URL路由系统借助于HttpControllerHandler这个自定义的HttpHandler实现了ASP.NET管道和ASP.NET Web API管道之间的"连通",但是在Self Host寄宿模式下,请求的

ASP.NET Web API路由系统:路由系统的几个核心类型

虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除了对System.Web.dll程序集的依赖,实现在ASP.NET Web API框架中的URL路由系统亦是如此.也就是说,ASP.NET Web API核心框架的URL路由系统与ASP.NET本身的路由系统是相对独立的.但是当我们采用基于Web Host的方式(定义在程序集System.Web.H