当前位置: 首页 > news >正文

HTTP Basic Access Authentication Schema

HTTP Basic Access Authentication Schema

  • 背景
  • 介绍
  • 流程
  • 安全缺陷
  • 参考

背景

本文内容大多基于网上其他参考文章及资料整理后所得,并非原创,目的是为了需要时方便查看。

介绍

HTTP Basic Access Authentication Schema,HTTP 基本访问认证模式,是 HTTP 1.0 引入的一种 基于 challenge-response 认证机制的身份认证方案。

challenge-reponse:当客户端首次访问受保护资源时,服务器会向客户端发送一个 challenge,客户端根据 challenge 信息做出对应的 response

HTTP Basic Access Authentication 基于以下模型:客户端必须使用每个域(realm)对应的用户ID和密码进行认证。因此 HTTP Basic Access Authentication 包含三个关键要素:user ID(用户ID)、password(密码)、realm(域)。其中 realm 是服务器分配的一个字符串,用于区分受保护资源所属的不同域。只有当服务器能够验证请求URI对应域的用户ID和密码时,服务器才会为请求提供服务,没有其他可选的认证参数。

流程

HTTP Basic Access Authentication Schema

  1. 客户端请求访问受保护资源;
  2. 服务端接收到请求后,在请求头部(HTTP Request Headers)中未找到 Authorization,返回 401 Unauthorized,返回响应头(HTTP Response Headers)中带有 WWW-Authenticate,格式如下:
    WWW-Authenticate: Basic realm="Secure Area"
    
    这就是服务器向客户端发送的 challenge,其中 Basic 指明服务器需要的访问认证方式,realm 是服务器分配的一个字符串,用于标识请求 URI 对应的受保护域。WWW-Authenticate 中至少包含一个 challenge
  3. 客户端根据接收到的服务器响应中 WWW-Authenticate 信息得知需要执行 Basic 访问认证,如果客户端是浏览器,则会自动弹出一个登录窗口,输入用户ID和密码后提交认证请求。客户端发送的认证请求中包含 Authorization 头信息,格式如下:
    Authorization: Basic YWRtaW46MDAwMDAw
    
    这就是客户端向服务器发送的 response,其中 Basic 指明客户端遵从的访问认证方式,后面紧跟一个 Base64 编码值,通过以下公式计算所得:
    base64(userid:password)
    
  4. 服务端收到请求后执行验证,成功返回 200 OK,失败返回 401 Unauthorized
    • 根据用户请求的资源地址确定资源对应的 realm
    • 解析请求头中 Authorization ,获得用户ID和密码;
    • 判断用户是否有访问 realm 的权限;
    • 验证用户ID和密码是否匹配。

安全缺陷

  • 用户ID和密码通过明文传输,如果未启用传输层加密,则密码可轻易被中间人截获;
  • 认证一旦通过就无法随时吊销。

参考

RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication

http://www.lryc.cn/news/357389.html

相关文章:

  • #职场发展#其他
  • 【Text2SQL 论文】评估 ChatGPT 的 zero-shot Text2SQL 能力
  • 安卓手机APP开发___设置闹钟
  • 如何评价GPT-4o
  • 自定义窗口事件循环系统
  • 随机森林算法教程(个人总结)
  • 解决Android studio 一直提示下载gradle-xxx-all.zip问题
  • 3DEXPERIENCE DELMIA Role: RVN - Robotics Virtual Commissioning Analyst
  • js知识点之闭包
  • LORA微调,让大模型更平易近人
  • LabVIEW全自动样品处理系统有哪些优势?
  • shell脚本操作http请求的返回值——shell处理json格式数据
  • leetcode力扣 300. 最长递增子序列 II
  • C++_vector简单源码剖析:vector模拟实现
  • 第3章 数据链路层
  • 使用OrangePi KunPeng Pro部署AI模型
  • SpringMVC 数据映射VC
  • Clickhouse Bitmap 类型操作总结—— Clickhouse 基础篇(四)
  • 202474读书笔记|《我自我的田渠归来》——愿你拥有向上的力量,一切的好事都应该有权利发生
  • SheetJS V0.17.5 导入 Excel 异常修复 Invalid HTML:could not find<table>
  • 重学java51.Collections集合工具类、泛型
  • OSPF扩展知识2
  • 数据库技术基础
  • 这些项目,我当初但凡参与一个,现在也不至于还是个程序员
  • ch2应用层--计算机网络期末复习
  • Red Hat Enterprise Linux (RHEL) 8.10 发布 - 红帽企业 Linux 8 完美终结版
  • .NET 直连SAP HANA数据库
  • HTML <from>表单
  • Wpf 使用 Prism 实战开发Day28
  • 如何让一个普通用户可以读写某个目录