美文网首页
Spring Security H2Database 403 或

Spring Security H2Database 403 或

作者: hdfg159 | 来源:发表于2019-01-22 12:28 被阅读0次

    前言

    • 此文也是自己在编程上遇到问题的一些记录,希望能给大家带来一些帮助😂

    问题

    Spring Boot 启用 Spring Security 以后发现 H2 Database 的控制台登陆页面是无法访问的。

    情况 1 :

    能进去控制台的登陆页面(输入数据库用户名和密码的页面),但是登陆以后出现白标签页错误( White Label Error ) ,返回码是 403

    白标签页错误403.png

    情况 2 :

    能进去控制台的登陆页面(输入数据库用户名和密码的页面),但是登陆以后出现界面是无法显示(空白页面)。

    原因分析

    因为是启用 Spring Security 以后出现的问题,问题根源可能就是 Spring Security 的安全配置问题。我们可以去开启 Spring Security 的 debug 日志,查看日志分析原因,但是详细的分析这里就不细说了。

    Spring Boot 在配置文件启用 Security 模块的日志输出如下,具体是设置 org.springframework.security 包的日志输出级别为debug

    logging:
      level:
        root: info
        com.hdfg159: debug
        org:
          springframework:
            web: debug
            security: debug
    

    解决方案

    根据上面的日志输出,我们可以得到问题的根源。

    情况 1 :

    Spring Security 默认开启了 CSRF 的保护,H2Database 相关的请求需要携带 CSRF Token 及相关参数,所以访问时候出现了 403 。

    方案 1 :

    我们可以去修改 Spring Security 的相关安全配置,把 CSRF 保护关掉,编写安全配置文件继承 WebSecurityConfigurerAdapter 并覆写 protected void configure(HttpSecurity http) throws Exception 方法,加入以下代码:

    http.csrf().disable();
    

    不过不建议这样做,安全性不高。

    方案 2 :

    操作同方案 1 ,但是配置项写法不一样,具体代码如下(
    /h2-console 是配置好的 H2Database 控制台访问路径):

    http.csrf().ignoringAntMatchers("/h2-console/**")
    

    情况2:

    Spring Security 默认页面不允许 iframe (不安全),会在响应头返回:

    X-Frame-Options:DENY
    

    导致 H2Database 访问页面空白,解决方案也是有两种,同理情况 1 中配置 CSRF 的方式。

    方案 1 :

    禁用 frameOptions(),具体代码如下:

    http.headers().frameOptions().disable();
    
    方案 2 :

    允许同源使用 iframe ,具体代码如下:

    http.headers().frameOptions().sameOrigin();
    

    相关文章

      网友评论

          本文标题:Spring Security H2Database 403 或

          本文链接:https://www.haomeiwen.com/subject/qvdljqtx.html