데브허브 | DEVHUB | Authentication Explained: When to Use Basic, Bearer, OAuth2, JWT & SSOAuthentication Explained: When to Use Basic, Bearer, OAuth2, JWT & SSO
- 인증(Authentication)은 시스템 접근 전 사용자의 신원을 확인하는 첫 단계로, "누가 사용자이며 접근이 허용되는가"에 답합니다. 🆔
- 기본 인증(Basic Authentication)은 사용자 이름과 비밀번호를 Base64로 인코딩하여 사용하지만, 쉽게 역변환되어 HTTPS 없이는 안전하지 않으며 현재는 거의 사용되지 않습니다. 🔒
- 베어러 토큰(Bearer Tokens)은 각 요청에 액세스 토큰을 보내는 방식으로, 기본 인증보다 안전하고 빠르며 상태 비저장(stateless)이라 API 설계의 표준으로 널리 사용됩니다. 🚀
- OAuth2는 Google, GitHub 같은 신뢰할 수 있는 제공자를 통해 로그인하게 하는 프로토콜이며, 사용자 정보를 담은 JWT(JSON Web Token)를 앱에 전달하여 인증합니다. 🤝
- JWT는 서명된 객체로, 앱에서 API로 전달되어 인증에 사용되며 베어러 토큰처럼 상태 비저장 방식입니다. 🔑
- 최신 시스템은 짧은 수명의 액세스 토큰(API 호출용)과 긴 수명의 리프레시 토큰(액세스 토큰 갱신용)을 사용하여 사용자 로그인 상태를 유지하고 보안을 강화합니다. 🔄
- 리프레시 토큰은 보안을 위해 서버 측에 보관하는 것이 일반적입니다. 🛡️
- 싱글 사인온(SSO)은 한 번의 로그인으로 여러 서비스에 접근하게 하며, SAML(레거시 시스템) 또는 OAuth2(현대 애플리케이션) 프로토콜을 활용하여 사용자 로그인 정보를 안전하게 교환합니다. ✨
- 인증은 사용자의 신원을 확인하는 것이고, 권한 부여(Authorization)는 사용자가 시스템 내에서 무엇을 할 수 있는지(접근 가능한 리소스)를 결정하는 다음 단계입니다. ✅