본문 바로가기

Programming134

Pull Request 028. Spring Security + OAuth2.0 로그인 적용하기 최근 국내 서비스 중에 OAuth 로그인을 지원하지 않는 서비스가 있을까? 아마 거의 없을 것이다. 이번 프로젝트에도 OAuth2.0을 사용한 로그인 방식을 적용하고자 한다. OAuth 로그인은 쉽게 말해 '사용자 인증을 다른 기관에 맡기는' 로그인 방식이다. 운영중인 서비스의 서버에 저장된 사용자 정보가 아니라, 다른 신뢰할만한 서비스에 저장되어있는 사용자 정보를 가져와서 사용하는 방식이다. 물론, 해당 과정에서 자체적으로 토큰 발급 등의 인증 / 인가 시스템을 이용하기 위해서는 받아온 사용자 정보를 자체 서버에 저장해야한다. 이번 프로젝트에는 구글, 카카오, 네이버의 소셜 로그인을 제공할 예정이다. 현재 구글과 카카오를 구현 완료하였으며 이번 포스팅에서는 해당 과정을 다룬다. Spring Securi.. 2024. 1. 23.
[1/19 TIS] 바뀐 Shell, 몰랐던 나, 환경변수 설정에 애먹기 Mac OS Catalina 버전 이후로 기본 Shell이 bash -> zsh로 바뀌었다. 내 맥북은 아마 그 전에 만들어졌나보다. 기본 shell로 bash를 사용하고있었다. 프로젝트에 OAuth 로그인을 구현하려고 하면서, 드디어 환경변수들을 적용할 일이 생겼다. bashrc파일을 마구마구 수정하고 프로젝트를 빌드하는데, 아무리해도 인텔리제이에서 시스템 환경변수를 읽어오지를 못했다. 그러던 중, 아래 문구에서 힌트를 얻었다. The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support... 2024. 1. 19.
String vs StringBuffer vs StringBuilder 사실 String vs StringBuffer / StringBuilder라고 적는 편이 더 나을지도 모른다. String과 나머지 두 클래스 사이에는 큰 차이가 있지만, Buffer와 Builder사이에는 큰 차이가 없다. String은 불변 객체고, 나머지 두 객체는 가변 객체다. 여기서 두 객체 사이의 큰 차이가 만들어진다. 문자열을 더하는 단순한 연산을 생각해보자. String a = "Hello"; a += " World"; System.out.println(a); // "Hello World" 불변 객체는 말 그대로 한 번 선언되면 변하지 않는다. 예를 들어 final int num = 1;에 ++연산을 하면 수행되지 않는다. final키워드를 통해 불변으로 선언했기 때문이다. 그런데 불변 객.. 2024. 1. 19.
0.1 + 1.1 != 1.2 제목에 쓰여진 수식은 참이다. 최근 면접에서 왜 저 수식이 참인지를 질문 받았었다. 아주 예전에 코딩애플님 유튜브 영상에서 봤었는데, 너무 당연한 거라고 생각해서 그냥 재밌게 보고 말았었다. 문제는 면접 때 왜 당연한지 기억을 못해냈다는건데... 게임 내 화폐나 비트코인들이 실물 화폐와 비슷한 혹은 그 이상의 가치를 지니는 경우가 종종 있다. 이런 경우를 보고 조롱 섞인, 혹은 걱정 어린 목소리를 내는 사람들이 주로 '그래서 10100110이 그렇게 비싸다 이거지?'와 비슷한 결의 말들을 하곤 한다. 이는 컴퓨터가 어떻게 데이터를 저장하는가에 대한 정확한 이해를 기반으로 하는 말이라고 할 수 있다. 컴퓨터 내의 데이터는 모두 0또는 1로 이루어져 있다. 이는 컴퓨터가 비트 단위 연산을 하기 때문이다. 비.. 2024. 1. 18.
Pull Request 027. 로그인 / 로그아웃 로직 리팩토링하기 - Http Header 대신 Cookie를 사용해보자 이전 글에서 JWT의 적절한 사용 방법을 고민했었다. 그 결과 인증은 Stateful하게, 인가는 Stateless하게 사용하자!는 결론을 내렸다. 중복 로그인 방지나 로그아웃을 구현하기 위해서는 Stateful한 방식을 사용하는 것이 불가피했기 때문이다. 반면 인가는 어떤가? 상대방이 보낸 토큰이 내가 만든 토큰이 맞는지만 검증할 수 있으면 굳이 서버에서 어떤 토큰이 발급되었고, 만료 시간은 얼만지는 알 필요가 없다. 따라서 JWT가 지닌 Stateless한 성질을 야무지게 사용할 수 있다. 이 방식을 구현하기 위해 다른 분의 글을 참고하여 리팩토링을 진행했다. 이번 포스팅에서는 내 코드에서 수정된 부분만을 기록할 예정이며, 큰 틀은 링크를 타고 들어가 확인하길 바란다. 로그인 JwtAuthentica.. 2024. 1. 9.
반응형