You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular适配Waffle Spring Boot+Spring Security及内嵌Tomcat的问题求助

问题原因

该报错是Waffle的NegotiateSecurityFilter默认拦截了所有请求,浏览器请求静态HTML资源时携带的Negotiate头不符合Waffle预期格式,或是静态资源本身不需要走Windows认证流程被过滤器误拦截导致。

修复适配方案

1. 配置Spring Security放行静态资源

在Spring Security配置类中添加静态资源白名单,跳过Waffle认证流程:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        // 按实际静态资源存放路径调整匹配规则
        web.ignoring()
                .antMatchers("/**.html",
                        "/**.js",
                        "/**.css",
                        "/assets/**",
                        "/favicon.ico");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.addFilterBefore(negotiateSecurityFilter(), ExceptionTranslationFilter.class)
                .authorizeRequests()
                // 业务接口要求认证
                .anyRequest().authenticated()
                .and()
                // 前后端分离场景可按需关闭csrf校验
                .csrf().disable();
    }

    // 原有Waffle相关Bean(NegotiateSecurityFilter、WindowsAuthenticationProvider等)保持官方示例配置即可
}

2. 限制Waffle过滤器拦截范围

手动指定Waffle过滤器仅拦截需要认证的业务接口,避免拦截静态资源:

@Bean
public FilterRegistrationBean<NegotiateSecurityFilter> negotiateSecurityFilterRegistration(NegotiateSecurityFilter filter) {
    FilterRegistrationBean<NegotiateSecurityFilter> registration = new FilterRegistrationBean<>(filter);
    // 仅拦截需要认证的业务接口路径,比如/api/*
    registration.addUrlPatterns("/api/*");
    registration.setEnabled(false);
    return registration;
}

3. Angular单页应用适配

将Angular打包后的dist目录所有文件放入Spring Boot的resources/static目录下,添加路由适配规则避免页面刷新404:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/{path:[^\\.]*}").setViewName("forward:/index.html");
    }
}
验证

配置完成后重启项目,访问静态HTML、Angular页面不会再触发Waffle认证,仅请求业务接口时才会走Windows认证流程,不会再出现Invalid Authorization header报错。

内容的提问来源于stack exchange,提问作者mirbachl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:12:02