HTTP协议之基本认证

2023-10-31

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/

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在 Restangular 中发送 GET 参数

    我在用着矩形 https github com mgonto restangular在我的项目和早期的项目中 这段代码对于检索对象数组效果很好 var params name Stack surname Overflow var servi
  • PHP 是否有与 Java 的 RequestDispatcher.forward 等效的功能?

    在 Java 中我可以编写一个非常基本的 JSPindex jsp像这样 这样做的效果是用户请求index jsp 或者只是包含目录 假设index jsp是目录的默认文档 将会看到home action没有浏览器重定向 即 forward
  • 减少1000张图片的HTTP请求?

    我知道这个问题可能听起来有点疯狂 但我想也许有人会想出一个聪明的主意 假设您在一个 HTML 页面上有 1000 个缩略图 图像大小约为5 10 kb 有没有办法在单个请求中加载所有图像 以某种方式将所有图像压缩到一个文件中 或者您对该主题
  • Vertx HttpClient getNow 不工作

    我的 vertx HttpClient 有问题 下面的代码显示使用 vertx 和纯 java 测试 GET Vertx vertx Vertx vertx HttpClientOptions options new HttpClientO
  • 通过 HTTPS 加载页面但请求不安全的 XMLHttpRequest 端点

    我有一个页面 上面有一些 D3 javascript 该页面位于 HTTPS 网站内 但证书是自签名的 当我加载页面时 我的 D3 可视化效果不显示 并且出现错误 混合内容 页面位于 https integration jsite com
  • 使用特定 HTTP 方法链接到页面 (DELETE)

    如何像 Rails 那样链接到页面并让浏览器使用 DELETE 方法调用它 我试过 a href DELETE ME a 但不起作用 我使用 Node js 所以我可以用它来处理 DELETE 方法 你不能 链接只会触发 GET 请求 您可
  • Fiddler 会话对象文档

    在哪里可以找到有关 Fiddler Session 对象的属性和方法的文档 我正在 Fiddler 中创建一些自定义规则 js 以进行故障排除 安装脚本编辑器并单击 视图 gt 类资源管理器 http www telerik com dow
  • Chrome 开发工具无法显示响应,即使返回的内容具有标题 Content-Type:text/html;字符集=UTF-8

    为什么我的 Chrome 开发者工具显示 无法显示响应数据 当返回的内容是text html类型时响应 在开发者工具中查看返回的响应的替代方法是什么 我认为只有当您选中 保留日志 并且您在导航离开后尝试查看先前请求的响应数据时 才会发生这种
  • NEST 1.0:请参阅 Fiddler 上的请求

    我刚刚更新到 NEST 1 0 我在远程服务器 不是本地主机 上有 Elastic Search 通常我在使用 Fiddler 发送和接收请求时没有任何问题 更新后 bammm 没有检测到任何请求 但我的应用程序发出这些请求没有任何问题 你
  • ASP.NET 中 HTTP 缓存相关标头的有效含义

    我正在 ASP NET 2 0 中开发一个 Web 应用程序 其中涉及通过资源处理程序 ashx 提供图像 我刚刚实现了处理缓存标头和条件 GET 请求 这样我就不必为每个请求提供所有图像 但我不确定我是否完全理解浏览器缓存发生了什么 图像
  • 面向服务的架构 - AMQP 或 HTTP

    一点背景 非常大的整体 Django 应用程序 所有组件都使用相同的数据库 我们需要分离服务 以便我们可以独立升级系统的某些部分而不影响其余部分 我们使用 RabbitMQ 作为 Celery 的代理 现在我们有两个选择 使用 REST 接
  • $http.get() 与 JSON 数据

    我正在编写一个服务器应用程序 并希望客户端使用正文中的数据来参数化我的 GET 方法 如下所示 http v GET http localhost 3000 url text 123 foo bar GET url HTTP 1 1 Acc
  • Node.js:server.setTimeout、server.timeout 和 server.keepAliveTimeout 之间有什么区别

    官方文档是here https nodejs org api http html http server settimeout msecs callback server setTimeout 中没有提及有关服务下一个请求的信息 所以我认为
  • 如何在flutter项目中使用http拦截器?

    我必须向我的所有 Api 添加标头 有人告诉我为此使用 http 拦截器 但我无法理解如何做到这一点 因为我是颤振的新手 谁能帮我举个例子吗 您可以使用http 拦截器 https pub dev packages http interce
  • 服务器响应中的“连接:保持活动状态”

    我正在尝试建立从 Silverlight 应用程序到 Apache 服务器托管的 PHP 页面的 HTTP 持久连接 即无需为每个 HTTP 请求创建新的 TCP 连接 为此 我需要网络服务器发送其 HTTP 响应 并将 Connectio
  • 我可以使用 HTTP 范围标头“有意”加载部分文件吗?

    我正在研究 HTTP 范围标头 specs http www w3 org Protocols rfc2616 rfc2616 sec14 html sec14 16 据我了解 我可以设置文件的字节范围ala 0 199 2000 200
  • WCF WebHttp 混合身份验证(基本和匿名)

    所有这些都与 WebHttp 绑定有关 托管在自定义服务主机中 IIS 目前不是一个选项 我已经实现了自定义 UserNamePasswordValidator 和自定义 IAuthorizationPolicy 当我将端点的绑定配置为使用
  • 最适合“正在进行的作业”的 HTTP 状态代码

    向客户端提供的最合适的 HTTP 状态代码是什么 表示 您的请求很好 但仍在进行中 请稍后在完全相同的位置回来查看 例如 假设客户端提交初始请求以启动繁重的查询 服务器立即返回一个 URL 客户端可以定期轮询该 URL 以获取结果 如果客户
  • Angular 2 - Http - 正确忽略空结果

    我有很多处理请求并简单返回 200 的 REST 端点 我注意到将结果映射为错误json 如果我尝试不进行任何类型的映射 我会看到浏览器警告它无法解析 XML 由于不返回任何内容是很常见的 我很好奇我应该如何处理响应 这是一个基本的代码示例
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future

