분류 전체보기

· Study/Spring
이 포스팅은 (1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념과 (2) 스프링 시큐리티 - 스프링 시큐리티 세션에서 이어지는 글입니다. 서론 이전 글에서 세션은 하나의 서버를 운용할 때를 상정하고 나온 개념이라는 전제로 세션을 설명했었습니다. 하지만 서버의 규모와 트래픽이 나날이 갈수록 커지면서 서버를 여러대로 분산시켜야 하는 경우가 비일비재해졌습니다. 서버를 여러대로 분산시킨다는 것은 곧, 여러 대의 서버에서 하나의 세션을 공유해야한다는 전제가 새로 만들어지게 되는 셈입니다. 이것을 어떻게 해결할 수 있을까요? 물론, 세션을 관리하는 인메모리 DB를 가지는 중앙집중식 서버를 하나 두거나, 관련 인증 서버 체계를 두거나 하면 될 것입니다. 하지만 서버를 더 늘려야 하는데 인증 서버를 더욱 더 늘려야..
· Study/Spring
이 포스팅은 (1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념에서 이어지는 글입니다. 서론 세션은 다들 아시다시피 본디 하나의 서버를 운용할 때를 상정하고 나온 개념입니다. 다시 말씀드립니다. 프론트엔드와 백엔드가 하나의 서버에 있을 때 세션을 보통 사용한다고들 말합니다. 저도 처음에 JWT같이 다른 인증 시스템을 만들어 볼 때 혼동이 왔었습니다. 요즘 프론트-엔드와 백-엔드의 서버를 나누다 보니 세션도 나누는 것인가? 하구요. 세션을 개발하기 전에 꼭 잊지 말아야 할 사항이 바로 본디 세션은 하나의 서버에서 운용하도록 설계가 되어졌다 입니다. 이 가정을 바탕으로 글을 쓰도록 하겠습니다. (당연하게도 지금은 여러 서버에서 세션을 운용하는 방법이 있습니다! 레디스같은 하나의 인메모리에서 세션을 관리한..
· Study/Spring
서론 스프링 시큐리티는 아무리 봐도 복잡하게 설계가 되어 있습니다. 각 단계를 추상화하고, 분리하다보니 중간에서 하는 일이 많아지고, 밖에서 접근하는 방법도 달라졌던 것 같습니다. Spring Security는 공부를 해보니 여전히 정말 쉽지 않은 스프링 모듈 중에 하나입니다. `Security`라는 단어에 걸맞게도 복잡하게 이루어진걸지도 모릅니다. 아무튼 공부를 하면서 제가 알아낸 정보들, 공부했던 정보들을 바탕으로 포스팅을 해보려 합니다. 또, 실전으로 연습했던 코드도 포함해서요. 이번 포스팅에서는 일단 간단하게 Security에서 저희가 짚고 넘어가야할 부분들에 대해서 적어보겠습니다. SecurityContext 시큐리티는 시큐리티 모듈의 `SecurityContext` 안에서 인증/인가 정보가 다..
이 포스팅은 (1) restdocs + openapi3 + swagger-ui 설정을 해보자 - 설명편에서 이어지는 글입니다. (준비) Swagger-UI 다운로드 https://github.com/swagger-api/swagger-ui/releases Releases · swagger-api/swagger-ui Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API. - swagger-api/swagger-ui github.com 위 링크에서 Swagger-ui를 다운로드를 받고 나면, 아래와 같이 진행중..
서론 보통 현재 다니고 있는 부트캠프에서 저는 백엔드 포지션으로 개발할 때 프론트엔드와 작업할 때 다음과 같은 순서로 API를 맞춰나갔습니다. 노션으로 처음에 싱크업을 하고, FastAPI(BE)나 MSW(FE)같은 툴을 이용한 Mock 서버 구성을 하여 개발 속도를 맞춘 다음 RestDocs나 Swagger같은 API 문서 자동화 툴을 이용하여 API 문서를 작성 프론트엔드와 협업을 위한 API 문서를 작성할 때 노션에 API 문서를 위와 같은 형태로 많이 작성하곤 했습니다. 노션을 선택했던 이유는 보편화가 많이 되기도 했고, 실시간 작업이 가능하며, UI가 마크다운이어서 가독성이 좋고 편집하기도 좋았으며 액셀만큼은 아니지만 표와 데이터베이스 같이 데이터를 관리하기에 편리하다는 장점들이 있어서였습니다...
· Study
이 포스팅은 JSON Web Token - 토큰의 구조 에서 이어지는 글입니다. 서론 저번 포스팅에서 JWT를 만들고 검증하는 법에 대해서 살펴보았습니다. 그럼 이번에는 이렇게 RFC로 쓰인 토큰을 어떻게 구현을 해놓았고, 사용을 하면 되는가?에 대해서 중점적으로 이야기를 해보겠습니다. 저는 현재 Java 언어의 Spring 프레임워크를 공부하고 있기 때문에, JAVA 언어로 만들어진 JWT 라이브러리를 살펴보겠습니다. JWT 라이브러리는 당연하게도 수많은 라이브러리가 있고, MavenRepository에서도 어떤 라이브러리들이 있는지 확인해 볼 수 있습니다. 이번 포스팅에서는 흔히들 많이 사용하는 라이브러리인 JJWT 라이브러리를 살펴보도록 하겠습니다. JJWT 라이브러리 깃허브 링크에서 확인해보실 수..
· Study
아래 글은 RFC 7519 를 기반으로 작성되었습니다. 서론 지난 포스팅에서 JWT의 구조에 대해서 알아보았습니다. 어떻게 생겼는지를 알았으니, JWT를 만들고 검증하는 법을 알아보죠. 숟가락 구조를 알고 있다고 해서 숟가락을 만드는 방법을 다 알고 있는 것은 아니니까요! RFC에 따라 JWT를 만들고 검증하는 법 RFC 공식 문서에 JWT를 만들고 검증하는 법이 나열이 되어 있습니다. 암호화나 서명이 되지 않은(Unsecured) 경우와 암호화나 서명명이 된 경우의 2가지로 나누어져 있습니다. 암호화나 서명이 되지 않은 경우 이 경우는 쉽습니다. 헤더 내용을 다음와 같이 채워주면 됩니다. { "alg" : "none" } 위 헤더 내용은 말그대로 알고리즘(alg)이 없다(none)는 뜻을 가지고 있는 ..
· Study
아래 글은 RFC 7519 를 기반으로 작성되었습니다. 서론 세상에는 두 태양이 공존할 수 없다고 하죠... 하지만 인증 세계에는 아직 두 개의 태양이 공존(?)하고 있습니다. 하나는 세션이고 하나는 JWT죠. 필자가 알기로 세션의 개념이 먼저 나왔다고 알고 있습니다. 세션은 쿠키라는 저장소에 담아서 상태를 저장하는 개념으로 나왔었죠. 하지만 이는 독자분들이 아시다시피, HTTP는 무상태라는 개념과 상충하는 바임을 쉽게 알 수 있습니다. HTTP가 무상태이다보니, 서로 간의 상태를 저장해두고 확인하고 싶었겠죠. 저라도 서비스를 저장할 때 이런 정보를 저장해놓고 사용하고 싶을 겁니다. 하지만 상태를 저장하다보니, 세션이 많아질수록 지연 시간이 늘고 성능에 의존하는 일이 잦아졌습니다. 이를 어떻게 해결해야할..
다대다(Many-to-Many)를 접하는 사람이라면 한 번쯤 접해보셨을 문제가 있으실 겁니다. 하나의 엔티티에 `@Id`를 2개 이상 어노테이션 적용을 못하는 문제를요.. 저 또한 프로젝트 진행 중에 다대다 클래스에서 Id에 대한 문제가 발생한 경우가 있어 이슈 트러블슈팅을 한 경험을 공유하고자 포스팅을 남깁니다. 다대다(Many to Many) 다대다는 이 글을 읽고 읽는 여러분들도 알고계시다시피 테이블과 테이블 간에 여러 개의 관계가 서로 맺어질 때 사용하는 관계입니다. (예: 상품-쿠폰, 학생-수업 등) 이 다대다 관계를 맺기 위해 스프링 프레임워크에서는 `@Entity`라는 어노테이션을 사용하여 테이블을 생성하고, 그 테이블 안에서 `@ManyToMany` 어노테이션을 사용하여 다른 테이블과 외래..
부트캠프에서 배웠던 내용 중에 새롭게 프로젝트를 세팅할 때 docker-compose 를 사용해서 데이터베이스 구성을 설정하는 방법을 알게되었습니다. 덕분에 올해 개발했던 스프링 프로젝트들에 docker-compose를 통해 데이터베이스 환경을 쉽고 편하게 관리하고 개발할 수 있었습니다. 이번 포스팅에서는 docker-compose로 mysql과 redis 데이터베이스 환경을 구성하여 로컬 개발 시 부담을 덜 수 있는 좋은 방법을 소개해드리려 합니다. 😄 잠깐! docker-compose가 뭐지? 방법을 소개드리기 전에 간단하게 docker-compose에 대해 간략하게 설명해드리겠습니다. (공식 문서 링크에서도 참고해보실 수 있습니다.) docker-compose는 하나의 프로젝트에서 사용하는 여러 d..
라페dev
'분류 전체보기' 카테고리의 글 목록