簡體   English   中英

Spring 在 Docker 上運行時忽略安全配置

[英]Spring Security config ignored while running on Docker

我對我的簡單 spring 啟動應用程序進行了 docker 化,我首先添加了一個存儲庫,檢查連接是否有效(確實如此),並為簡單的 model 添加了一個簡單的 controller。還添加了一個 controller 用於健康檢查。 我通過配置允許所有,但每次我嘗試訪問它時,它都會將我重定向到 localhost:8080/login。 這是為什么?

另外,如果我按原樣運行這個項目(而不是 docker 圖像),它就可以工作。

我的配置(我使用它是因為 WebSecurityConfigurerAdapter 似乎已被棄用):

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests((authz) -> authz
                        .anyRequest().permitAll()
                )
                .httpBasic(withDefaults());
        return http.build();
    }
}

應用程序.yml:

spring:
  datasource:
    url: ${SPRING_DATASOURCE_URL}
    username: ${SPRING_DATASOURCE_USERNAME}
    password: ${SPRING_DATASOURCE_PASSWORD}
  jpa:
    hibernate:
      ddl-auto: none

docker-compose.yml

version: '2'

services:
  app:
    image: spring-backend
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/local_db
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=postgres
      - SPRING_JPA_HIBERNATE_DDL_AUTO=none
      - JAR_FILE=./build/libs/*.jar

  db:
    image: 'postgres:13.1-alpine'
    container_name: local_db
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=local_db

Dockerfile:

FROM openjdk:11-jre
ARG JAR_FILE=./build/libs/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]

謝謝!

您應該禁用 httpBasic。

httpBasic.withDefaults()

激活 spring 安全。

看:

HttpBasicConfigurer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM