JSON Web Token (JWT)은 JSON 객체로서의 정보를 파티 간에 안전하게 전송하기 위한 오픈 표준입니다. 주로 사용자 인증 및 클라이언트와 서버 간의 정보 안전 전송에 사용됩니다.
사용자가 로그인하면 서버는 헤더, 페이로드, 서명으로 구성된 JWT를 생성합니다.
헤더는 일반적으로 토큰의 유형과 이를 보호하는 데 사용되는 암호화 알고리즘으로 구성됩니다. 헤더는 Base64Url로 인코딩됩니다.
페이로드는 사용자에 관한 주장과 추가 데이터를 포함합니다. 주장에는 사용자의 ID, 사용자 이름, 역할 및 기타 관련 정보가 포함될 수 있습니다. 페이로드도 Base64Url로 인코딩됩니다.
서명은 헤더, 페이로드, 그리고 비밀 키를 헤더에 명시된 알고리즘을 사용하여 인코딩하여 생성됩니다. 이는 토큰의 무결성을 보장하고 서버가 그 진위성을 검증할 수 있게 합니다. 서명은 인코딩된 헤더와 페이로드에 추가되어 완전한 JWT를 형성합니다.
JWT가 생성되면 클라이언트로 전송되어 저장되며 이후 요청과 함께 전송됩니다. 클라이언트는 일반적으로 HTTP 요청의 Authorization
헤더에 Bearer 토큰으로 JWT를 포함합니다.
서버가 JWT를 받으면 비밀 키를 사용하여 서명을 검증합니다. 서명이 유효하면 서버는 헤더와 페이로드의 정보를 디코딩하여 사용자 인증을 수행할 수 있습니다. 서버는 데이터베이스 조회나 추가 인증 확인 없이 JWT의 정보를 신뢰할 수 있습니다. 이는 JWT를 효율적이고 확장 가능한 인증 메커니즘으로 만듭니다.
토큰 인증은 사용자 이름과 비밀번호 대신 액세스 토큰을 사용하여 리소스에 접근하는 인증 방법입니다. 토큰은 일반적으로 인증 서버에 의해 발급되며, 각 요청과 함께 인증 증명으로 전달됩니다. 토큰 기반 인증은 전통적인 사용자 이름 및 비밀번호 인증에 비해 여러 가지 장점을 제공합니다:
OAuth 2.0은 제3자 응용 프로그램이 사용자의 리소스에 제한된 액세스를 획득할 수 있게 하는 오픈 표준 및 권한 부여 프레임워크입니다. 보통 사용자가 외부 응용 프로그램에 데이터 접근 권한을 부여하도록 허용하는 데 사용됩니다. OAuth 2.0은 인증 및 권한 부여를 위해 JSON Web Tokens (JWT)를 기반으로 합니다.
OAuth 2.0은 리소스 소유자(리소스를 소유한 사용자), 클라이언트(제3자 응용 프로그램), 인증서버(액세스 토큰 발급 책임), 보호된 리소스를 보유한 리소스 서버 등 여러 파티가 참여합니다.
OAuth 2.0 흐름에서 클라이언트는 리소스 소유자로부터 권한 부여 승인을 얻습니다. 클라이언트는 이 승인을 인증서버와 교환하여 액세스 토큰을 받습니다. 액세스 토큰은 보호된 리소스 서버에서 리소스에 액세스하기 위한 필요한 정보를 포함한 JWT입니다. 이 토큰은 클라이언트가 사용자의 리소스에 접근하는 데 사용됩니다.
OAuth 2.0 및 JWT를 사용하여 응용 프로그램은 다양한 플랫폼에서 사용자 데이터에 대한 안전하고 통제된 접근을 제공합니다.