第八章 确认访问用户身份的认证

2024-01-09

第八章 确认访问用户身份的认证

8.1 何为认证

在计算机安全和网络通信的背景下,认证是**确认实体(如用户、计算机系统、服务)身份真实性的过程。**认证是确保系统只对合法用户或实体开放访问权限的一种关键机制。在网络通信中,认证通常涉及验证用户或设备是否具有访问特定资源或服务的权限。

认证过程通常包括以下步骤:

  1. 提供身份信息: 用户或设备需要提供某种身份信息,这可以是用户名、密码、数字证书、生物特征(如指纹或视网膜扫描)等。
  2. 验证身份信息: 系统或服务使用一种认证机制来验证提供的身份信息的真实性。这可能包括检查用户名和密码的匹配性、验证数字签名、或通过生物特征识别等方式。
  3. 授权: 一旦身份得到验证,系统会根据用户或设备的身份分配相应的权限。这是授权的过程,它确定用户或设备能够执行的操作或访问的资源。

认证的目的是确保只有合法用户或设备才能够访问系统的敏感信息或服务。它是网络安全的基础,用于防止未经授权的访问和防范身份伪装。

在这里插入图片描述

HTTP/1.1使用的认证方式

  • BASIC认证(基本认证)
  • DIGEST认证(摘要认证)
  • SSL客户端认证
  • FormBase认证(基于表单认证)

8.2 BASIC认证

BASIC认证(Basic Authentication)是一种简单的HTTP认证协议,它是HTTP/1.0规范中定义的一种基本认证机制。BASIC认证通过在HTTP请求的头部中发送用 户名和密码的Base64编码形式 来进行身份验证。

在这里插入图片描述

基本认证的工作流程如下:

  1. 当客户端尝试访问受保护资源时,服务器返回状态码401 Unauthorized,并在响应头部包含一个 WWW-Authenticate 字段,指定使用基本认证。
  2. 客户端收到401响应后, 将用户名和密码以"username:password"的形式拼接,然后对该字符串进行Base64编码。
  3. 客户端将Base64编码后的字符串放入HTTP请求的 Authorization 头部,形成类似于 “Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==” 的字段。
  4. 客户端再次发送HTTP请求,该请求包含了经过认证的 Authorization 头部。
  5. 服务器接收到请求后,解码 Authorization 头部,获取用户名和密码,并验证它们是否有效。如果有效,服务器允许访问受保护资源。

虽然BASIC认证是一种简单的认证机制,但它存在一些安全性的缺陷,主要体现在以下方面:

  • 明文传输: 用户名和密码只是通过Base64编码,而没有进行加密。这意味着在网络中,它们可以被中间人截获并解码,从而导致安全性问题。
  • 缺乏会话保持: BASIC认证不提供会话保持功能,每个请求都需要重新进行身份验证,这可能会导致频繁的用户名和密码传输。

8.3 DIGEST认证

Digest认证(Digest Authentication)是一种在HTTP协议中进行身份验证的机制,它相对于BASIC认证更安全,因为它 使用摘要(Digest)算法来加密用户的密码。Digest认证的主要目标是防止密码在传输过程中被窃取,而不像BASIC认证那样使用明文传输密码。

在这里插入图片描述

在这里插入图片描述

Digest认证的工作流程如下:

  1. 当客户端尝试访问受保护资源时,服务器返回状态码401 Unauthorized,并在响应头部包含一个 WWW-Authenticate 字段,指定使用Digest认证。
  2. 客户端收到401响应后,生成一个随机数(称为nonce),然后使用用户名、密码以及其他信息创建一个摘要。摘要通常包括请求的方法、URI、服务器颁发的nonce、请求计数(NC)、客户端颁发的cnonce等。
  3. 客户端将生成的摘要放入HTTP请求的 Authorization 头部,形成类似于 “Authorization: Digest username=“user”, realm=“example”, nonce=“dcd98b7102dd2f0e8b11d0f600bfb0c093”, uri=”/resource", qop=auth, nc=00000001, cnonce=“0a4f113b”, response=“6629fae49393a05397450978507c4ef1”, opaque=“5ccc069c403ebaf9f0171e9517f40e41"” 的字段。
  4. 客户端再次发送HTTP请求,该请求包含了经过认证的 Authorization 头部。
  5. 服务器接收到请求后,验证客户端提供的摘要信息。如果验证通过,服务器允许访问受保护资源。

Digest认证相对于BASIC认证具有以下优势:

  • 密码不在明文传输: Digest认证使用摘要算法,使得密码在传输过程中不再以明文形式传输,提高了安全性。
  • 防止重放攻击: 使用nonce和计数器(NC),可以有效地防止重放攻击。

8.4 SSL客户端认证

