http通信鉴权(三)基于 Session + CSRF Token 的 Cookie 认证

一、介绍

1、简介

这也是一个非常典型的 Web 会话认证方式,不是 OAuth,也不是 JWT,而是: 基于 Session + CSRF Token 的 Cookie 认证(Spring / Java 系生态最常见)

项目 是否
Session-based Auth
Cookie Auth
CSRF Protection
JWT
OAuth2

2、示例

XSRF-TOKEN=******; SESSION=******

二、组成

XSRF-TOKEN = e1a29ed4-8850-4e48-8ac5-833ccfad1899

SESSION = ljU0ZDa2OTMtMTg2gS00njE2LTk0MDEtOGUyMuYxNTE3MTZa

1、SESSION(核心认证凭证)

这是服务端 Session ID,登录成功后由服务器生成。

  • 存在:内存 / Redis / DB

  • Cookie 里只存 sessionId

  • 每次请求:Cookie: SESSION=xxxx

  • 服务端用 sessionId 找用户信息,这就是真正的"你是谁"

2、XSRF-TOKEN(防 CSRF)

这是 CSRF 防护 token(不是身份认证),

  • 用来防止:跨站请求伪造(CSRF)

  • 常见于:Spring Security Angular / Vue

工作机制
  1. 服务端生成一个随机 token

  2. 放到 Cookie(XSRF-TOKEN

  3. 前端每次 非 GET 请求时:

    从 Cookie 读,然后放到 Header:X-XSRF-TOKEN: e1a29ed4-8850-4e45-8ac5-833ccfad1896

  4. 服务端校验 Header 和 Cookie 是否一致

📌 它不代表登录态,只是"你是本站页面发的请求"

**三、**结合Playwright

复制代码
// 登录后
BrowserContext context = browser.newContext();
// Cookie 会自动带
复制代码
String xsrf = context.cookies().stream()
    .filter(c -> "XSRF-TOKEN".equals(c.name))
    .findFirst()
    .map(c -> c.value)
    .orElse(null);

2、API 请求时带 Header

复制代码
page.request().post("/api/xxx",
  RequestOptions.create()
    .setHeader("X-XSRF-TOKEN", xsrf)
);

3、复用登录态(自动化测试常用)

推荐做法:storageState

复制代码
context.storageState(
  new BrowserContext.StorageStateOptions()
    .setPath(Paths.get("state.json"))
);

下次:

复制代码
browser.newContext(
  new Browser.NewContextOptions()
    .setStorageStatePath(Paths.get("state.json"))
);
相关推荐
ayt0075 小时前
Netty AbstractNioChannel源码深度剖析:NIO Channel的抽象实现
java·数据库·网络协议·安全·nio
北京耐用通信5 小时前
无缝衔接·高效传输——耐达讯自动化CC-Link IE转Modbus TCP核心解决方案
网络·人工智能·物联网·网络协议·自动化·信息与通信
[ ]8987 小时前
Stack_MLAG_知识点梳理
网络·笔记·网络协议
江畔何人初7 小时前
TCP的三次握手与四次挥手
linux·服务器·网络·网络协议·tcp/ip
m0_738120727 小时前
网络安全编程——Python编写基于UDP的主机发现工具(解码IP header)
python·网络协议·tcp/ip·安全·web安全·udp
北京耐用通信7 小时前
不换设备、不重写程序:耐达讯自动化网关如何实现CC-Link IE转Modbus TCP的高效互通?
人工智能·科技·物联网·网络协议·自动化·信息与通信
liweiweili1268 小时前
http数据传输过程数据编码解码问答
网络协议·http·状态模式
有代理ip8 小时前
动态IP的安全性优化:策略升级与隐私保护实战指南
网络·网络协议·tcp/ip
CDN3608 小时前
高防 IP 回源 502/504 异常?源站放行与健康检查修复
网络·网络协议·tcp/ip
fqq39 小时前
Http方法详解
网络·网络协议·http