首页 > 解决方案 > 是否可以在 Spring Boot 中配置 OAuth2 以使用 JSON 而不是 HTML 响应 InvalidTokenException?

问题描述

我的 Spring Boot 应用程序OAuth2用于安全和令牌管理。我正在使用无效令牌查询我的 REST 端点之一,以使用 Postman 测试其响应。端点以 401 InvalidTokenException 正确响应,但当我希望它以 JSON 响应时,响应内容是 HTML。这可以通过代码完成吗?

示例响应

<InvalidTokenException> 
    <error>invalid_token</error> 
    <error_description>Access token expired: … my token… </error_description> 
</InvalidTokenException>

标签: htmljsonspring-bootoauth-2.0spring-security-oauth2

解决方案


将自定义添加AuthenticationFailureHandler到您的安全配置中,然后在您的自定义实现中准备响应:

http.oauth2Login()
    .failureHandler(customFailureHandler)

故障处理程序示例:

public class CustomFailureHandler extends SimpleUrlAuthenticationFailureHandler {
    @Override
    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException {
        response.sendError(401, "XML HERE");
    }
}

推荐阅读