백엔드 프로젝트 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를 이용하여 보다 안전하게 연결하여 사용할 수 있게 합니다.
댓글을 작성해보세요.