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

Spring Cloud OAuth2登录请求返回401错误排查求助

问题原因及修复方案

1. 资源服务器路径匹配错误(核心问题)

Zuul 路由默认会移除匹配的前缀,你配置的路由规则为/api/security/**,当请求/api/security/oauth/token转发到授权服务时,路径会被裁剪为/oauth/token。而你在ResourceServerConfig中仅放行/api/security/oauth/**路径,无法匹配到服务内部的实际端点,导致资源服务器的安全过滤器直接拦截了token请求返回401。
修复方案,修改ResourceServerConfig的HttpSecurity配置:

@Override
public void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        // 放行授权服务内部的oauth相关端点
        .antMatchers("/oauth/**").permitAll()
        .anyRequest().authenticated();
}

如果需要保留前缀转发到下游服务,可在Zuul配置中添加:

zuul.routes.security.strip-prefix=false

2. 客户端身份编码校验

请求头Authorization中的Basic认证字符串,是clientId:clientSecret拼接后用UTF-8编码再转Base64得到的,需要确认:

  • 拼接时没有多余空格、没有遗漏中间的冒号
  • 用到的clientId、clientSecret和配置文件中config.security.oauth.client.id、config.security.oauth.client.secret完全一致

3. 用户身份逻辑校验

确认自定义的UserDetailsService实现类逻辑正常:

  • 按用户名查询用户的逻辑无异常
  • 存储的用户密码是通过BCryptPasswordEncoder加密生成的,和你配置的密码编码器匹配

额外规范提示

你配置的AuthoritationServerConfig类名拼写错误(应为AuthorizationServerConfig),但属于命名规范问题,不影响代码运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 18:06:02