🔥새해맞이 특별 라이브 선착순 신청🔥

백엔드 프로젝트 2기 코틀린 - 4주차

스프링 시큐리티

스프링 시큐리티를 사용하기 위한 의존성 추가

implementation("org.springframework.boot:spring-boot-starter-security")

스프링 시큐리티를 이용하여 로그인 을 구현하기 위해선 컨피그클레스를 추가해야 합니다.

Configuration
 class AdminSecurityConfiguration {
    @Bean
    fun passwordEncoder(): PasswordEncoder {
        return BCryptPasswordEncoder()
    }
    @Bean
    fun filterChain(httpSecurity: HttpSecurity): SecurityFilterChain {
        return httpSecurity
            .authorizeHttpRequests { authorizeHttpRequests ->
                authorizeHttpRequests
                    .requestMatchers(AntPathRequestMatcher("/admin/**")).authenticated()
                    .anyRequest().permitAll()
            }.csrf { csrf ->
                csrf.disable()
            }.headers { headers ->
                  headers.addHeaderWriter(XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
  }.formLogin { formLogin ->
                 formLogin.defaultSuccessUrl("/admin")
  }.logout { logout ->
                 logout.logoutRequestMatcher(AntPathRequestMatcher("/admin/logout"))
                 .logoutSuccessUrl("/")
  }.build()
  }
 }

스프링 시큐리티를 이용하기 위한 빈들을 생성합니다

BCryptPasswordEncoder 는 해시 함수를 이용하여 암호화된 비밀번호를 생성해줍니다.

SecurityFilterChain 프로젝트의 보안 필터를 체인 형태로 구성하여 csrf설정을 허용하지 않을 수 있고

로그인과 로그아웃의 설정을 추가할 수 있습니다.

 

프로젝트 배포

Docker Compose 파일 설정

version: '2'
 services:
  mysql:
  image: mysql
  container_name: mysql
  ports:
    -"3306:3306"
  environment:
    - "MYSQL_ROOT_PASSWORD=dkssudgktpdy"
    -  "TZ=Asia/Seoul"
    -  "LC_ALL=C.UTF-8"

  command:
    - --character-set-server=utf8mb4
  volumes:
    -  /var/lib/docker/volumes/mysql/_data:/var/lib/mysql

도커 컴포즈 파일을 통해 도커에서의 포트와 로컬에서의 포트를 설정하여 DB를 연결할 수 있습니다.

 

Dockerfile

FROM openjdk:17
 LABEL maintainer="infomuscle10@gmail.com"
 VOLUME /tmp
 EXPOSE 8080
 ARG JAR_FILE=build/libs/portfolio-0.0.1-SNAPSHOT.jar
 ADD ${JAR_FILE} portfolio-yongback.jar
 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar", "/portfolio-yongback.jar"

build/libs/portfolio-0.0.1-SNAPSHOT.jar 의 자르 파일을 이용하여 빌드를 실행합니다. 그 실행된 파일은 도커에서 portfolio-yongback.jar 로 표시 됩니다.

 

Google Clud Platform에서 Compute Engine 인스턴스 생성하기

AWS, Azure와 같은 클라우드 컴퓨팅 서비스로서 컴퓨터의 일부를 금액을 지불하여 사용하는 기술 입니다. GCP의 컴퓨트 엔진을 이용하여 인스턴스를 생성, 프로젝트를 배포 합니다.

 

도메인 연결

프로젝트가 빌드된 ip를 DNS를 이용하여 접속할 수 있게 도메인 이름을 구입하여 사용할 수 있습니다.

HTTPS 연결하기

http로 연결되는 프로젝트를 https를 이용하여 보다 안전하게 연결하여 사용할 수 있게 합니다.

댓글을 작성해보세요.

채널톡 아이콘