阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

解析Web开发中的几种认证方法及应用场景

690次阅读
没有评论

共计 3970 个字符,预计需要花费 10 分钟才能阅读完成。

解析 Web 开发中的几种认证方法及应用场景

在 Web 开发中,认证是保障系统安全性的重要一环。不同的应用场景对认证方式的要求也不同。下面我们来详细介绍几种常见的认证方式。

本文是看了 B 站博主“IT 老齐”的一个视频,算是一个笔记,再者星哥再去整合一些知识。

解析 Web 开发中的几种认证方法及应用场景

基本认证(Basic Auth)

解析 Web 开发中的几种认证方法及应用场景

Basic Auth

HTTP Basic Authentication(基本认证) 是一种简单的身份验证方法,广泛应用于一些对安全要求不高的场景,或者作为 Web 服务、API 之间通信的基本身份验证机制。

尽管存在安全隐患,但它因其实现简洁、配置简单,仍然在很多场景中得到了应用。

在 Nginx 中实现 Basic Authentication

1. 生成 .htpasswd 文件

使用 htpasswd 工具生成用户名和密码的组合,并加密密码。

htpasswd -c /etc/nginx/.htpasswd user1

2. 配置 Nginx

在 Nginx 配置文件(通常是 /etc/nginx/nginx.conf 或相应的虚拟主机配置文件)中,添加以下配置来启用 Basic Authentication:

server {
    listen 80;
    server_name example.com;

    location / {
        auth_basic "Restricted Access";  # 提示信息
        auth_basic_user_file /etc/nginx/.htpasswd;  # 指定密码文件路径

        # 其他配置
    }
}

3. 重启 Nginx

保存配置文件后,重启 Nginx 以使配置生效:

sudo systemctl restart nginx

使用浏览器打开站点,输入用户名密码

解析 Web 开发中的几种认证方法及应用场景

如果输入错误则会显示 401

解析 Web 开发中的几种认证方法及应用场景

令牌认证(Token Auth)

解析 Web 开发中的几种认证方法及应用场景

什么是令牌认证

令牌认证是一种安全协议,通过使用加密令牌来验证用户的身份。与传统的用户名和密码相比,令牌认证提供了一个额外的安全层,可以更有效地保护用户的数据。

简单来说,令牌就像是一张通行证。当你成功登录一个系统后,系统会给你颁发一个独特的令牌。这个令牌包含了你的身份信息,但它不是明文,而是经过加密的。在后续的请求中,你只需要携带这个令牌,系统就能识别你的身份,而不需要你每次都重新输入密码。

工作原理

  1. 用户登录: 用户输入用户名和密码进行登录。

  2. 服务器验证: 服务器验证用户的身份信息。

  3. 颁发令牌: 如果验证通过,服务器会生成一个令牌,并将其发送给客户端。

  4. 客户端存储: 客户端将令牌存储起来,通常存储在本地存储或 cookie 中。

  5. 后续请求: 客户端在后续的请求中将令牌包含在请求头中。

  6. 服务器验证令牌: 服务器验证令牌的有效性,如果验证通过,则允许用户访问资源。

常见应用场景

API 接口认证:保护 API 接口的安全,防止未授权访问。

单点登录:用户只需登录一次,即可访问多个系统。

移动应用认证:保护移动应用的数据安全。

令牌的类型

JWT(JSON Web Token):一种常用的令牌格式,它是一个自包含的、安全的、基于 JSON 的令牌。

OAuth 2.0:一种授权框架,它允许第三方应用代表用户访问用户的资源。

SAML(Security Assertion Markup Language):一种基于 XML 的标准,用于在不同的安全域之间交换身份认证和授权数据。

JWT(JSON Web Token)

JWT (JSON Web Token) 是一种开放标准(RFC 7519),用于在网络上安全地传输信息的简洁、自包含的方式。它通常被用于身份验证和授权机制。

形象地说,JWT 就像是一张通行证。当用户登录成功后,服务器会签发给用户一张通行证(即 JWT),这张通行证包含了用户的一些基本信息,比如用户 ID、用户名、角色等。用户在后续的请求中,只需携带这张通行证,就可以证明自己的身份,而不需要每次都重新登录。

JWT 的结构

一个 JWT 实际上是一个字符串,它由三部分组成,并用点(.)分隔:

头部(Header):包含了 metadata,比如 token 的类型(JWT)和所使用的签名算法。

载荷(Payload):包含了声明,例如,用户的 ID、用户名、以及过期时间等。

签名(Signature):签名是对前两部分内容的签名,用于验证消息的完整性。

解析 Web 开发中的几种认证方法及应用场景

OAuth2 Auth

解析 Web 开发中的几种认证方法及应用场景

什么是 OAuth 2.0

OAuth 2.0 是一种授权框架,允许第三方应用程序在用户授权的情况下,访问用户在其他服务提供商(如 Google、Facebook)上的受保护资源。简单来说,就是让第三方应用能够代表用户执行一些操作,而无需直接获取用户的密码。

举个例子:当你使用微信登录一个网站时,这个网站就是第三方应用,它通过 OAuth 2.0 向微信申请授权,获取你的部分个人信息,从而让你不用重新注册就可以登录这个网站。

