CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Web 与安全入门/课时/Basic 认证
RawBlame
课时目录12 节

Web 与安全入门

  1. 01Web 安全概览
  2. 02OWASP 风险
  3. 03SSL/TLS
  4. 04CORS
  5. 05CSP 内容安全策略
  6. 06服务器安全
  7. 07密码哈希
  8. 08Basic 认证
  9. 09令牌认证
  10. 10Cookie 认证
  11. 11SAML 简介
  12. 12综合练习

Basic 认证

Authorization 头;仅 HTTPS 场景。

20 分钟

Basic 认证

HTTP Basic Authentication 把 用户名:密码 做 Base64 编码放进 Authorization 头——实现极简,适合 机器对机器、内网工具、临时保护,不适合作为面向公众的 主登录方式。后端工程师应知道如何启用、为何 必须 HTTPS,以及何时改用 Token 或 OAuth。

学习目标

  • 构造与解析 Authorization: Basic ... 头
  • 在 Spring Security 中配置 HTTP Basic 与关闭 CSRF 的场景
  • 判断 Basic 是否适合当前 API 场景

协议格式

GET /api/internal/metrics HTTP/1.1
Host: api.example.com
Authorization: Basic dXNlcjpwYXNzd29yZA==

dXNlcjpwYXNzd29yZA== 解码为 user:password。Base64 不是加密,HTTP 明文传输等于 公开密码。生产 仅允许 HTTPS(sec-ssl)。

细节见 http-headers 中 Authorization 一节。

浏览器行为

访问受 Basic 保护的 URL 时,浏览器弹 原生登录框,成功后 自动带头 直到关闭标签。SPA 通常 不用 Basic 做主登录(体验差、难做 SSO)。

Spring Security 示例

http
    .authorizeHttpRequests(auth -> auth
        .requestMatchers("/actuator/**").hasRole("OPS")
        .anyRequest().authenticated())
    .httpBasic(Customizer.withDefaults());

配合 内存或 DB 用户:

@Bean
public UserDetailsService users(PasswordEncoder encoder) {
    UserDetails ops = User.builder()
        .username("ops")
        .password(encoder.encode(System.getenv("OPS_PASSWORD")))
        .roles("OPS")
        .build();
    return new InMemoryUserDetailsManager(ops);
}

密码仍应 bcrypt 存储(sec-hash),环境变量 轮换。

适用场景

适合不适合
内部运维接口、短期 PoC移动端 / SPA 主登录
curl / 脚本调 API需要 refresh、细粒度 scope
开发环境快速挡一层跨域前端(预检 + 凭据复杂)

面向用户的认证优先:、、()。

Cookie 会话
Bearer JWT
OAuth 授权码
oauth-flows

安全注意

  1. 强制 TLS;内网也建议 TLS 或 mTLS
  2. 限流登录失败,防暴力破解(sec-owasp A07)
  3. 专用账号,不用个人主账号密码
  4. 日志脱敏:access log 不要记录完整 Authorization 头
  5. 与 CSRF:纯 Basic + 无 Cookie 的 stateless API 往往 关闭 CSRF;若有 Cookie 会话则另论(sec-auth-cookie)

与 Digest 认证

HTTP Digest 很少在现代 API 使用;知道存在即可,新项目勿选。

练习

  • 用 curl -u user:pass 调本地受保护端点,用 -v 查看请求头
  • 说明:为何 Base64 编码不能替代 sec-ssl
  • 对比 Basic 与 sec-auth-token Bearer 在「密码是否每次上传」上的差异

小结

Basic = 简单 + 每次带密码,仅限 HTTPS 与可信客户端。 下一课 Bearer Token 与 JWT 注意点。

加载本节练习…
← 上一课密码哈希下一课 →令牌认证