
Q1. JWT, Refresh, Access Token에 대해서 설명해주세요.
JWT(JSON Web Token)는 정보를 안전하게 전달하기 위한 방법 중 하나로, JSON 형식으로 되어 있어 사용자의 클레임(claim) 정보를 담고 있습니다. 이 클레임은 사용자에 대한 정보나 권한을 포함하고 있을 수 있습니다. JWT는 서명(signature)을 통해 안전하게 전달되며, 이를 통해 토큰이 변조되었는지 여부를 확인할 수 있습니다.
Access Token은 일반적으로 사용자가 리소스에 접근할 수 있도록 권한을 부여하는 데 사용됩니다. 클라이언트가 서버에게 자원에 대한 요청을 할 때 이 토큰을 함께 전송하여 인증을 수행합니다. 액세스 토큰은 일정 기간 동안 유효하며, 만료되면 갱신을 위해 리프레시 토큰을 사용합니다.
리프레시 토큰은 액세스 토큰의 만료 후에 새로운 액세스 토큰을 발급받기 위해 사용됩니다. 액세스 토큰이 만료되면 클라이언트는 리프레시 토큰을 사용하여 새로운 액세스 토큰을 요청하게 됩니다. 리프레시 토큰은 일반적으로 액세스 토큰보다 더 긴 유효 기간을 가지며, 보안적으로 더 강력한 보호를 받습니다.
Q2. OAuth에 대해서 설명해주세요.
OAuth는 웹사이트나 애플리케이션의 사용자 인증 및 권한 부여를 위한 프로토콜입니다. 사용자가 자신의 외부 소셜 계정(예: Facebook, Google, Twitter 등)을 통해 다른 웹사이트나 애플리케이션에 로그인하고 정보에 접근할 수 있도록 허용하는 접근 위임을 위한 개방형 표준입니다.
OAuth를 통한 인증 과정은 다음과 같습니다.
클라이언트(외부 웹 어플리케이션)가 자신의 서비스를 등록하고, Resource Server(외부 소셜 계정 제공자)로부터 Client ID와 Client Secret을 받습니다.
사용자(Resource Owner)는 클라이언트에서 제공하는 소셜 로그인 버튼을 클릭하여 외부 소셜 계정으로 로그인합니다.
로그인이 성공하면, 클라이언트는 Resource Server에 사용자의 권한을 인증받기 위한 Authorization Code를 요청합니다.
사용자가 권한을 부여하면, Resource Server는 Authorization Code를 발급합니다.
클라이언트는 받은 Authorization Code를 사용하여 Resource Server에 액세스 토큰을 요청합니다.
Resource Server는 클라이언트에게 액세스 토큰을 발급하고, 이를 사용하여 사용자의 정보에 접근할 수 있습니다.
이러한 과정을 통해 OAuth는 사용자의 비밀번호를 제공하지 않고도 외부 소셜 계정을 통해 간편하게 로그인하고, 서로 다른 웹사이트나 애플리케이션 간에 사용자 정보를 안전하게 공유할 수 있는 기능을 제공합니다.