工作流程

  1. 用户授权: 用户在客户端上发起授权请求,客户端将用户重定向到授权服务器。

  2. 授权服务器验证: 授权服务器验证用户的身份。

  3. 用户同意: 用户同意授权客户端访问其资源。

  4. 授权服务器颁发授权码: 授权服务器颁发一个授权码给客户端。

  5. 客户端获取访问令牌: 客户端使用授权码向授权服务器请求访问令牌。

  6. 授权服务器颁发访问令牌: 授权服务器验证授权码后,颁发访问令牌给客户端。

  7. 客户端访问资源: 客户端使用访问令牌向资源服务器请求资源。

  8. 资源服务器验证: 资源服务器验证访问令牌的有效性,如果验证通过,则返回资源给客户端。

API KEY 认证

解析 Web 开发中的几种认证方法及应用场景

定义与原理

API Key 就像一个专门用来开启某个“特定房间”的钥匙,这个“特定房间”就是 API,一个允许两个不同应用程序交流的桥梁。它是一个唯一的字符串,用于标识和验证 API 的用户。

当客户端向 API 发送请求时,需要在请求头中包含 API Key,以证明其有权访问该 API。服务器端收到请求后,会验证请求头中的 API Key 是否与存储在服务器端的密钥副本匹配,如果匹配,则认为请求是合法的,否则请求将被拒绝。

实现步骤

API Key 认证的实现通常遵循以下步骤:

  1. 生成 API Key:服务提供者为用户生成一个唯一的 API Key,这个 Key 需要保密,不应在网络上明文传输。

  2. 构建请求:客户端在发送请求时,需要在请求头或请求体中加入 API Key。有时,为了增强安全性,还会结合其他信息(如请求的时间戳、请求路径等)生成一个签名,并将签名一同发送到服务器。

  3. 验证 API Key:服务器收到请求后,会验证请求头中的 API Key 或签名的有效性。如果 API Key 匹配或签名验证通过,则认为请求是合法的,否则请求将被拒绝。

例子

比如星哥使用的图床就是某云的对象存储,在控制台中申请 KeyID 和 KeySecret,并且赋予访问权限之后,再通过 id 和 secret 就可以访问对应的对象存储,就实现了上传图片等功能。

解析 Web 开发中的几种认证方法及应用场景

四种认证方式的对比

解析 Web 开发中的几种认证方法及应用场景

应用场景

解析 Web 开发中的几种认证方法及应用场景

Basic Auth 应用场景

  • 内部系统或测试环境,对安全性要求不高时的快速验证。

  • 简单的 web 服务或 API,尤其是在受信任的网络环境中。

  • 内部管理系统登录,当组织有严格的安全网络和访问控制时。

Token Auth 应用场景

  • RESTfuI API,特别是那些需要高性能和无状态性的场景。

  • 移动应用和服务之间的通信,避免存储用户名和密码在客户端。

  • 单点登录 (SSO) 解决方案的一部分,简化跨系统访问。

OAuth Auth 应用场景

  • 社交媒体和第三方登录,如“使用 Facebook/Google 登录”

  • 云服务和 API 的访问控制,如允许特定应用访问用户存储在云中的数据。

  • 物联网 (IoT) 设备访问控制,确保设备安全地与云平台交互。

API KEY Auth 应用场景

  • 企业级 API 管理,尤其是面向合作伙伴或客户的 API,便于跟踪和控制使用情况数据

  • 分析和聚合服务,客户通过 API 获取数据时认证。

  • 内容分发网络 (CDN) 和 API 网关,用于简单的访问控制和流量监控,

  • 第三方支付、调用天气 API 等

Session + Cookie 认证模式

Session + Cookie 认证模式是一种传统的 Web 应用程序身份验证方式。它通过在服务器端创建 Session(会话)来跟踪用户的状态,并在客户端存储 Session ID(会话标识符)到 Cookie 中,从而实现用户身份的验证。

工作原理

  1. 用户登录:用户输入用户名和密码,服务器验证通过后,为该用户创建一个唯一的 Session。

  2. 生成 Session ID: 服务器生成一个 Session ID,并将该 ID 与 Session 信息关联起来。

  3. 设置 Cookie: 服务器将 Session ID 设置为一个 Cookie,发送给客户端。

  4. 客户端存储 Cookie: 客户端的浏览器会将这个 Cookie 保存起来。

  5. 后续请求: 每次客户端向服务器发送请求时,浏览器都会自动将这个 Cookie 发送给服务器。

  6. 服务器验证 Session: 服务器根据 Cookie 中的 Session ID 找到对应的 Session,验证用户身份。

优点

session 信息需要额外的数据库存储,例如一般需增加 redis、memached 等应用。在多机负载时,需要考虑 session 共享;

简单易懂: 实现相对简单,易于理解。

广泛支持: 大多数 Web 服务器和编程语言都支持 Session。

状态保持: 可以方便地存储用户的状态信息,如购物车、登录状态等。

缺点

session 信息统一管理,可以在服务端统一控制认证的过期时间或个别用户的过期时间。

状态维护: 服务器需要维护大量的 Session,占用服务器资源。

跨域问题: 跨域请求时,Cookie 不能自动发送,需要额外的处理。

安全性问题: Cookie 存储在客户端,容易被篡改或窃取。

负载均衡: 在分布式系统中,Session 的共享和同步比较复杂。

结尾

在 Web 开发中,选择合适的认证方式对于保护用户隐私和资源安全至关重要。不同的认证方式具有不同的优缺点和适用场景。因此,在开发过程中,需要根据具体需求和场景来选择合适的认证方式,并采取相应的安全措施来确保认证过程的安全性和可靠性。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2025-01-22发表,共计3970字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19352
评论数
4
阅读量
8052729
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...