카테고리 없음

OAuth와 JWT

worldstroy 2025. 3. 28. 10:55

OAuth(Open Authorization)

• 인터넷 사용자들이 비밀번호를 직접 제공하지 않고 다른 웹사이트 상의 자신 들의 정보에 대해 웹사이트나 어플리케이션의 접근 권한을 부여할 수 있는 공 통적인 수단으로서 사용되는, 접근 위임을 위한개방형 표준
• 즉, 서드파티 어플리케이션이 사용자의 계정에 접근할 수 있는 권한을 부여하 기 위한 프로토콜

 

OAuth의 버전

버전 명 특징
OAuth 1.0 • 서드파티 어플리케이션이 사용자의 데이터에 접근할 권한을 얻기 위해 서명된 요청을 사용
• 요청의 서명 부분은 어플리케이션의 비밀 키와 사용자의 토큰을 조합하여 생성되며, 이를 통해 보안 유지
OAuth 2.0 • OAuth 2.0은 보다 간편하고 확장성이 있는 버전으로, 기본적으로 인증과 권한을 분 리하여 다루는 것을 특징
• Access Token을 통해 권한을 부여하고, 사용자의 실제 비밀 정보를 공유하지 않습 니다.
• OAuth 2.0에서는 Bearer Token 인증 방식을 지원
• JWT를 Bearer Token으로 사용할 수 있음
• 클라이언트가 발급받은 JWT를 "Authorization" 헤더에 담아 요청을 보내 면, 서버는 해당 JWT의 유효성을 검사하여 권한을 부여
* Bearer? 웹 서비스에서 사용자 인증에 사용되는 인증 방식 중 하나

JWT란?

• 웹 애플리케이션에서 정보를 안전하게 전송하기 위한 간단한 방법
• 인증된 사용자를 식별하거나 데이터에 서명을 하여 변조를 방지하는 데 사용

 

JWT의 구성

 

용어 명 의미
Header 토큰의 타입과 해시 알고리즘 정보가 포함
Payload 실제 정보 데이터가 포함되며, 클레임(claim)이라 불리는 키-값 쌍으로 이루어져 있음
Signature 토큰의 무결성을 검증하기 위한 서명 부분으로, Header와 Payload의 조합에 비밀 키를 사용해 생성

 

JWT 작동방식

 

 

Key Point

• JWT는 *서명(인증)*을 목적으로 사용.
• JWT는 Base64로 인코딩되어 있지만, 이는 암호화가 아니라 단순히 인코딩이기 때문에, 디버거를 사용하면 페이로드의 내용을 쉽게 복호화할 수 있음. 따라서, 페이로드에는 비밀번호와 같은 민감한 정보를 포함하면 안 됨
• JWT의 주요 목적은 정보 보호가 아니라 위조 방지이다.
• 서명을 통해 데이터의 무결성을 보장하며, 비밀키가 노출되지 않는 한, 토큰의 내용이 위조되더라도 서명을 통해 위조된 토큰을 걸러낼 수 있다

 

Node에서 JWT를 사용하는 방법

1. npm 명령어를 통하여 jsonwebtoken을 생성한다.
2. jwt Token 설정을 nodejs 서버에 추가한다.
3. login 설정이 시작된 부분에서 jwt.sign 명령어를 수행한다.

4.  로그인 상태 확인이 필요한 시점에서 verify(인증) 명령을 수행한다.