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(인증) 명령을 수행한다. |
![]() |