본문 바로가기
728x90

TIL(Today I Learned)25

Spring Security를 이용한 비밀번호 암호화 로직 구현 과정 기록 오늘은 회원 관리 시스템에서 평문(plain text)으로 암호를 저장하는 것은 보안상 굉장히 위험하기 때문에, 이를 Spring Security를 이용해 암호화(Encryption)하는 과정을 진행하고, 기록하려 합니다. Spring Security 의존성 추가 양방향과 단방향 암호화란 뭘까? 제가 적용할 암호화는 두 가지 중에서 단방향 암호화입니다. 그전에 양방향과 단방향 암호화가 각각 무엇을 의미하는지 찾아봤습니다. 양방향 암호화: 암호화된 암호문을 복호화할 수 있는 암호화 단방향 암호화: 암호화된 암호문을 복호화 불가능한 암호화 양방향 암호화는 또 대칭키를 사용하는 방식과 비대칭키를 사용하는 방식으로 나뉜다고 하는데, 이번에 필요한 개념은 아니기 때문에, 여기까지만 정리하고 넘어가겠습니다. 단방향.. 2023. 2. 28.
사이드 프로젝트 JWT 적용 과정 기록 오늘은 주말을 맞아 jwt를 공부할겸, 여러 기술 블로그와 강의를 참고해서 jwt를 공부하고 사이드 프로젝트에 적용해 봤고, 이 내용을 간단하게 기록해보려 합니다. JWT에 대해 잘 정리된 글들과 실습 예시들이 많기 때문에, 그러한 글들을 참고해서 적용한 과정을 이해한 방식과 함께 정리해 보겠습니다. JWT란? JWT는 JSON Web Token의 약자로 클라이언트와 서버 또는 서비스와 서비스 사이의 통신에서 인증 (Authentication) 및 권한 인가(Authorization)을 위해 사용하는 토큰을 의미합니다. JWT는 다음의 세 가지 부분으로 구성됩니다. header: token 서명에 사용되는 알고리즘에 대한 정보가 포함됩니다. payload: 사용자 정보 또는 권한 부여 요청과 같은 전송해.. 2023. 2. 26.
[Spring] data.sql을 이용한 테스트 데이터 추가하기.. (스프링 부트 2.7.8 버전) Spring을 이용해서 jwt 관련 개념을 공부하다가 맞딱뜨린 문제를 해결한 과정을 기록하려 합니다.. 대략 user, authority, user_authority 세 개의 entity를 JPA를 이용해 관리하는 애플리케이션이고, user, authority가 다대다 관계로 매핑되는 예제를 구현하고 있었습니다. 그러던중 data.sql을 resources 폴더에 넣어 초기화 과정에서 테스트 데이터를 넣는 과정을 실행하는데.. 아무리 h2 database를 조회해도 데이터가 추가되지 않았습니다.. 해결책부터 말하자면, application.yaml 설정 파일에 다음 두 가지를 추가해서 해결했습니다. sql.init.mode jpa.defer-datasource-initialization 이런 문제가 발생.. 2023. 2. 22.
Spring 프로젝트에 CORS 적용하기 들어가면서.. 이번에 진행하는 프로젝트가 처음으로 프론트 파트와 백엔드 파트를 분리해서 개발하는 방식이고, 저는 이 중 백엔드 파트의 WAS를 spring framework를 이용해 개발하는 파트를 담당하게 되었습니다. CORS에 대한 개념 정리 공부하게된 이유... 이번에 프로젝트를 진행하면서, 처음으로 프론트엔드 파트와 백엔드 파트를 나누어 개발을 진행하게 되었는데 배포 방식에 대해 이야기 하던 도중 프론트 서버와 백 서버를 kkkdh.tistory.com 그래서 이번에는 지난 글에서 정리했던 SOP와 CORS에 대한 개념을 바탕으로 클라이언트 측에서 오는 교차 출처 차원 허용에 대한 부분을 처리하게 되었고, 이번 글에서는 이 과정을 간단하게 기록해보려고 합니다! CORS 허용하는 출처 등록하는 방법.. 2023. 2. 15.
CORS에 대한 개념 정리 공부하게된 이유... 이번에 프로젝트를 진행하면서, 처음으로 프론트엔드 파트와 백엔드 파트를 나누어 개발을 진행하게 되었는데 배포 방식에 대해 이야기 하던 도중 프론트 서버와 백 서버를 분리하게 되는 경우 CORS와 관련된 문제가 발생한다는 점에 대한 개념을 잘 이해하지 못해서 이에 대해서 정리해보려고 합니다. CORS가 뭔가 공부하기 위해서 얄코님의 설명 영상과 여러 개발자 분들의 글들을 참고해서 공부했습니다!! 그래서 CORS는 뭔데?? CORS는 Cross-Origin Resource Sharing의 약자로 우리 말로 풀면, 다른 origin간의 자원 공유라고 해석할 수 있을 것 같다. 그런데, 여기서 말하는 origin은 무엇을 의미할까?? Origin은 바로 자원의 출처를 의미합니다. 그러니깐 .. 2023. 2. 6.
[Java] 시간 정보 다루기 Date JDK 1.0부터 지원하는 java.util 패키지의 Date 클래스는 날짜와 시간을 구하는 목적으로 사용할 수 있다. 하지만, 최초로 만들어진 클래스이니 만큼 지역화에 대한 부분이 고려되지 않고 만들어진 클래스이다. 지역에 따라 시간, 통화(원, 달러, 엔, 유로, 파운드 등..), 언어등에 대하여 고려하는 프로그래밍을 지역화에 맞춘 프로그래밍이라고 한다 이런 Date class의 단점을 보완하기 위해서 Calendar 클래스(JDK 1.1부터)가 만들어졌다고 한다. 스펙을 찾아봐도 대부분의 Date 생성자가 deprecated로 표기되어 있으니 웬만하면, Calendar를 사용하는 것이 좋을 것 같다. 위와 같은 예제처럼 사용할 수 있으며, SimpleDateFormat을 활용해서 원하는 양.. 2023. 2. 3.
728x90