从使用用户ID和密码的认证方式方面来讲,只要二者的内容正确,即可认证是本人的行为。但如果用户ID和密码被盗,就很有可能被第三者冒充。利用SSL客户端认证则可以避免该情况的发生。

SSL客户端认证是 借由HTTPS的客户端证书完成认证的方式 。凭借客户端证书(在HTTPS一章已讲解)认证,服务器可确认访问是否来自已登录的客户端

8.4.1 SSL客户端认证的认证步骤

为达到SSL客户端认证的目的,需要事先将客户端证书分发给客户端,且客户端必须安装此证书。

  • 步骤1:接收到需要认证资源的请求,服务器会发送CertificateRequest报文,要求客户端提供客户端证书。
  • 步骤2:用户选择将发送的客户端证书后,客户端会把客户端证书信息以ClientCertificate报文方式发送给服务器
  • 步骤3:服务器验证客户端证书验证通过后方可领取证书内客户端的公开密钥,然后开始HTTPS加密通信。
8.4.2 SSL客户端认证采用双因素认证

在多数情况下,SSL客户端认证不会仅依靠证书完成认证,一般会和基于表单认证(稍后讲解)组合形成一种 双因素认证 (Two-factorauthentication)来使用。 所谓双因素认证就是指,认证过程中不仅需要密码这一个因素,还需要申请认证者提供其他持有信息,从而作为另一个因素,与其组合使用的认证方式。

换言之,第一个认证因素的SSL客户端证书用来认证客户端计算机,另一个认证因素的密码则用来确定这是用户本人的行为。

通过双因素认证后,就可以确认是用户本人正在使用匹配正确的计算机访问服务器。

8.4.3 SSL客户端认证必要的费用

从认证机构购买客户端证书需要费用, 或者服务器运营者为保证自己搭建的认证机构安全运营所产生的费用

8.5 基于表单认证

基于表单认证(Form-Based Authentication)是一种Web应用程序中常见的用户身份验证方式。它通常涉及**使用HTML表单来收集用户提供的用户名和密码,并将这些凭据发送到服务器进行验证。**一旦验证成功,用户就可以被授权访问特定的资源或服务。

基于表单认证的基本流程如下:

  1. 用户访问登录页面: 用户在Web应用程序的登录页面上输入用户名和密码。
  2. 表单提交: 用户提交包含用户名和密码的表单,通过点击登录按钮或按下回车键。
  3. 认证请求: 服务器接收到认证请求,验证用户提供的用户名和密码的有效性。这通常涉及将用户名和密码与存储在服务器上的用户数据库中的相应条目进行比对。
  4. 生成会话: 如果验证成功,服务器会创建一个会话(session),为用户分配一个唯一的标识符,然后将该标识符返回给客户端。
  5. 访问授权: 客户端将包含会话标识符的令牌(通常是Cookie)存储在本地。在后续的请求中,客户端将这个令牌包含在请求头部,以便服务器可以验证用户的身份并授予适当的访问权限。
  6. 访问资源: 用户通过带有令牌的请求访问其他受保护的资源,服务器验证令牌并授权访问。

基于表单认证的优势包括:

  • 用户友好: 使用标准的HTML表单,易于用户理解和操作。
  • 灵活性: 可以与各种Web应用程序和身份验证后端集成,适用于不同的场景。
  • 常见: 基于表单认证是许多Web应用程序中最常见的身份验证方式之一。
  • 可定制性: 可以通过设计和样式定制登录页面,以适应特定的品牌或用户界面需求。

不过,基于表单认证也可能存在安全性方面的挑战,如密码泄露、会话劫持等。为了增强安全性,开发人员通常会采取额外的措施,如使用HTTPS加密传输、实施防火墙、限制登录尝试次数等。

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

第八章 确认访问用户身份的认证 的相关文章