随机推荐

  • 计算机专业数学建模结课论文,数学建模论文范文2篇

    利用数学知识解决现实生活的具体问题了成为当今数学界普遍关注的内容 利用建立数学模型解决实际问题的数学建模活动也应运而生了 下面是秋天网小编为大家整理的数学建模论文 供大家参考 数学建模论文范文一 初中数学建模教学研究 数学 源于人们对生产与
  • Snapd出错记录

    突然断电导致无法访问所有应用商店安装的应用 即snapd出问题 访问systemctl status snapd service无法访问 如图 查阅了很多资料 有用的只有重新安装 重新安装snapd sudo apt autoremove
  • 常用限流算法的应用场景和实现原理

    在高并发业务场景下 保护系统时 常用的 三板斧 有 熔断 降级和限流 今天和大家谈谈常用的限流算法的几种实现方式 这里所说的限流并非是网关层面的限流 而是业务代码中的逻辑限流 限流算法常用的几种实现方式有如下四种 计数器 滑动窗口 漏桶 令
  • 关于torch.jit.trace在yolov8中出现的问题

    关于torch jit trace在yolov8中出现的问题 疑问 1 为什么yolov8不能直接torch jit trace 需要经过图像检测后才能 且检测后self net发生变化 而2中的第一版yolov5可以直接torch jit
  • Qt翻金币小游戏详细教程(内涵所有源码、图片资源)

    一 项目简介 翻金币项目是一款经典的益智类游戏 我们需要将金币都翻成同色 才视为胜利 首先 开始界面如下 点击start按钮 进入下层界面 选择关卡 在这里我们设立了20个关卡供玩家选择 假设我们点击了第1关 界面如下 如果想要赢取胜利 我
  • django项目2022

    django项目 pip install i https pypi tuna tsinghua edu cn simple django 2 2 3 pip install i https pypi tuna tsinghua edu cn
  • RNA-seq——上游分析练习2(数据下载+trim-galore+hisat2+samtools+featureCounts)

    目录 软件安装 新建文件夹 一 下载数据 二 质控过滤 1 数据质量检测 2 数据质量控制 3 对处理后的数据再次QC 三 序列比对 1 hisat2比对 2 flagstat检查一下结果 四 featureCounts定量 写在前面 本文
  • YOLOv3手部检测

    YOLOv3手部检测 开源项目地址 https codechina csdn net EricLee yolo v3 该项目包含 YOLOv3和YOLOv3 tiny的手部检测 脸部检测 人检测 安全帽检测 交通工具检测 本文测试了手部检测
  • python之重复值(duplicated)

    Duplicated函数功能 查找并显示数据表中的重复值 这里需要注意的是 当两条记录中所有的数据都相等时duplicated函数才会判断为重复值 duplicated支持从前向后 first 和从后向前 last 两种重复值查找模式 默认
  • 磁控可变电感制作

    主电感的制作 绕制电感 主电感的绕组直接绕在骨架上 一共19匝 根据流过的电流大小选择所用利兹线的股数 仿真结果显示最大电流为3A左右 利兹线若需要耐压高可以买这种包了膜的 但是厚一点 不利于绕制 直接用普通不包膜的即可 然后将两个线接到接
  • C语言-蓝桥杯-基础练习 分解质因数

    问题描述 求出区间 a b 中所有整数的质因数分解 输入格式 输入两个整数a b 输出格式 每行输出一个数的分解 形如k a1a2a3 a1 lt a2 lt a3 k也是从小到大的 具体可看样例 样例输入 3 10 样例输出 3 3 4
  • Python Pandas数据统计函数以及数据排序

    有如下一张表s3 1 汇总类统计 生成各项数字列的汇总数据 s3 describe s3 aqi max s3 aqi mi
  • Android优化总结

    目录介绍 1 OOM和崩溃优化 1 1 OOM优化 1 2 ANR优化 1 3 Crash优化 2 内存泄漏优化 2 0 动画资源未释放 2 1 错误使用单利 2 2 错误使用静态变量 2 3 handler内存泄漏 2 4 线程造成内存泄
  • Windows配置万德(Wind)量化接口

    原理 wind会在python的第三方库中安装一个属于wind的库 文章目录 步骤1 确定python的路径 步骤2 配置wind的接口 步骤3 检查配置 步骤4 使用python提取任意的wind数据 步骤1 确定python的路径 如果
  • css新特性 - contain

    属性介绍 隔离样式 布局和渲染 开发人员可以使用这个 contain 属性来限制指定的DOM元素和它的子元素同页面上其它内容的联系 我们可以把它看做一个iframe 跟iframe很相似 它能建立起一个边界 产生一个新的根布局 保证了它和它
  • JSon和Ajax

    JSON 什么是 JSON JSON JavaScript Object Notation 是轻量级的文本数据交换格式 主要用来web服务前后端传输数据 JSON 独立于语言 JSON 使用 Javascript语法来描述数据对象 但是 J
  • 百度网盘 php解析,【搬运】百度云盘下载地址解析工具 有点不完美!

    UserScript url home php mod space uid 170990 name url 百度网盘助手 author 有一份田 description 显示百度网盘文件的直接链接 突破大文件需要使用电脑管家的限制 url
  • [盘点]国内外语音识别行业现状

    原标题 盘点 国内外语音识别行业现状 OFweek机器人网讯 随着机器学习和人工智能的热闹 国内语音行业也可谓是百花齐放 尤其是最近几年 不仅涌现了很多国内外的小公司 而且巨头们也开始加速语音识别行业的布局 本文就详细盘点一番国内外的大型公
  • VS Code 代码中乱码问题

    打开vscode文件 一般看代码的时候 会有一些中文注释是乱码的问题 解决办法 第一步 打开文件 第二步 打开首选项 选择设置 第三步 搜索files autoGuessEncoding 选择 第四步重新打开代码文件 字符乱码问题解决
  • HTTP协议之基本认证

    http协议是无状态的 浏览器和web服务器之间可以通过cookie来身份识别 桌面应用程序 比如新浪桌面客户端 skydrive客户端 跟Web服务器之间是如何身份识别呢 阅读目录 什么是HTTP基本认证 HTTP基本认证的过程 HTTP