用途
该技能用于在 Spring 项目中创建 Spring Security 配置类,生成带 @Configuration 与 @EnableWebSecurity 注解的类,内含 filterChain() 方法以及认证、授权、HTTP 保护相关的 DSL 链、Bean、依赖和 application.properties 配置。
主要能力
- 依据项目上下文自动检测语言(Java/Kotlin)、Spring Boot 版本、模块名、构建文件、主包名、已有依赖、已有安全配置与角色。
- 支持多种认证路线:Form Login(HTTP Session)、JWT(OAuth2 Resource Server)、OAuth2/OIDC Login(外部提供方如 Keycloak、Google、GitHub)、Authorization Server(要求 Spring Boot 3.1+)、LDAP、Custom(空 filterChain,仅公共 DSL 块)。
- 生成前检查权限:若项目已存在安全配置,会提示用户是否新建,并在用户确认时建议不冲突的类名,用户拒绝则停止。
- 输出代码时仅使用示例文件中的代码,禁止凭知识添加框架 API 调用;示例中的全限定名需提取为 import,代码体使用短类名。
- 生成依赖与属性:按 Boot 3.x / 4.x 版本选择对应依赖写法,Boot 4.x 中 OAuth2 相关 artifact 名称由 spring-boot-starter-oauth2-* 改为 spring-boot-starter-security-oauth2-*;Authorization Server 在 Boot 3.0 需手动添加 spring-security-oauth2-authorization-server:1.1.0(无 starter)。
- 将配置写入 application.properties,并对缺少的依赖调用 refresh_build_system_model。
使用方式
- 预检 Spring MCP:确认工具列表中存在 amplicode MCP 服务器暴露的工具(如 get_project_summary、list_module_dependencies、get_entity_details,扁平化工具名带 mcp__amplicode__ 前缀)。若不可用,需先执行 amplicode-install 技能安装 Amplicode 插件并配置 Spring Agent 与重启 MCP 客户端。
- 读取对话上下文(Step 0):先提取用户已明确或隐含给出的输入,避免重复提问。
- 收集上下文(Step 1):调用 Spring MCP 工具获取项目摘要、模块依赖、application properties 文件、已有安全配置与角色。
- 询问认证类型(Step 2):若上下文无法确定,则询问用户选择。
- 询问变体相关问题(Step 3):按所选认证类型读取对应参考文件,若用户未说“使用默认值”则继续提问。
- 生成代码(Step 4):读取对应语言骨架与片段,组装配置类,仅在 filterChain 中保留符合用户选项的行,DSL 顺序依变体而定,并以 return http.build(); 结尾。
- 依赖与属性(Step 5):读取基础依赖文件与变体依赖文件,按 bootMajor 选择版本段落,添加缺少的依赖并刷新构建模型,随后写入属性文件。
默认值
- 认证类型:必须询问。
- 禁用 CSRF:否。
- 禁用 headers:否。
- 禁用匿名访问:否。
- 授权规则:anyRequest().authenticated()。
- language、bootVersion:从 get_project_summary 自动检测。
- className:SecurityConfiguration,仅建议并确认。
- packageName:与已有 @Configuration 相同。
- appPrefix:从已有 @Value 属性或 app 自动检测。
若用户表示使用默认值,则跳过所有“Always ask? = NO”的问题,仅问必答项。
适用场景
- 需要在 Spring 项目中新增安全配置类,且希望按标准 DSL 结构生成过滤器链。
- 需要覆盖常见认证与授权方案,包括表单登录、无状态 JWT、外部 OIDC 提供方、自建授权服务器、LDAP。
- 项目使用 Amplicode IntelliJ 插件与 Spring MCP 服务器,并能提供项目上下文。
- 多模块项目:若 get_project_summary 返回多个模块,需先询问使用哪个模块,再以该模块调用 MCP 工具。
限制
- 必须依赖 Spring MCP 服务器与 Amplicode IntelliJ 插件;若不可用需先执行 amplicode-install,并在 IntelliJ IDEA Ultimate/Community 或 GigaIDE 中从 https://amplicode.ru/marketplace 安装,再在欢迎屏点击 «Настроить Spring Agent» 并重启 MCP 客户端。
- 代码只能来自 examples/ 文件;如无匹配示例,须停止并询问用户。
- 仅能替换 Variables 中声明的变量,不得添加 import、方法或示例中不存在的代码,不得添加注释或便利方法。
- 每个 Bean 方法必须被 filterChain 或其他 Bean 引用,不得生成孤立的 Bean。
- 严禁以任何形式向用户索取凭据(client secret、manager 密码、API key、token 等);凭据字段一律使用环境变量占位符(如 ${OAUTH_CLIENT_SECRET}、${LDAP_MANAGER_PASSWORD}、${AUTHSERVER_CLIENT_SECRET})写入 application.properties,并告知用户需在运行前设置这些环境变量。
- Authorization Server 需要 Spring Boot 3.1+,若版本更低需警告用户并请其改选其他类型。
- HTTP Session 场景下,仅当设置了非默认 logout 选项时才生成 logout DSL;若配置了 User Storage,则 filterChain 中须包含 http.userDetailsService(...) 调用。
- JWT 相关版本差异:Boot 4.x 使用 spring-boot-starter-security-oauth2-*;会话管理并发会话 API 在 Boot 3.1 有变化。