현대적인 인증 프로토콜: OAuth 2.0부터 패스키(Passkeys)까지
디지털 시대에 "당신은 누구인가?"와 "당신은 무엇을 할 권한이 있는가?"는 시스템이 답변해야 할 가장 중요한 두 가지 질문입니다. 인증(AuthN)과 인가(AuthZ)는 보안의 핵심 기둥입니다. 이 가이드에서는 이러한 프로세스를 관리하는 현대적인 프로토콜을 살펴봅니다.
1. 페데레이션 ID 및 인가
OAuth 2.0 (인가)
OAuth 2.0은 인가를 위한 업계 표준 프로토콜입니다. 웹사이트나 애플리케이션이 사용자를 대신하여 다른 서비스에 호스팅된 리소스에 액세스할 수 있도록 허용합니다(예: "Google로 로그인").
- Bearer Token: OAuth 2.0에서 가장 흔히 사용되는 액세스 토큰 유형입니다. 토큰을 소유한 사람이 권한을 가집니다.
- API Key: 머신 간 통신에서 자주 사용되는 보다 단순한 형태의 인증 방식입니다.
OpenID Connect (OIDC)
OAuth 2.0을 기반으로 구축된 OIDC는 ID 계층을 추가합니다. OAuth가 액세스에 관한 것이라면, OIDC는 신원에 관한 것입니다. 클라이언트가 인가 서버에서 수행된 인증을 바탕으로 최종 사용자의 신원을 확인할 수 있게 해줍니다.
SAML (Security Assertion Markup Language)
주로 기업 환경의 **단일 로그인(SSO)**에 사용되는 XML 기반 표준입니다. ID 제공자(IdP)가 서비스 제공자(SP)에게 인증 자격 증명을 전달할 수 있도록 합니다.
2. 기업용 및 레거시 디렉토리 서비스
LDAP (Lightweight Directory Access Protocol)
분산 디렉토리 정보 서비스에 액세스하고 유지 관리하는 데 사용되는 성숙한 프로토콜입니다. 많은 기업 사원 데이터베이스의 근간이 됩니다.
Kerberos
비밀 키 암호화를 사용하여 클라이언트/서버 애플리케이션에 강력한 인증을 제공하도록 설계된 네트워크 인증 프로토콜입니다. Windows Active Directory의 기본 인증 방식입니다.
3. 다요소 인증 (MFA)
OTP (One-Time Password)
- HOTP: HMAC 기반 일회용 비밀번호(이벤트 기반).
- TOTP: 시간 기반 일회용 비밀번호(Google Authenticator와 같은 앱에서 사용).
4. 비밀번호 없는 미래: FIDO 및 WebAuthn
FIDO2 및 WebAuthn
FIDO 연합은 비밀번호를 안전한 공개 키 암호화 방식으로 대체하기 위해 이 표준들을 만들었습니다. WebAuthn은 이를 브라우저에서 가능하게 하는 API입니다.
패스키 (Passkeys)
패스키는 사용자가 기기 잠금을 해제할 때 사용하는 생체 인식(FaceID, 지문) 또는 PIN을 사용하여 웹사이트와 앱에 로그인할 수 있도록 하는 FIDO 표준의 특정 구현체입니다. 클라우드(Apple iCloud, Google 비밀번호 관리자)를 통해 기기 간에 동기화됩니다.
U2F (Universal 2nd Factor)
보통 물리적인 보안 키(YubiKey 등)를 두 번째 요소로 요구하는 이전의 FIDO 표준입니다.
비교 요약
| 프로토콜 | 유형 | 주요 용도 | 형식 |
|---|---|---|---|
| OAuth 2.0 | 인가 | API 액세스, 외부 연동 | JSON / JWT |
| OIDC | 신원 | "로그인" 버튼 | JWT (ID 토큰) |
| SAML | 신원/SSO | 기업용 로그인 | XML |
| WebAuthn | 인증 | 비밀번호 없음 / 패스키 | 공개 키 암호화 |
| LDAP | 디렉토리 | 기업 사용자 관리 | 바이너리 |
결론
비밀번호에서 패스키와 OIDC로의 전환은 인터넷을 더욱 안전하고 사용하기 편리하게 만들고 있습니다. OAuth 2.0은 여전히 API 인가의 제왕으로 남아있지만, 사용자 로그인의 미래는 의심할 여지 없이 하드웨어 기반의 비밀번호 없는 방식이 될 것입니다. 안전한 애플리케이션을 구축하는 개발자에게 이러한 프로토콜을 이해하는 것은 필수적입니다.