5월 4일부터 5월 11일, 일주일간 미니 프로젝트를 진행하였다.
💌위드인 (WithIn)
우리 조직의 이야기를 공유하기 위한 커뮤니티 사이트
좋은 일은 다 같이 축하해주고, 슬픈 일은 다 함께 위로와 격려를 해줄 수 있는 우리만의 공간!
📆 프로젝트 기간
2023년 5월 5일 ~ 2023년 5월 11일
🗝 ERD
🛠 트러블 슈팅
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:1.9.6'
이는 springBoot 2.~~ 에 적용이 가능한 springDoc이였다. 하지만, 현재 프로젝트에서는 springBoot 3.0.6 환경에 있었으므로 버전을
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
으로 변경하여 주입하여야 했다.
jasypt.password
가 코드 내부에 존재하면 암호화한 의미가 없기 때문에 외부에서 전달 받아 사용할 수 있도록 했다.@Value("${jasypt.password}")
private String encryptKey;
@SpringBootApplication
@EnableJpaAuditing
@EnableEncryptableProperties
public class WithInApplication {
...
}
@EnableEncryptableProperties는 jasypt라이브러리를 활성화하고, 암호화된 값을 복호화하는 빈을 생성한다. 따라서, jasypt로 암호화한 정보들을 쉽게 관리할 수 있다.
-Djasypt.password=****
를 넘겨주지 않으면 어떤 오류가 나올지 궁금해서 테스트 해봤다.배포 관련 트러블 슈팅과 동일한 오류가 발생한다.
java -jar WithIn-0.0.1-SNAPSHOT.jar
프로젝트 폴더 속 jar 파일을 실행을 진행하였지만, 아래와 같은 오류가 나타났다.
이 오류는 현재 프로젝트에서 작성된 설정 정보를 암호화하기 위해 사용된 jasypt의 password를 찾지 못하여 일어난 오류이다.
현재 jasypt.encrypt.key는 인텔리제이 내 Run/Debug Configuration에서 Build 시 호출되는 명령어
-Djasypt.password=**
를 넣어두었다.
password를 찾기 위해 .jar파일을 실행하는 명령어에서 아래와 같은 코드를 추가하였다.
java -jar WithIn-0.0.1-SNAPSHOT.jar --jasypt.password=값
(이 방법은 jasypt.password
프로퍼티를 명령줄 인수로 전달하여 실행하는 방법으로 일시적인 목적으로 사용할 수는 있지만, 보안상 취약점이 될 수 있다.)
보안상 취약점이 존재하는 것과 추가로 서버 실행은 정상적으로 작동하였지만, 서버 작동에서 연결 거부 또는 연결 시간 오래걸림의 문제가 생겼다.
이러한 이유를 예상해본 결과 jasypt password 인수를 찾지 못하는 현상인 것 같다.
--jasypt.password=값
옵션은 Spring Boot의 옵션으로 인식되어야 하지만, java -jar WithIn-0.0.1-SNAPSHOT.jar
명령어는 순수한 Java 명령어이므로, Spring Boot의 옵션을 인식하지 못한다.그래서 이를 해결할 방법으로 Build 시 호출되는 명령어를 jar 파일 실행 명령어와 함께 작동되도록 넣어주는 방식을 해보았다.
-jar -Djasypt.password=** WithIn-0.0.1-SNAPSHOT.jar
이렇게 실행을 해보았더니 모두 정상적인 호출이 가능한 것을 확인하였다.
CRUD부터 배포까지 많은 것을 배울 수 있던 한주였다.