提问者:小点点

Spring Boot未格式化的BadCre凭据异常


我有一个Spring Boot配置的服务。通常我在本地测试它,然后将其作为. war部署到ElasticBeansStalk上AWSTomcat。

事情是这样的:AWS抛出的错误凭证异常的格式各不相同,与我的开发环境相比(我在服务中嵌入了Tomcat,Spring boot的默认值),例如:

如果我在本地抛出BadCre凭据异常,我会得到一个JSON错误:

{
"timestamp": 1445622806489,
"status": 401,
"error": "Unauthorized",
"message": "Invalid user/password",
"path": "/user"
}

如果如果在部署的服务中遇到相同的错误,我会得到这个未格式化的混乱:

<!DOCTYPE html>
<html>
<head>
    <title>Apache Tomcat/8.0.23 - Error report</title>
    <style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style>
</head>
<body>
    <h1>HTTP Status 401 - Invalid user/password</h1>
    <div class="line"></div>
    <p>
        <b>type</b> Status report
    </p>
    <p>
        <b>message</b>
        <u>Invalid user/password</u>
    </p>
    <p>
        <b>description</b>
        <u>This request requires HTTP authentication.</u>
    </p>
    <hr class="line">
        <h3>Apache Tomcat/8.0.23</h3>
    </body>
</html>

我是否可以对Spring进行任何配置,以便我可以在所有错误消息上强制使用前一种格式,即使在导出为. war时也是如此?


共1个答案

匿名用户

这个问题是由ErrorPageFilter引起的,在嵌入式环境中不需要,但在非嵌入式环境中使用,因此,当部署到. war时,它可能会根据配置导致问题,如Spring Boot的github上的bug报告所述。

该问题的一种解决方案是验证是否启用了默认的Spring Boot Security设置,删除任何@EnableWebSecurity或将/error添加到应用程序的排除路径。