예전에 인증과 인가에 관련된 포스팅을 작성한 적이 있었다. 그 과정에서 세션 방식과 토큰 방식이 쓰인다고 하였고, 토큰 방식에서는 JWT(JSON Web Token)을 일반적으로 사용한다고 이야기를 했었다. 그 이후로 스프링 시큐리티로 직접 인증과 인가를 구현해야 할 일이 생긴 적이 있었다. Access Token과 Refresh Token을 통해서 구현한 적이 있었는데, 처음에 이를 도대체 어떻게 구현해야 할지 상당한 난제였다. 로직 자체를 구현하는 것 자체는 크게 어렵지 않으나, 스프링 시큐리티와 맞물려서 구현하는 과정에서 상당히 오랜 시간이 걸렸다. 여담으로, username과 password로 로그인하는 스프링 시큐리티의 userDetails의 구현체를 변경하여, 전화번호를 통해서 로그인이 되게끔..
git이란 무엇일까? git의 역사부터 github란 뭔지에 대해서까지 포스팅할 예정이다. 이번 포스팅은 개발을 입문하는 사람에게 초점이 맞춰줘 있다. 본론git의 역사git의 역사를 이야기하면 리눅스의 이야기도 빼놓을 수 없다. 깃이라고 하는 VSC(버전 관리 시스템)은 리눅스와 함께 개발되었다. Linux 커널은 굉장히 규모가 큰 오픈소스 프로젝트다. 이 커널 프로젝트는 당연히 오랫동안 진행되었는데, 1991-2002년 사이에는 Patch와 단순 압축 파일로만 관리했다. 2002년에 드디어 Linux 커널은 BitKeeper라고 불리는 상용 DVCS(분산 버전 관리 시스템)를 사용하기 시작했다. 하지만 2005년에 커뮤니티가 만드는 Linux 커널과 이익을 추구하는 회사가 개발한 BitKeeper..
이번 포스팅에서 다룰 내용은 리눅스 계열 운영체제의 기본 텍스트 에디터인 vi이다. vi는 1970년대 UNIX 계열 운영체제에서 쓰이는 문서 편집기이다. vi를 모르는 사람이라면 터미널에서 작업하다가 vi를 사용해 모든 키보드 입력이 안 먹혀서 당황한 적이 있을 것이다. 편집기를 CLI으로 사용할 수 있게 해주는 vi에 대해서 알아보자. 미리 보기 사진으로 Vim의 이미지를 가져왔는데, 현재는 대부분 vi와 vim을 같이 사용한다. 대부분의 유닉스와 리눅스 배포판에서 vi 명령어를 쓰게 되면 자동으로 vim을 사용하도록 연결해 주게 된다. 따라서 이번 포스팅에서는 vi라고 부를 것이지만 내부적으로는 vim을 쓰고 있는 것이 된다. vim을 쓰고 있는 것인 지 키보드 화살표 키를 통해서 확인할 수 있다..
인증과 인가는 백엔드 개발자라면 당연히 알아야 하는 개념 중 하나이다. 인증가 인가에 대한 개념 자체는 크게 복잡한 내용을 다루고 있지 않지만, 문제는 쉽지 않은 구현 과정이다. HTTP 통신이 지닌 한계점을 웹 브라우저의 저장소 ( 로컬 스토리지, 쿠키 등 )과 어플리케이션 레벨에서 관리해야 하는데, 이런 식으로 인증/인가를 구현하는 데 다양한 바리에이션이 존재한다. 이번 포스팅에서는 인증과 인가의 개념과 어떻게 구현할 수 있는 지 레벨까지 다뤄보도록 한다. Authentication vs. Authorization인증(Authentication)인증은 사용자의 신원을 검증하는 과정을 말한다. 우리가 흔히 웹사이트에 로그인하기 위해 아이디와 비밀번호를 입력하는데, 이러한 계정 정보가 일치하는 경우, 서..
API는 인터넷 세계에서 세상을 연결하는 기반이 됐다. 가장 일반적으로 접하는 Rest API 외에도 다양한 방법으로 데이터를 송수신하는 방법이 있는데 ( webhook, websocket.. ) 이번 포스팅에서는 webhook에 대해서 알아보려고 한다. 본론APIAPI는 Application Programming Interface의 약자로 다양한 소프트웨어 간의 상호 작용을 의미한다. 예를 들어 날씨 앱을 만든다고 하자. 날씨 앱을 켜는 순간 기상청으로부터 날씨에 대한 데이터를 제공받고 이를 표시하도록 구현할 텐데, 이때 날씨 앱과 기상청 서버와의 데이터 통신하는 과정을 API를 통해 데이터를 주고받는다고 표현할 수 있다. 이런 식으로 날씨 앱(Client)에서 기상청(Server)에 API 요청을 보..