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

如何在Waffle中强制使用Kerberos以避免回退到NTLM?

强制Waffle使用Kerberos而非回退到NTLM

当然可以!要让Waffle强制使用Kerberos、彻底禁用NTLM回退,你可以通过几种配置方式实现,具体看你的集成场景:

1. Servlet Filter配置(Java Web应用最常用)

如果你在用Waffle的NegotiateSecurityFilter,直接在配置里添加allowNTLM参数并设为false即可:

  • 若使用web.xml配置:
    <filter>
        <filter-name>NegotiateSecurityFilter</filter-name>
        <filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class>
        <init-param>
            <param-name>allowNTLM</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>
    
  • 若用Spring Boot等注解式配置,可以通过FilterRegistrationBean设置该参数:
    @Bean
    public FilterRegistrationBean<NegotiateSecurityFilter> waffleFilter() {
        FilterRegistrationBean<NegotiateSecurityFilter> registrationBean = new FilterRegistrationBean<>();
        NegotiateSecurityFilter filter = new NegotiateSecurityFilter();
        filter.setAllowNTLM(false);
        registrationBean.setFilter(filter);
        // 其他配置,比如urlPatterns等
        return registrationBean;
    }
    

这个参数会直接拒绝所有NTLM认证请求,只接受Kerberos协议的请求。

2. 自定义编程集成场景

如果是手动构建Waffle的认证提供者,可以直接设置allowNTLM属性为false:

NegotiateSecurityFilterProvider kerberosOnlyProvider = new NegotiateSecurityFilterProvider();
kerberosOnlyProvider.setAllowNTLM(false);

List<ISecurityFilterProvider> providers = new ArrayList<>();
providers.add(kerberosOnlyProvider);

NegotiateSecurityFilter filter = new NegotiateSecurityFilter();
filter.setProviders(providers);

3. 前置检查:确保Kerberos环境正常

禁用NTLM回退后,没有备选认证方式了,所以一定要先确保Kerberos本身能正常工作:

  • 确认应用服务器的服务账户已绑定正确的SPN(服务主体名称),比如HTTP/your-app-domain.com@YOUR-REALM.COM
  • 客户端机器要能正常解析SPN并获取Kerberos票据,避免因为Kerberos配置失败导致认证直接报错

这样配置后,Waffle就只会处理Kerberos认证请求,不会再回退到NTLM啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:50:09