Spring 3

org.h2.jdbc.JdbcSQLSyntaxErrorException 해결하기

들어가며 JPA 학습 중 테이블 생성과정에서 아래 오류가 발생했다. org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table if exists order cascade " via JDBC Statement 바로 구글링을 해봤다. 문제의 원인 예제 코드의 엔티티 중 "Order"가 문제였다. SQL의 예약어를 엔티티 이름으로 사용하는 경우 위와 같은 문제가 발생한다. Order는 Order by에 사용되는 키워드다. 다른 예시로 이 글에서는 "Group"을 엔티티 이름으로 사용하여 동일한 문제가 발생했던 것을 알 수 있었다. Group 또한 Group by의 예약어로 사용된다. 해결방안 근본적으로 예약..

[개발 Tip] Yaml, Properties 안에 중요한 정보를 암호화하기 feat. Jasypt 사용 방법

들어가며 며칠 전, Github에 토이 프로젝트 소스를 올렸더니, GitGuardian에서 *.yaml 파일에 계정 정보가 들어가 있다고 알려주었다. 단순히 파일만 삭제하고 커밋하면 git log를 통해 다시 확인할 수 있는 여지가 있어서 reset 후 gitignore에 *.yaml파일을 추가하여 재 커밋하였다. 이런 문제를 더 쉽게 해결할 수 있는 방법은 없을까 고민하다 프로퍼티 정보 암호화 방법을 찾게 되어 이렇게 공유한다. Jasypt란 무엇?? Java Simplified Encryption의 약자로, 자바로 간단히 암호화할 수 있게 도와주는 라이브러리다. 읽을 때는 '자시프트' 라고 발음하는 것 같다(유튜브 참고) 자세한 정보는 이곳을 참고하여 확인하면 된다. 그럼 바로 예제 코드를 살펴보자...

Springboot에서 BCrypt 암호화(해시화) 구현하기 feat. 시큐리티 인증 없이 BCrypt 사용하기

들어가며 스프링 시큐리티를 공부하다가 만나게 된 BCrypt 알고리즘은 어떤 특징이 있나 살펴보기 위해 포스팅을 작성했다. 또한 예전에 기술면접에서 BCrypt에 대해 잘못된 대답을 했던 부끄러운 기억이 생각나서 '언젠가는 잘못 대답했던 내용을 만회하기 위해 정리해서 글을 써야지' 했던 다짐을 실천하는 이유도 있다. 그럼 BCrypt 방식에 대해 알아보고 어떻게 코드를 작성할 수 있는지 확인해보자. BCrypt 암호화란? 암호화 방식은 아래와 같이 구분할 수 있다. 먼저 복호화가 가능한지에 따라 양방향 / 단방향으로 구분되고, 복호화할 때 사용하는 비밀키가 암호화할 때 그대로 사용되면 대칭키, 서로 다른 키를 사용하면 비대칭키가 된다. BCrypt 알고리즘은 SHA 알고리즘과 마찬가지로 복호화 불가능하기..