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中就可以了。

时间: 06-06

HTTP协议之基本认证的相关文章

HTTP协议 (二) --基本认证

HTTP协议 (二) 基本认证 http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别. 桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何身份识别呢? 什么是HTTP基本认证 桌面应用程序也通过HTTP协议跟Web服务器交互, 桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫H

基于X.509证书和SSL协议的身份认证过程实现(OpenSSL可以自己产生证书,有TCP通过SSL进行实际安全通讯的实际编程代码)good

上周帮一个童鞋做一个数字认证的实验,要求是编程实现一个基于X.509证书认证的过程,唉!可怜我那点薄弱的计算机网络安全的知识啊!只得恶补一下了. 首先来看看什么是X.509.所谓X.509其实是一种非常通用的证书,什么是证书?唉!这么说吧!当两个人需要进行远程通信而又不想让第三个人知道时就必须建立一种安全措施,因为看不到对方的脸,又不能通过电话直接询问对方,就得想点别的办法,比如我设计一个密码,让后发短信告诉你,这样当我们在网上交流之前就可以对一下密码,暗号之类的.确认后就可以证明你的身份了.这

asp.net MVC 使用wifidog 协议实现wifi认证

在网上看到的很多实现的wifidog 协议一般都是PHP 的,了解一下PHP 但是比较喜欢.net ,所以实现了简单的一个进行登录认证的功能 (好多协议中的功能目前没有实现) 1. 开发环境(vs2010 ) 2. 路由(支持wifidog协议的 ddwrt ) 3. 环境的配置 主要是进行路由的配置 截图如下: 注意红圈的部分这个我按照php 的配置 asp.net MVC 的配置如下: 端口 9999  authserver path  /login/ 4. MVC 项目布局: loginC

Https握手协议以及证书认证

1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以看成是:在安全通道内,对数据进行对称加密后传输.这样即使黑客打破了安全通道,还有一层数据加密.极大的保障了数据通信的安全性. 2. https的演化 我们将从http的不安全方面着手,通过三个场景的阐述,来说明https是怎么来的以及其基本原理 Round 1: 正常交流: “客户”->“服务器”:

Linux下基于HTTP协议带用户认证的GIT开发环境设置

Git 的访问可以采用 HTTP 或 SSH 协议安全的访问,通常我们使用 gitlib 进行 Web 管理,但是在 Linux 命令行开发环境下,基本都是使用 SSH 协议,只需要在 gitlib 里面配置好相应的 SSH Key 就可以. 由于现在开发环境的特殊情况,我们需要在 Linux 命令行开发环境下,不能使用 SSH 方式,而只能使用 HTTP 协议进行安全访问,并且需要对开发者进行认证,并且开发者在本地开发环境中的用户名和密码需要加密存储. 接下来我就简单介绍我们的开发团队是如何在

HTTPS协议、TLS协议、证书认证过程解析

一.HTTPS 协议 HTTPS协议其实就是HTTP over TSL,TSL(Transport Layer Security) 传输层安全协议是https协议的核心. TSL可以理解为SSL (Secure Socket Layer)安全套接字层的后续版本. TSL握手协议如下图所示 (注:图片来源于google图片) 在建立TCP连接后,开始建立TLS连接.下面抓包分析TLS握手过程,抓包图片来源于传输层安全协议抓包分析之SSL/TLS (自己没抓到这么完整的包,只能搬运过来了,摔) (1

http协议之digest认证实现

参考 http://blog.csdn.net/jszj/article/details/8918967 https://wenku.baidu.com/view/22be2dcf83d049649b6658ff.html http://blog.csdn.net/i_lovefish/article/details/9816783 md5.h #ifndef MD5_H #define MD5_H typedef struct { unsigned int count[2]; unsigned

LDAP-轻量级目录访问协议(统一认证)

参考资料 LDAP概念和原理介绍 我花了一个五一终于搞懂了OpenLDAP LDAP-Apache Directory Studio使用(创建DC.OU及用户) 原文地址:https://www.cnblogs.com/wangwangfei/p/10968637.html

企业级应用身份认证管理扫盲篇——协议

最近为国内银行客户设计新系统与现有系统的集成.关键之一在于登录认证.在了解现有系统的非标接口过程中不出意外地遇到了些困难. 类比个例子,现有系统是个插线板,要求新系统插头标准如下: 三平头,头长18mm宽9mm厚2mm, 三头中心点距圆心10mm, 上头平行圆心到头心线,下二头垂直圆心到头心线. 上述接口是美标,欧标,英标,或者中国标准? "什么?都不是?嗯--" 如此的例子在企业级应用的登录认证集成过程中总是会遇到的.IT发达的国家整体情况好很多,因为大多数实现都采用了业界通行的标准