跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言大前端

HTTP 身份认证机制详解:Basic、Digest 与表单认证

HTTP 身份认证是保障 Web 安全的关键环节。常见方式包括 BASIC 认证,虽实现简单但存在明文泄露风险;DIGEST 认证通过质询 - 响应机制和哈希算法提升安全性;SSL 客户端认证结合证书验证设备身份;表单认证则利用 Session 和 Cookie 维持会话状态。实际开发中需根据场景权衡安全性与用户体验,合理配置 HttpOnly 等防护属性。

XiaoPingzi发布于 2018/2/22更新于 2026/6/925 浏览
HTTP 身份认证机制详解:Basic、Digest 与表单认证

HTTP/1.1 认证方式概览

HTTP 协议本身是无状态的,为了保障资源访问安全,常见的认证机制包括 BASIC(基本)、DIGEST(摘要)、SSL 客户端认证以及表单认证。

BASIC 认证

这是最基础的认证方式。当客户端请求受保护资源时,服务器会返回 401 Unauthorized 状态码,并在响应头中携带 WWW-Authenticate 字段,提示需要认证。

GET /private/http/1.1 Host: hack.jp 
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Basic realm="Input your ID and password"

收到挑战后,客户端将用户名和密码用冒号连接,进行 Base64 编码,随后放入 Authorization 请求头再次发送。

GET /private/http/1.1 Host: hack.jp 
Authorization: Z3Vlc3Q6Z3Vlc3Q=

服务端解码后验证凭据,通过则返回资源,否则继续拒绝。注意:这种方式并未加密密码内容,仅做了编码处理,传输过程中容易被截获,安全性较低。

DIGEST 认证

为了解决明文传输风险,DIGEST 认证引入了质询 - 响应机制。它不直接发送密码,而是利用随机数(nonce)和哈希算法计算摘要。

  1. 发起请求:客户端先尝试访问资源。
  2. 服务器挑战:服务器返回 401 状态,并在 WWW-Authenticate 中提供 nonce(随机数)、realm、算法(如 MD5)等信息。
HTTP/1.1 401 Authorization Required
WWW-Authenticate: Digest realm="DIGEST", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/digest/", algorithm=MD5, qop="auth"
  1. 计算响应:客户端使用收到的 nonce、用户名、密码、请求方法(Method)及 URI 路径,按特定规则计算 response 值。
GET /digest/http/1.1 Host: hack.jp 
Authorization: Digest username="guest", realm="DIGEST", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/digest/", algorithm=MD5, qop=auth, response="6629fae49393a05397450978507c4ef1", cnonce="0a4f113b", nc=00000001
  1. 服务端校验:服务器根据用户名查找对应密码,执行相同的计算逻辑得出期望的 request-digest,并与客户端传来的 response 比对。一致则认证成功,并可能返回 Authentication-Info 头部供客户端验证服务器身份。

SSL 客户端认证

这种机制要求客户端安装数字证书。流程如下:

  1. 服务器收到请求后,返回 Certificate Request 报文。
  2. 客户端选择证书并通过 Client Certificate 报文发送。
  3. 服务器验证证书有效性,提取公钥建立 HTTPS 通信。

通常这不会单独使用,而是与表单认证结合形成双因素认证:证书验证设备身份,密码验证用户本人。

表单认证

Web 应用中最常见的模式,依赖 Cookie 管理会话(Session)。

  1. 提交凭证:用户通过表单输入账号密码,通常以 POST 方式提交至服务器。
  • 生成 Session:服务器验证通过后,在本地创建会话记录,生成唯一的 Session ID。
  • 下发 Cookie:服务器在响应头的 Set-Cookie 字段写入 Session ID。为了防止 XSS 攻击窃取会话,建议设置 HttpOnly 属性。
  • 后续请求:浏览器自动携带该 Cookie 发送请求,服务器通过 Session ID 识别用户状态。
  • 这种方式虽然方便,但需注意 Session 存储的安全性和 CSRF 防护。

    目录

    1. HTTP/1.1 认证方式概览
    2. BASIC 认证
    3. DIGEST 认证
    4. SSL 客户端认证
    5. 表单认证
    • 💰 8折买阿里云服务器限时8折了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 🤖 一键搭建Deepseek满血版了解详情
    • 一键打造专属AI 智能体了解详情
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • 2026年8款AI大模型实测排名!国产杀入全球前10,最便宜只要2毛钱
    • 常见黑客攻击方法及入侵流程解析
    • Ubuntu 系统服务管理与 systemd 配置实战
    • Ollama 本地部署 DeepSeek-R1-Distill-Llama-8B 实战
    • 8 卡 RTX 5090 服务器 llama.cpp 部署与测试指南
    • AI 训练师:新职业定义、核心职责与发展前景
    • C++ 红黑树详解:原理、实现与验证
    • CMake 核心概念与实战:目标、属性、API 及静态库构建
    • Python FastAPI 入门教程:新手快速构建 RESTful API
    • Spring Boot 消息队列与异步通信实战
    • 大语言模型 LoRA 微调实战指南
    • 苍穹外卖实战:SpringTask 定时任务与 WebSocket 实时通信
    • Flutter 集成 dart_openai 实现 OpenHarmony 应用 AI 对话
    • GLM-4.6V-Flash-WEB AI 看图说话应用部署与实战
    • 前端独立搞定产品设计与开发:三大 AI 设计技能实战工作流
    • Git 下载及安装教程
    • Java 代理模式完全指南:从静态到动态
    • Trae IDE 安装与使用指南:字节跳动 AI 原生开发环境
    • Stable-Diffusion-v1-5 镜像部署及 Supervisor 自动恢复方案
    • Pandas 核心入门:Series 结构与创建实战

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online