Refresh Token을 왜 구현해야 하는가?우리는 일반적으로 한번 로그인한 사이트에서는 어느 정도 계속 로그인이 유지되길 바란다. 특히 자주 방문하는 웹사이트를 매번 로그인해야 한다면 정말 번거로운 일이 된다. 하지만 이를 위해서 Access Token의 유효기간을 매우 길게 설정한다면, 악의적인 공격자가 이 Access Token을 탈취해서 사용할 수 있는 위험성이 커진다.이를 해결하기 위해서 Access Token 자체의 유효기간은 짧게 설정(예: 한 시간)하되, Access Token이 expired될 경우 로그인 없이 새롭게 발급받을 수 있게 도와주는 토큰이 Refresh Token이다. Refresh Token은 더 긴 유효기간을 가지고 있으며, (예: 일주일) 이 유효기간 동안 Expire..
🗄️Backend/SpringBoot
Presigned URL이란?일반적으로 사진과 같은 미디어는 S3 버킷으로 업로드되고, 해당 사진의 엔드포인트(url)만 RDB에 저장된다. 이때 사진 파일은 굉장히 많은 트래픽을 소모하므로, 프론트엔드→백엔드→ S3로 전달하는 것보다 프론트엔드→S3로 전달하는 것이 더 효율적이다. 또한 이미지를 조회할 때도 S3→백엔드→프론트엔드보다는 S3→프론트엔드로 전달하는 게 서버의 과부화를 막을 수 있다.여기서 문제는 AWS 리소스인 S3에 접근하기 위해서는 엑세스 키처럼 권한이 필요한데, 이 키를 프론트엔드가 직접 사용할 수는 없다는 것이다. 프론트엔드는 사용자가 접근 가능한 영역이므로, 프론트엔드에 키를 줄 경우 유출 문제가 생길 수 있다.이 문제를 해결하기 위해서 사용하는 것이 바로 presigned ur..
도입 계기빠르게 개발을 진행하게 되면서 클라이언트 개발자에게서 500에러 났으니 확인 부탁한다는 이야기를 듣는 경우가 많아졌는데, 이때마다 docker logs로 콘솔 에러 로그를 확인하는게 너무 번거로웠다. 기존에 이미 ExceptionHandler를 만들어서 일반적인 500 Internal Server Error일 경우 에러 메세지를 보내주긴 했는데, 나는 이렇게 일괄적인 메세지 말고도 진짜 콘솔의 에러 로그를 바로 보고 싶었다.그런데 문제는 이렇게 ErrorResponse로 바로 콘솔 에러를 클라이언트에게 보내줄 경우, 클라이언트 개발자 뿐만 아니라 Discord Webhook 구성먼저 Webhook을 만들어야 한다. 우리 팀은 디스코드를 팀 소통 툴로 쓰고 있기 때문에, 디스코드 팀 워크스페이스에..
기본 키 이름을 바꾸고 싶을 때기본 키의 경우 보통 @Column(name = "chat_id") 등으로 Springboot에서 맵핑 가능한데, 문제는 이 코드는 이미 DB에 존재하는 칼럼이랑 맵핑해주는 코드이다. 그래서 이미 존재하는 기본키 칼럼명을 바꾸어주는 코드가 아니다(ddl-auto: create로 하지 않은 이상). DB에서 수동으로 바꾸어주고, 그 다음에 맵핑을 해주어야 한다.이때 대부분 @GeneratedValue(strategy = GenerationType.IDENTITY) 코드를 통해서 자동 증가를 기본키에 설정해줬을 것이므로, 이 설정을 그대로 유지하기 위해서는 SQL문 뒤에 AUTO_INCREMENT를 붙여야 한다.ALTER TABLE [테이블명] CHANGE COLUMN [원래칼..
VScodevscode-icons파일들을 이모지를 붙여서 보여준다. 단순히 폴더 이모지만 생기는 게 아니라 파이썬이면 파이썬, 자바면 자바대로 언어별 이모지를 다 보여주고, 특정 파일명을 가진 파일은 (예시: model, util) 그에 맞는 이모지를 다 보여준다. 결정적으로 어떤 폴더가 열려 있으면 열린 폴더 모양 이모지로 바뀌는데 이게 제일 GOAT한 부분이다.80s-pastel여러 테마를 적용해봤지만 다 눈이 아파서 헤매다가 마지막에 정착한 테마인데, 적당히 어두운 배경(너무 어두우면 또 눈이 아픔)+파스텔 톤의 코드가 마음에 들었다. 적용하면 이런 느낌이다.Power Mode타이핑하면 이렇게 불꽃을 볼 수 있다. 이거 이외에 다른 역할은 없고, 파워 코딩할 때 쓰기 좋다. flames 말고도 다른..