JOURNAL / WORDS & IDEAS

Spring Security 入门与 Actuator 访问控制

区分身份认证、权限判断和管理端点暴露,整理 Spring Security 配置关注点。

阅读设置

认证、授权与管理端点

Spring Security 判断“请求者是谁”和“是否可以执行操作”;Actuator 提供健康、指标等管理能力。开启端点、暴露端点和授权访问是三个独立步骤。

原文件名为 actuator.md,正文主要讲 Spring Security。本篇将两者放在同一条访问控制链中理解。

先确认版本

项目代际 常见配置方式
较旧 Spring Security 可能使用 WebSecurityConfigurerAdapter、antMatchers
Spring Security 6 / Spring Boot 3 SecurityFilterChain、authorizeHttpRequests、requestMatchers

不同版本的 API 不能直接混用。项目是否自动配置管理端点安全策略,还取决于是否已经声明自己的过滤器链。

配置时关注的职责

  • 身份来源:内存用户、数据库用户或外部身份系统。
  • 密码存储:使用适合密码的单向哈希,避免明文与通用摘要直接比对。
  • 路径规则:明确公共资源、登录入口、普通用户和管理员范围。
  • 会话与 CSRF:Cookie 会话认证的写请求通常需要 CSRF 防护,不能把禁用 CSRF 当作通用配置。
  • 失败行为:页面可跳转登录;API 应返回明确的未认证或无权限响应。

Actuator 暴露范围

下面只是端点暴露示例,不包含完整授权策略:

management:
  endpoints:
    web:
      exposure:
        include: health,info
  endpoint:
    health:
      show-details: when_authorized

只开放确有需要的端点。配置 management.server.port 可以改变监听端口,但不同端口本身不保证浏览器 Cookie 隔离,也不能替代认证与网络访问限制。

验证方法

分别测试匿名访问、普通账号访问、管理员访问、会话过期和缺少 CSRF 的写请求。确认没有把环境变量、配置值或敏感健康详情暴露给匿名请求,再补充与项目版本一致的完整配置示例。