Covering OAuth 2.0, OpenID, PKCE, deprecated flows, JWTs, API Gateways, and scopes. No programming knowledge needed
짧은 OAuth 히스토리
OAuth가 등장하기 전에는 HTTP Basic Auth가 주로 사용되었습니다. 이 방식은 서드파티 앱이 사용자의 비밀번호를 직접 저장하고 API에 보내야 했기 때문에 보안상 매우 취약했습니다.
이 문제를 해결하기 위해 2000년대 중반부터 구글, 페이스북 등 여러 회사가 각자 다른 인증 방식을 만들었으나, 서로 다른 시스템으로 인해 혼란이 커졌습니다. 이에 개발자들이 함께 협력하여 2007년 OAuth 1.0을 발표했습니다.
하지만 모바일 앱의 등장으로 OAuth 1.0의 한계가 드러나자, OAuth 2.0이 개발되었습니다. OAuth 2.0은 개발자가 사용하기 쉽고, 모바일 환경에서도 안전하며, 대규모 API에 적용할 수 있도록 개선되었습니다.
특히 인증 서버와 API 서버를 분리하여 보안과 효율성을 높였으며, 전달자 토큰(bearer token)을 사용해 개발 편의성을 높였습니다. 2012년 스펙이 완성된 이후에도 IETF 작업 그룹은 OAuth를 더 안전하고 유용하게 만들기 위해 지속적으로 개선해 나가고 있습니다.
OAuth의 Application 보안 향상
OAuth 이전의 문제점: 앱이 비밀번호를 직접 받으면 사용자는 신뢰하기 어렵고, 앱에 계정의 모든 권한을 주게 되는 위험이 있었습니다. 또한, 앱 접근을 취소하려면 비밀번호를 바꿔야 하는 불편함이 있었습니다. API 측면에서는 어떤 앱이 요청을 보내는지 구분하기 어렵고, 다단계 인증(MFA) 같은 새로운 보안 기능을 추가할 때 모든 앱을 일일이 수정해야 하는 비효율성이 있었습니다.
OAuth의 해결책: OAuth는 사용자가 앱에 비밀번호를 직접 입력하는 대신, OAuth 서버에서 로그인하게 합니다. 앱은 비밀번호 대신 토큰을 받기 때문에, 사용자의 비밀번호가 앱에 노출되지 않아 보안이 강화됩니다. 또한, OAuth 서버에서 MFA를 설정하면 모든 앱에 즉시 적용되어 관리 효율성이 높아집니다.