목록Develop/Authentication (6)
Judaeng

우리는 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현된다. 전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과는 달리, OAuth는 인증을 중개해주는 메커니즘이다. 보안된 리소스에 액세스 하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다. 즉, 이미 사용자 정보를 가지고 있는 웹 서비스(GitHub, google, facebook 등)에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해진다. OAuth가 모든 것을 해결해주는 설루션은 아니다. 여전히 사용자 정보가 내 서버에 저장되는 것은 변함이 없다. OAuth는 인증(Authentication)을 다른 서비스에 맡..

현대 웹서비스에서는 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다. 이번에는 토큰 기반의 인증 시스템에서 주로 사용하는 JWT(Json Web Token)에 대해 알아보자. JWT 공식문서를 확인하는 것도 좋은 방법이다. JWT(Json Web Token)이란? JWT는 이름 그대로 JSON 형태로 사용자에 대한 속성을 저장하는 웹 토큰이다. JWT(Json Web Token)는 RFC표준으로 등록되어 있는 토큰 기반 인증방식이다. 1. 클라이언트가 서버에 아이디/비밀번호를 담아 로그인 요청을 보낸다. 2. 아이디/비밀번호가 일치하는지 확인하고, 클라이언트에게 보낼 암호화된 토큰을 생성한다. access/refresh 토큰을 모두 생성한다. 토큰에 담길 정보(payload)는 ..

✏️Token이란? 유저 정보를 암호화한 상태로 다를 수 있는 인증 수단이다. 인증을 위해 사용되는 암호화된 문자열을 말한다. ✏️토큰을 왜 사용하게 되었나요? 과거에는 서버 기반 인증 시스템이 있었다. 이런 방식의 인증 시스템은 아직도 많이 사용되고 있다. 하지만 요즘 웹/모바일 웹 어플리케이션들이 부흥하게 되면서, 이런 방식의 인증 시스템은 문제를 보이기 시작했다. ⚡서버 기반 인증의 문제점 1. 세션 유저가 인증할 때, 서버는 이 기록을 서버에 저장을 한다. 이를 세션이라고 하는데, 대부분의 경우엔 메모리에 이를 저장하는데, 로그인 중인 유저의 수가 늘어난다면 어떻게 될까? 서버의 램이 과부하가 된다. 이를 피하기위해 세션을 데이터베이스에 시스템에 저장하는 방식도 있지만, 이 또한 유저의 수가 많으..

✏️세션(Session)이란? 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리한다. 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증 상태를 유지한다. 물론 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정이 가능하다. 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다. 즉 동접자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 된다. 클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는 데 이것이 세션ID다. ..