`

HTTP协议 (二) 基本认证

 
阅读更多

http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别。 桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何身份识别呢?

 

阅读目录

  1. 什么是HTTP基本认证
  2. HTTP基本认证的过程
  3. HTTP基本认证的优点
  4. 每次都要进行认证
  5. HTTP基本认证和HTTPS一起使用就很安全
  6. HTTP OAuth认证
  7. 其他认证
  8. 客户端的使用

 

什么是HTTP基本认证

桌面应用程序也通过HTTP协议跟Web服务器交互, 桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication)

当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图

 

假如用户名密码错误的话, 服务器会返回401 如下图

 

HTTP基本认证的过程

第一步:  客户端发送http request 给服务器, 

第二步:  因为request中没有包含Authorization header,  服务器会返回一个401 Unauthozied 给客户端,并且在Response 的 header "WWW-Authenticate" 中添加信息。

 

第三步:客户端把用户名和密码用BASE64编码后,放在Authorization header中发送给服务器, 认证成功。

第四步:服务器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端

 

使用Fiddler Inspectors 下的Auth 选项卡,可以很方便的看到用户名和密码:

 

HTTP基本认证的优点

HTTP基本认证,简单明了。Rest API 就是经常使用基本认证的

 

每次都要进行认证

http协议是无状态的, 同一个客户端对 服务器的每个请求都要求认证

 

HTTP基本认证和HTTPS

把 "用户名+冒号+密码" 用BASE64编码后的string虽然用肉眼看不出来, 但用程序很容易解密,上图可以看到Fiddler就直接给解密了。 所以这样的http request 在网络上,如果用HTTP传输是很不安全的。 一般都是会用HTTPS传输, HTTPS是加密的, 所以比较安全.

 

HTTP OAuth认证

OAuth 对于Http来说,就是放在Authorization header中的不是用户名密码, 而是一个token.
微软的Skydrive 就是使用这样的方式, 如下图
 

 

其他认证

除了基本认证(Basic Authentication), 还有摘要认证 digest authentication, WSSE(WS-Security)认证
 
 

客户端的使用

客户端如果要跟“使用基本认证的网站”交互。 非常很简单,把用户名密码 加在Authorization header中就可以了。
 
C#
string url = "https://testsite";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
NetworkCredential nc = new NetworkCredential("username", "password");
req.Credentials = nc;

 

分享到:
评论

相关推荐

    一种新的认证邮件协议

    #### 二、认证邮件协议的关键性质 一个有效的认证邮件协议至少需具备以下三个关键性质: 1. **发方的非否认**:接收方必须能够证明邮件确实是发送方发出的,这通常通过数字签名等技术实现,确保发送方不能否认自己...

    TCP简单用户认证协议

    TCP简单用户认证协议是网络通信中一种常见的安全机制,它...但是,TCP简单用户认证协议对于理解基本的网络认证概念和C#网络编程来说是一个很好的起点。通过这个基础,你可以进一步学习和掌握更复杂的安全协议和技术。

    人脸识别一体机HTTP接口协议_v1.34.pdf

    该协议定义了人脸识别一体机设备与外部系统之间的数据交互规则,涵盖了设备的基本信息、身份认证、音频设置、开门条件等多个方面。 人脸识别一体机HTTP接口协议概述 人脸识别一体机HTTP接口协议_v1.34是基于HTTP...

    The security protocols library digest 安全加密认证协议大全

    #### 二、安全加密认证协议基础知识 在深入探讨具体协议之前,我们首先需要了解一些基本概念: - **加密**:通过算法将原始数据转换成密文的过程。 - **认证**:验证用户身份的过程。 - **安全协议**:用于保护...

    毕业设计:python WEB 服务统一身份认证协议设计与实现(源码 + 数据库 + 说明文档)

    毕业设计:python WEB 服务统一身份认证协议设计与实现(源码 + 数据库 + 说明文档) 第2章 系统分析 9 2.1可行性分析 9 2.1.1技术可行性 9 2.1.2操作可行性 9 2.1.3经济可行性 9 2.2设计的基本思想 9 2.3基础功能...

    HTTP协议中文版

    通过这些知识点,读者可以对HTTP协议有一个全面的认识,从基本概念到实际操作,再到标准化流程和协议的特性,都会有详细的了解。这些内容对于网络开发人员、服务器管理人员以及任何需要深入理解互联网传输协议的人员...

    基于HTTP协议的开发接口

    以上就是关于“基于HTTP协议的开发接口”的一些关键知识点,涵盖了HTTP协议的基本原理、接口设计的要素以及安全性等方面。在实际开发中,开发者需要结合具体的业务场景灵活运用这些知识,以创建高效、可靠的接口。

    DAHUA大华摄像头HTTP协议API

    标题中的“DAHUA大华摄像头HTTP协议API”意味着文档提供的是大华品牌摄像头产品通过HTTP协议交互的API(应用程序编程接口)的详细说明。文档属于版本1.0,意味着这是API规范的初始版或者是某个产品的特定版本。由于...

    带basic认证的http get协议,C#

    本文将深入探讨如何在C#编程语言中实现带有基本认证(Basic Authentication)的HTTP GET请求,同时处理返回的JSON数据。 HTTP GET请求是HTTP协议中最简单也最常用的方法之一,它用于从服务器获取资源。然而,在访问...

    HTTP协议详细解析

    HTTP协议详解 HTTP/1.0 (RFC1945) 根据基本的WEB需求,定义了请求/回应格式、媒体类型、用户认证等标准。无连接。 HTTP/1.1 (RFC2616 ) 打开密码aaa

    Git 的 HTTP 协议实现 Grack.zip

    1. **认证管理**:Grack能够集成多种身份验证机制,例如基于HTTP的基本认证、OAuth或者与 LDAP 服务器配合的认证,确保只有授权用户可以访问Git仓库。 2. **权限控制**:通过Grack,可以对用户进行细粒度的权限管理...

    http.rar_HTTP_HTTP协议_http encapsulation

    "带密码"可能表示这个封装库支持HTTP的基本认证或者其他形式的身份验证机制,为网络通信提供了一定的安全保障。 在标签中,我们看到了"HTTP协议"、"http_encapsulation",这些都是与HTTP协议和封装相关的关键词。...

    S/KEY协议的简单模拟(C语言)

    不过,对于学习密码学的学生来说,这个简单的模拟可以帮助理解S/KEY协议的基本概念,并且可以通过修改`rand()`为更安全的随机数生成方法来提高安全性。 总的来说,S/KEY协议提供了一种相对安全的身份验证机制,尤其...

    HTTP协议详解.pdf

    1. **基础**:介绍HTTP协议的基本概念和技术背景。 2. **协议分析的优势**:利用HTTP分析器检测网络攻击。 3. **Content-Length限制漏洞**:可能导致拒绝服务攻击的情况。 4. **利用HTTP特性进行拒绝服务攻击**:...

    基于区块链技术的RFID安全认证协议.pdf

    本文提出的基于区块链技术的RFID安全认证协议,旨在解决传统RFID系统中基于中心化数据库的安全认证协议存在的数据丢失、篡改等问题。接下来,我们将深入分析文章中提出的关键技术和方法。 1. **RFID技术的安全问题*...

    实验名称点到点协议PPP配置实验

    实验中,我们将学习如何配置 PPP 协议的 PAP 认证和 CHAP 单向认证。实验步骤包括路由器基本配置、配置接口封装为 PPP、配置 PAP 认证和 CHAP 认证等。 在实验中,我们首先需要进行路由器基本配置,包括配置设备名...

    HTTP协议.zip

    HTTPS是在HTTP基础上添加了SSL/TLS协议,提供加密通信和身份认证,保障数据传输的安全性。HTTPS是现今网页安全的主流标准。 **七、HTTP缓存机制** HTTP协议支持缓存,通过Cache-Control、ETag、Last-Modified等...

    java实现HTTP 基本认证 (Basic Authentication)

    java实现HTTP 基本认证 (Basic Authentication) 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息。 但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用 HTTP 基本认证。 下面来看看一...

Global site tag (gtag.js) - Google Analytics