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;

Linux下的curl

curl -u username:password https://testsite/

附: HTTP协议 系列教程, (连载中, 敬请期待)

HTTP协议 (一) HTTP协议详解

HTTP协议 (二) 基本认证

HTTP协议 (三) 压缩

HTTP协议 (四) 缓存

HTTP协议 (五) 代理

HTTP协议 (六) 状态码详解

HTTP协议 (七) Cookie

HTTP协议 (二) 基本认证相关推荐

  1. apache添加ssl协议实现用户认证

    apache添加ssl协议实现用户认证 目标 1对服务器的访问由http改为https, 2仅有证书的客户端可以访问服务器, 3.通过服务器端的配置,可以停用某个客户端的证书. 一 Apache服务器 ...

  2. android http协议添加Authorization认证方式

      今天,简单讲讲android里如何使用http请求时在头部添加Authorization认证方式. 其实也很简单,之前需要做一个功能,在android去使用http访问设备,但是每次的访问 ...

  3. mooc-HTTP协议二

    文章目录 一.HTTP状态管理:Cookie与Session Cookie(服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie) Session 保存SessionID的方式 Sessio ...

  4. JHipster生成微服务架构的应用栈(二)- 认证微服务示例

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  5. Mozilla 宣布引入二步认证

    Mozilla承认,攻击者未经授权访问了它的bug跟踪系统Bugzilla,窃取了未披露的Firefox漏洞信息.为了降低未来Bugzilla的攻击风险,Mozilla宣布了新的安全措施:所有访问安全 ...

  6. 02-gitgitlab二次认证

    文章目录 01-git 应用 02-gitlab 使用 1.gitlab 开启二次认证&开启二次认证 (1)下载 FreeOTP 也可以是Goodle 认证 (2).二次认证遇到的坑 01-g ...

  7. Google Android EDLA协议及AER认证

    1.EDLA协议及AER认证介绍 企业设备许可协议(Enterprise Device Licensing Agreeement)EDLA: 随着市场的产品形态多样化,谷歌也根据发展的市场变化,推出了 ...

  8. 手机二要素认证接口怎么用?手机号姓名验证怎么操作?

    手机二要素认证接口起源于数字手机时代,二十一世纪初期,互联网络诞生了网上电商.金融.通讯.网吧等产业,开始实行实名认证制. 手机二要素验证主要用于国内三大通信运营商业务(包括:移动.联通.电信三大运营 ...

  9. 华翼宽带android客户端,电信推新产品“华翼宽带” 二次认证亮了

    [PConline 资讯]昨天刚说了运营商要对路由器下手,今天就有行动的了.有业内人士透露,北京电信将与歌华有线联合,面向家庭宽带用户推出了"华翼宽带"业务,其利用的是北京电信带宽 ...

最新文章

  1. 4.MATLAB基础编程操作——变量、常量、基础数学运算
  2. 2、前端环境搭建(19.04.12)
  3. 数据结构--稀疏矩阵的一种实现
  4. python基础list_Python基础4(list:列表)
  5. (1) 自定义分页采用jsp和Java实现
  6. oracle死锁优化,Oracle性能优化之LockContention(转)
  7. 论文阅读丨神经清洁: 神经网络中的后门攻击识别与缓解
  8. skynet 学习笔记-netpack模块(1)
  9. 求众数leetcode(169)+投票算法
  10. 共享上网掉线后的排错
  11. Windows 95 输入法编辑器
  12. 【JY】反应谱的详解与介绍
  13. IDEA统计项目代码量
  14. 日记侠:要赚钱千万别多想立刻开干
  15. 免费ftp软件下载,5款免费ftp软件下载工具
  16. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
  17. python做视频剪辑_视频自媒体人们,还用什么快剪辑,爱剪辑,几行python搞定一切...
  18. 印象笔记Markdown的使用方法
  19. gmail imap_阻止带有Gmail IMAP的Outlook在待办事项栏中显示重复的任务
  20. nexus私服知识概括

热门文章

  1. 解决pip无法安装bayes-opt报错:ERROR: Could not find a version that satisfies the requirement bayes-opt
  2. python中文人名识别(使用hanlp,LTP,LAC)
  3. 贪心算法求解TSP问题(python)
  4. 查看服务器是有有默认共享文件,服务器共享文件远程查看
  5. 服务器找不到硬盘如何解决方案,Linux云服务器磁盘不见了?解决方案在这里
  6. The history and design philosophy of Spring
  7. python接口自动化(九)--python中字典和json的区别(详解)
  8. 云服务器配置(jdk、tomcat、mysql)
  9. 又一家药企IPO被拒,原因竟然是……
  10. Appium 解决手势密码 (java篇)