문제 상황로컬 환경에서 배포된 서버 Backend의 WebSocket으로 접근하는 상황이었다.인증 정보를 쿠키로 전달하려 했지만, WebSocket 연결이 완료되지 못했다.bet.gateway.ts handleConnection(client: Socket) { try { const cookies = this.jwtUtils.parseCookies( client.handshake.headers.cookie, ); const accessToken = cookies["access_token"]; if (!accessToken) { client.emit("error", { event: "handleConnection", ..
Backend/인증, 인가
OAuth는 이전에 몇 번 사용해보았는데, 말로 꺼내어 설명하기가 어려웠다. 이번 기회에 정리를 해보려 한다. 이번 포스팅에서는 간단한 소개로 진행할 것이다. 필요 상황우선 세 명의 참여자가 있다고 생각해보자. (캠퍼가 만든 서비스, 사용자, 구글) 캠퍼가 만든 서비스가 있고, 거기서 구글에 연동하려고 한다. 구글에 접근하려면 어떻게 해야할까?가장 쉬운 방법은 구글의 사용자 id와 비번이 있으면 된다.! 문제1. 사용자 입장에서는 캠퍼의 서비스에 맡겨야 한다 (얘네들 주니어 개발자인데 맡길 수 있나? 이 서비스에서 유출되면 다 털리는데)2. 캠퍼의 서비스도 구글의 아이디 비번을 관리하는 것은 매우 큰 부담이다. (털리면 책임져야함)3. 구글도 자신 아이디 비번을 신뢰하지 않는 캠퍼의 서비스가 가지는게..
프로젝트 진행 중 회원 기능을 구현하기 위해 JWT 인증 방식을 도입하기로 했습니다. 그런데 세션 방식에 비해 어떤 이점이 있기에 JWT를 많이 쓰는 것인지, 개발하는 입장에서는 사용자의 정보를 가져올 때, 세션이든 JWT든 어디서든 가져오기만 하면 되는 것 아닌가? JWT 토큰 보안이 잘 이루어지는게 맞는지? 같은 여러 의문이 생겼습니다. 이번 포스팅에서 그 의문점에 대해 정리해보겠습니다. 1. 세션 방식과 JWT 방식 비교 우선 서버에서 사용자를 어떻게 인증하는지에 대해 살펴보겠습니다. 만약 한 웹 사이트를 만들었다고 가정하겠습니다. 이 웹사이트에서 로그인한 사람만 웹 사이트를 구경할 수 있게 하고 싶다면 어떻게 해야할까요? 보통 세션 방식(좌)과 JWT 방식(우) 두 가지를 제시합니다. ..