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

Spring OAuth2客户端启动报错:Issuer配置解析失败及HttpMessageConverter异常

问题描述
  • 基于Spring框架搭建OAuth2授权服务器、资源服务器与客户端,curl测试授权服务器和资源服务器运行正常
  • 客户端配置(含application.yaml)完成并启动后,出现两类错误:
    1. Unable to resolve Configuration with the provided Issuer of "http:localhost:9000"
    2. org.springframework.web.client.UnknownContentTypeException(找不到适配text/html类型的HttpMessageConverter)
  • 已尝试配置MappingJackson2HttpMessageConverter,但问题未解决

解决方案

1. 修复Issuer地址格式错误

错误提示中的Issuer地址http:localhost:9000缺少了双斜杠,这是核心问题之一。Spring Security OAuth2客户端无法解析格式错误的地址,导致无法获取授权服务器的元数据(如/.well-known/openid-configuration端点)。

检查客户端application.yaml中的Issuer配置,修正为正确格式:

spring:
  security:
    oauth2:
      client:
        provider:
          oauth2-provider:
            issuer-uri: http://localhost:9000

2. 解决UnknownContentTypeException问题

这个错误通常是因为客户端请求授权服务器元数据时,得到的是text/html类型的响应(比如授权服务器返回错误页面,而非JSON格式的元数据),默认HttpMessageConverter不支持解析该类型。

排查与修复步骤:

  • 先验证授权服务器端点:用curl访问http://localhost:9000/.well-known/openid-configuration,确认返回内容类型为application/json。如果返回HTML错误页面(如404、500),先修复授权服务器的端点配置问题。
  • 检查客户端请求地址:如果Issuer地址之前错误,客户端请求可能跳转到了错误页面,导致返回text/html,修复Issuer地址后即可解决。
  • 自定义HttpMessageConverter(必要时):若确实需要处理text/html响应,可给客户端使用的RestTemplate添加对应支持:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class OAuth2ClientConfig {

    @Bean
    public OAuth2RestTemplate oAuth2RestTemplate(OAuth2ProtectedResourceDetails resourceDetails) {
        OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails);
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        List<MediaType> mediaTypes = new ArrayList<>(converter.getSupportedMediaTypes());
        mediaTypes.add(MediaType.TEXT_HTML);
        converter.setSupportedMediaTypes(mediaTypes);
        restTemplate.getMessageConverters().add(converter);
        return restTemplate;
    }
}

排查优先级
  1. 优先修正Issuer地址的格式错误,这是引发后续连锁问题的根源
  2. 验证授权服务器元数据端点的可用性
  3. 最后根据实际情况配置HttpMessageConverter

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:32:43