-
정리된 인증 과정
별도의 인증 서버는 두지 않는다 프론트엔드를 Next.js로만 구현하려고 했고 이는 키클록 인가 서버 혹은 스프링으로 인가 서버를 두게 되면 페이지를 Next.js로 개발하는 것에 한계가 있다. 키클록 인가 서버는 자체 페이지를 쓰거나 프리마커로 커스텀 하는 방식을 써야 하며, 스프링 인가 서버는 프레임워크에서 로그인 페이지를 렌더링해야 한다. 타임리프를 쓰면 되긴 하지만 이번 프로젝트에서는 직접 토큰을 다뤄보는 연습을 해보자. 리소스 서버에서 토큰을 발행한다 JJWT 라이브러리를 사용해서 토큰을 발행하고 클레임을 추출한다 토큰 정책 액세스 토큰의 만료 기간을 짧게 가져가고 리프레시 토큰의 만료 기간을 길게 가져가는 방식 액세스 토큰이 유출됐을 때의 대안인데 리프레시 토큰이 유출되면 관리자가 무효화 하는..
-
[Window] 데이터베이스 접속 후 새로운 데이터베이스와 새로운 유저와 새로운 권한
터미널로 접속할 때 psql만 입력하면 컴퓨터의 사용자 아이디로해 해서 로그인 안내가 출력된다. PS C:\Users\taetae> psql taetae 사용자의 암호: 이 암호는 기억이 안 나서 기존에 존재하는 postgres 계정으로 접속했다. 이를 위해서 -U(대문자)를 붙이면 된다. (참고로 맥 기준으로 설치 후 최초 접속인 경우에 psql postgres로 비밀번호 없이 접속할 수 있었다. 윈도우는 기억이 안 남) PS C:\Users\taetae> psql -U postgres postgres 사용자의 암호: 접속을 완료하면 버전이 출력되고 명령 프롬프트가 뜬다. 다음은 14.8 버전 기준으로 유저, 데이터베이스 생성 및 권한 부여 명령어다. 1. 새로운 유저를 만든다(공식문서) postgre..
-
[JPA][Archiving] in_clause_parameter_padding 옵션
이 글은 nhn cloud 기술 블로그에 올라온 글을 그대로 가져왔습니다. (원본 링크) Java ORM 기술의 표준 명세인 JPA가 소개된 지 참 오래되었지만, 국내 현실상 대규모 시스템에서 적용되어 사용된 운영 경험이 충분히 쌓이지 않고 공유되지도 않는 것 같습니다. 대부분 JPA를 사용한다고 하면 Hibernate를 구현체로 사용하게 됩니다. 제가 담당하는 서비스 역시 Spring Data JPA를 활용하고 있고 JPA 구현체로 Hibernate를 사용하고 있습니다. 개발과 서비스를 운영하면서 겪은 일 중에 SQL의 in 절과 관련해서 발생한 문제를 해결하면서 알게 된 옵션과 그로 인한 효과를 소개해 드리고자 합니다. 증상 운영 중인 서버가 이유 없이 응답이 느려집니다. 그리고 가비지 컬렉션을 너무..
-
Update
특정 필드만 업데이트 하려는 목적으로 코드를 작성하지만 JPA가 작성하는 query를 보면 해당 레코드 전체를 업데이트 한다. 이는 JPA가 어플리케이션을 로딩할 시점에 PreparedStatement로 해당 엔티티의 update query를 미리 만들어둔다고(참고 인프런 김영한님 답변). 해당 내용은 공식 문서에서 찾게 되면 해당 내용를 업데이트 하겠다. 어쨌든 오동작이나 최적화 문제는 아니라는 것을 알고 있자. 굳이 필요하면 @DynamicUpdate를 하이버네이트가 변경된 필드에 대해서는 업데이트하도록 할 수 있다. 아직 개발을 오래 한 건 아니지만 '굳이' 해야 되는 일은 대부분 안 해도 되는 거더라.