HTTP Basic Access Authentication Schema

embedded/2024/9/25 3:24:05/

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和密码时,服务器才会为请求提供服务,没有其他可选的认证参数。

流程

<a class=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.ppmy.cn/embedded/44098.html

相关文章

Golang实现根据文件后缀删除文件和递归删除文件

概述 这个功能会非常强大&#xff0c;因为在日常工作中&#xff0c;我通常会遇到需要批量删除文件的场景&#xff0c;通过这个方法&#xff0c;再结合我的另一个 命令行开发框架&#xff0c;能够很轻松的开发出这个功能。 代码 package zdpgo_fileimport ("errors"…

Vue 实例

一、页面效果图 二、代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><script src"../vue.js" type"text/javascript"></script><title>vue 实例</title></head><body>&l…

鲁教版七年级数学上册-笔记

文章目录 第一章 三角形1 认识三角形2 图形的全等3 探索三角形全等的条件4 三角形的尺规作图5 利用三角形全等测距离 第二章 轴对称1 轴对称现象2 探索轴对称的性质4 利用轴对称进行设计 第三章 勾股定理1 探索勾股定理2 一定是直角三角形吗3 勾股定理的应用举例 第四章 实数1 …

Python的类全面系统学习

文章目录 1. 基本概念1.1 类&#xff08;Class&#xff09;1.2 对象&#xff08;Object&#xff09; 2. 类的属性和方法3. 类的继承3.1 继承的概念3.2 单继承3.3 多重继承 4. 方法重写与多态4.1 方法重写4.2 多态 5. 特殊方法与运算符重载5.1 特殊方法&#xff08;魔法方法&…

【SPSS】基于因子分析法对水果茶调查问卷进行分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Android单元测试实践

一、基础概念 按照Google官方建议,Android测试体系应该参照测试金字塔架构(如下图所示),App应该包含三类测试(即小型、中型和大型测试)。 图片 小型测试是指单元测试,用于验证应用的行为,一次验证一个类。中型测试是指集成测试,用于验证模块内堆栈级别之间的交互或相…

ChatGLM2-6B 模型基于 [P-Tuning v2]的微调

ChatGLM2-6B-PT 一、介绍 1、本文实现对于 ChatGLM2-6B 模型基于 [P-Tuning v2](https://github.com/THUDM/P-tuning-v2) 的微调 2、运行至少需要 7GB 显存 3、以 [ADGEN](https://aclanthology.org/D19-1321.pdf) (广告生成) 数据集为例介绍代码的使用方法。 模型部署参考…

基于文本来推荐相似酒店

基于文本来推荐相似酒店 查看数据集基本信息 import pandas as pd import numpy as np from nltk.corpus import stopwords from sklearn.metrics.pairwise import linear_kernel from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extrac…