随机推荐

  • 手写转文字扫描软件有哪些?方便又好用的工具谁不喜欢?

    大家有没有仔细数过 你们在从小到大的学习生涯中使用了多少笔记本 反正我是经常被我妈催着把以前的笔记本丢掉 但是它们承载的可都是我学生时代的记忆 就连当时觉得复杂难懂的内容 其实也挺有意思的 所以 我一直在思考 到底有什么方法可以让我在不占用
  • Binder机制知识点

    引言 在Android领域 Binder作为进程间通信的核心机制 是每位Android技术人员都应该深入了解的重要知识点 本文将从面试官的角度出发 围绕Android Binder展开一系列高级疑难问题 通过问题分析与问题简答 旨在帮助大家
  • 静态关键字:static

    static的作用 static是静态的意思 可以修饰成员变量和成员方法 static修饰成员变量表示该成员变量只在内存中只存储一份 可以被共享访问 修改 成员变量 分为2类 静态成员变量 有static修饰 属于类 内存中加载一次 常表示
  • 性能分析与调优: Linux 内存观测工具

    目录 一 实验 1 环境 2 vmstat 3 PSI 4 swapon 5 sar 6 slabtop 7 numstat 8 ps 9 top 10 pmap 11 perf 12 bpftrace 二 问题 1 接口读写报错 2 sl
  • 校招失败后,在小公司熬了 2 年终于进了字节跳动,竭尽全力....

    其实两年前校招的时候就往字节投了一次简历 结果很明显凉了 随后这个理想就被暂时放下了 但是这个种子一直埋在心里这两年除了工作以外 也会坚持写博客 也因此结识了很多优秀的小伙伴 从他们身上学到了特别多东西 把这次面试分享出来 也是希望可以帮助
  • Android studio Progress Bar 进度条应用设计

    一 水平进度条 1 xml布局文件 2 java文件 progressBar1 findViewById R id progressBar progressBar2 findViewById R id progressBar2 public
  • Android App备案获取公钥、签名MD5值

    1 生成签名文件 keytool genkey alias 别名XXX keypass 密码XXX keyalg RSA keysize 2048 validity 36500 keystore D XXX keystore storepa
  • jquery的contains如何实现精准匹配

    HTML结构
  • Android studio SeekBar应用设计

    一 xml布局文件 1 默认状态的
  • AIDL通信过程中设置死亡代理

    概述 在进行进程间通信的过程中 如何服务端进程由于某种原因异常终止 我们的远程调用就会失败 影响我们的功能 那么怎么样能够知道服务端进程是否终止了呢 那就是给Binder设置死亡代理 下面看看如何设置 Override public voi
  • 小学二三年级入门信奥赛,如何从Scratch进入C++的学习

    小学生几年级适宜开始学习C 这是讨论的比较热烈 也是比较热门的话题 小学生适宜几年级开始学C 小学生适宜几年级开始学C CSDN博客 simple happiness 信息学规划 北京二年级学生图形化过二级想往信奥靠拢如何准备 信息学规划
  • Prometheus Blackbox_exporter笔记

    一 安装Promtheus 在 Prometheus 官网 Download Prometheus 获取适用于 Linux 的 Prometheus 安 装包 这里我选择最新的 2 46 0 版本 我是 Linux 系统 选择下载 prom
  • AIDL通信过程中设置死亡代理

    关于AIDL的使用参考学习 https blog csdn net u011240877 article details 72765136 https blog csdn net iromkoear article details 5970
  • qemu调用spice库添加memslot

    1 qemu中的spice display c添加memslot void qemu spice add memslot SimpleSpiceDisplay ssd QXLDevMemSlot memslot qxl async io a
  • 合肥一食品仓库发生火灾,富维图像仓库火灾识别避免财产损失

    2024年1月5日 安徽合肥一家食品仓库不幸遭遇了火灾 11时50分左右 浓烟滚滚 火光冲天 令人心惊肉跳 幸运的是 没有造成人员伤亡 但仓库内大量物资被烧毁 财产损失巨大 此次事件再次提醒我们 火灾防护的重要性不容忽视 而在这方面 北京富
  • 机器配音解说可以用什么软件弄?我来告诉你

    大家每一天工作时都要长时间接触电子屏幕 下班回家之后 小说吸引力是不是不如从前了 别急着让喜欢的作者 背锅 我想 你们之所以 收藏从未停止 阅读从未开始 也有一部分原因是眼睛累了 所以自然就会觉得小说不好看 不过 难道打工人就无法全身心地沉
  • filezilla中文目录乱码怎么解决

    FileZilla是一款常用的文件传输工具 但在使用过程中可能会遇到乱码的问题 以下是一些可能的解决方案 设置字符集 在连接上站点后 点击菜单栏的 文件 选项 下拉选择 添加当前连接到站点管理器 在弹出的 站点管理器 窗口中 左侧选择 新站
  • 如何防护零日攻击

    零日攻击是什么 零日攻击 也称为零时差攻击 通常是指利用还没有被补丁的安全漏洞进行的攻击 这些漏洞在被发现后 由于各种原因 软件供应商未能及时发布补丁 使得黑客有机会利用这些漏洞进行攻击 零日攻击通常由技术高超的黑客发起 他们在对目标系统或
  • 光纤知识总结

    1光纤概念 光导纤维 英语 Optical fiber 简称 光纤 是一种由玻璃或塑料制成的纤维 利用光在这些纤维中以全内 反射 原理传输的光传导工具 微细的光纤封装在塑料护套中 使得它能够弯曲而不至于断裂 通常光纤的一端的发射设备使用发光
  • 第八章 确认访问用户身份的认证

    第八章 确认访问用户身份的认证 8 1 何为认证 在计算机安全和网络通信的背景下 认证是 确认实体 如用户 计算机系统 服务 身份真实性的过程 认证是确保系统只对合法用户或实体开放访问权限的一种关键机制 在网络通信中 认证通常涉及验证用户或