`
yangmeng_3331
  • 浏览: 91820 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

HTTP协议(二):基本认证

阅读更多
本文转自:http://www.cnblogs.com/TankXiao/archive/2012/09/26/2695955.html
http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别。 桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何身份识别呢?
什么是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;

Linux下的curl
curl -u username:password https://testsite/
分享到:
评论

相关推荐

    毕业设计: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基础功能...

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议(高清pdf文字版)

    书中会介绍NNTP的基本工作原理,包括服务器和客户端的角色,文章的发布、检索、存档和删除流程,以及NNTP的扩展特性,如多线程传输、安全认证等。通过NNTP的学习,读者可以理解Usenet新闻系统的运作机制。 4. UNIX...

    一种新的认证邮件协议

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

    HTTP协议中文版

    - 通用性:HTTP不仅可以用于超文本用途,还可以用于其他如名称服务器和分布式目标管理系统等任务。 - 无状态性:服务器不会保存任何关于客户端请求的状态信息,这样可以减少服务器的资源消耗,提升网络的扩展性。 - ...

    网络技术实验:PPP协议基本配置.doc

    【网络技术实验:PPP协议基本配置】 实验7的目的是学习和掌握PPP(Point-to-Point Protocol)协议的基本配置,这是在网络系统建设与运维中至关重要的一个环节。PPP协议是一种广泛用于点对点通信的链路层协议,尤其...

    Modern Cryptography : Theory and Practice

    第十二章:认证协议:实践篇 第十三章:公钥密码的认证框架 第十四章:公钥密码体制的形式化强安全性定义 第十五章:可证明安全的有效公钥密码体制 第十六章:强可证明安全的数字签名方案 第十七章:分析认证协议的...

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

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

    实验:基于PAP认证的公司与分部安全互联.docx

    1. **配置PPP的PAP认证:** 学习如何在PPP协议中启用PAP认证功能,以便在连接建立时进行身份验证。 2. **对端配置PAP验证:** 了解如何在远程设备上设置相应的PAP验证参数,确保双方能够正确地进行身份验证。 #### ...

    2020年计算机三级网络技术知识点梳理:身份认证.docx

    首先,我们来看身份认证的三种基本方法: 1. **口令认证**:这是最常见也是最传统的认证方式,用户需要输入预先设定的密码。为了增强安全性,系统通常限制连续尝试错误登录的次数。此外,一次性口令方案如S/Key协议...

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

    * 身份认证:协议使用基于Token的身份认证机制,所有的请求都需要在Authorization头中携带Token信息。 具体功能接口 人脸识别一体机HTTP接口协议_v1.34定义了多个具体的功能接口,包括: * 音频设置接口:提供...

    SIP会话初始协议技术要求(一二三部分).zip

    **第一部分:基本的会话初始协议** 这部分主要讲解了SIP的基本概念、结构以及工作流程。SIP是一种基于文本的协议,使用UDP或TCP作为传输层协议。它的核心是请求消息和响应消息,如INVITE、ACK、BYE、CANCEL等。SIP...

    DAHUA大华摄像头HTTP协议API

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

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

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

    计算机网络-HTTP协议实验报告

    #### 第二关:HTTP协议缓存的响应分析 **实验目的:** - 了解HTTP协议中与缓存相关的字段。 - 掌握WEB缓存访问过程以及机制。 **实验内容与操作步骤:** 1. **背景知识与所需技术:** - **HTTP缓存机制:** HTTP...

    实验:基于PPPoE认证的公司出口配置.docx

    2. **PPP会话阶段**:在发现阶段成功后,客户端与服务器之间通过PPP协议进行身份验证(如CHAP或PAP),然后协商网络层协议(如IPCP)和连接参数,最后建立PPP会话。 **四、实验步骤** 1. 使用网络模拟器eNSP构建...

    TCP简单用户认证协议

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

    http 协议

    ### HTTP协议头详解 HTTP(Hypertext Transfer Protocol)是一种应用层协议,主要用于从Web服务器传输超文本到本地浏览器等应用程序。HTTP协议头是HTTP请求和响应中的一个重要组成部分,它们携带了关于HTTP消息的...

Global site tag (gtag.js) - Google Analytics