`

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;

 

分享到:
评论

相关推荐

    毕业设计: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/1.0 (RFC1945) 根据基本的WEB需求,定义了请求/回应格式、媒体类型、用户认证等标准。无连接。 HTTP/1.1 (RFC2616 ) 打开密码aaa

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

    老师自己总结的,从老师哪里要来,基本涵盖了全部经典的安全认证协议如RPC X509 等等等等 讲解非常清楚 并将每个协议的缺陷以及改进措施都讲到了。推荐安全专业的同学可以用来做为快速手册用 英文的 但是用词简单

    论文研究-基于身份的增强三方认证密钥协商协议.pdf

    现有的三方认证密钥协商协议安全性低且计算开销较大,提出一种基于身份的增强三方认证密钥协商协议。新协议在实现密钥协商基本安全属性的同时,利用短签名和时间戳技术进一步提高安全性。分析表明,增强协议能满足...

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

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

    CCNA工程师认证考试官方教材

    1.5 认证目标1.05:上层协议 18 1.6 认证目标1.06:Cisco路由器、交换机 和集线器 18 1.7 认证目标1.07:配置Cisco交换机 和集线器 20 1.8 认证总结 20 1.9 2分钟练习 22 1.10 自我测试 23 第2章 从Cisco IOS软件...

    论文研究-可证明安全的基于RSA的远程用户口令认证协议.pdf

    身份认证是确保信息系统安全的基本手段,基于RSA的认证协议由于实用性较强而成为近期研究热点.讨论了Xie等提出的一个基于RSA的双因子远程用户认证协议,指出该协议不能抵抗...

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

    计算机网络——HTTP协议实验报告 第一关:HTTP 基本请求与应答 第二关:HTTP 协议缓存的响应分析 第三关:HTTP 协议对长文件的处理 第四关:对嵌入对象网页处理 第五关:HTTP认证

    一种双层/双向认证的随机Hash锁RFID安全协议

    在分析已有Hash锁安全协议的执行过程及优缺点的基础上,提出了一种将双层认证与双向认证相结合的随机Hash锁安全协议,分析了协议的基本思想,描述了协议的执行过程,对协议的性能分析表明,该协议符合低成本、高效率...

    基于自签名隐式证书的认证密钥协商协议研究.pdf

    用户的身份认证和数据的保密传输是物联网信息安全中最基本的需求,而物联网中的终端设备一般呈分布式设 置,大多数设备无人值守,因此需要有一个端到端的安全机制来保护物联网中的信息传输; 物联网终端受带宽、计算...

    s/key协议及部分加密算法

    自己设计的一个很简单的s/key协议的实现方法。

    CCNA工程师认证考试电子书.rar

    1.5 认证目标1.05:上层协议 18 1.6 认证目标1.06:Cisco路由器、交换机 和集线器 18 1.7 认证目标1.07:配置Cisco交换机 和集线器 20 1.8 认证总结 20 1.9 2分钟练习 22 1.10 自我测试 23 第2章 从Cisco IOS软件...

    zero proof_零知识证明的基本过程_ffs协议_Zero_

    可以实现FFS协议,进行完整的FFS协议认证过程,以及秘钥交互。

    wireshark各种网络协议抓包合集

    基本涵盖了各种常见协议的数据包,对于理解协议有很大的帮助。

    LDAP:轻量级目录访问协议

    LDAP 轻量级目录访问协议介绍了LDAP作为目前较普遍应用的访问媒介,介绍了基本概念和应用范围

    主机标识协议_HIP_研究综述

    T CP/ IP 协议一开始就没有考虑主机的移动和多宿主问题, 也没有提供对主机的安全性和认证机制. 主机标识协议( HIP) 成为同时解决主机移动、多宿主及安全问题的有效方案. 文本介绍了主机标识协议( HIP) 的体系结构及...

    java server

    HTTP1.1提供了一个基于口令基本认证方法,目前所有的WEB服务器都可以通过“基本身份认证”支持访问控制。在身份认证上,针对基本认证方法以明文传输口令这一最大弱点,补充了摘要认证方法,不再传递口令明文,而是将...

    http协议计算机网络实验报告

    认证和安全等方面的问题回答问题。 二、实验平台与实验设备(或实验环境) 实验平台在计算机上使用Wireshark软件,设备计算机 三、实验内容与实验步骤(如:任务、基本原理、软硬件设计、网络拓扑图、流程图、代码等)...

    无线传感器网络安全路由协议SNEP的分析与仿真实现.pdf

    :以提供可靠保密通信为目标的安全路由协议的分析是无线传感器网络安全基本研究领域之一.阐述了针对无线 传感器网络的攻击手段所采取的措施,研究了安全路由协议,重点研究了其中的传感网络加密协议(Sensor Network...

Global site tag (gtag.js) - Google Analytics