OAuth(오픈 인증)란 무엇이며 왜 중요한가?
데이터 유출은 빠르게 성장하고 기술이 발전하는 세대에서 가장 큰 위협 중 하나입니다. 데이터 유출은 기업, 명성, 심지어 정부까지 파괴할 수 있습니다. 게다가, 중요한 데이터가 “도난당하기” 위해서는 단 하나의 취약한, 특권 계정이 무단으로 침해당하기만 하면 됩니다. 디지털화된 세계는 더 많은 데이터를 생성, 공유, 저장하며 디지털 계정이 일반적입니다.
인터넷상의 많은 서비스들은 통합되어 있으며 서로 상호작용하도록 설계되어 있습니다. 그러나 서비스 계정을 사용하여 애플리케이션과 웹사이트에 접근하는 것은 주로 다중 요소 인증(MFA) 없이 권한 있는 자격 증명을 저장하는 안전하지 않은 관행을 포함하며, 개인 정보를 위험에 노출시킵니다.
개인 정보 및 데이터 보안의 중요성은 놀랍습니다. 따라서 OAuth와 같은 개방형 보안 표준은 제3자 간 데이터 전송 중 개인 및 사적 정보를 보호합니다. 인터넷 엔지니어링 태스크 포스(IETF)에 의해 컴파일된 OAuth 표준은 제3자 서비스를 사용하는 동안 웹상의 리소스 소유자를 보호합니다. OAuth에 대해 더 알아보려면 계속 읽어보세요.
OAuth란 무엇인가?
OAuth(Open Authorization)는 로그인 자격 증명을 공유하지 않고 서버 및 서비스(웹사이트 및 애플리케이션과 같은)에서 인증된 사용자 관련 정보 또는 자산에 대한 제3자 접근을 허용하는 오픈 스탠다드 프레임워크입니다. 이는 토큰 기반 인증을 사용하여 리소스 소유자를 대신하여 서버 리소스에 대한 안전한 위임 접근을 제공합니다. 그러나, 인증 프로토콜은 비밀번호, 전화 또는 생체 신원을 사용하여 사용자 신원을 검증하며 Open Authorization 프로토콜과 혼동되어서는 안 됩니다.
OpenID와 같은 인증 프로토콜과 달리, OAuth는 성공적인 인증 후 리소스에 대한 제한된 접근을 허가합니다. Facebook, Google, Amazon, Twitter, Paypal, Netflix, Microsoft와 같은 회사들은 사용자가 OAuth를 통해 계정 정보를 제3자 웹사이트 및 애플리케이션과 공유할 수 있도록 허용합니다.
OAuth의 분리된 인증 및 권한 부여 표준은 사용자의 신원이나 자격 증명을 공개하지 않고 리소스에 대한 접근을 허용함으로써 사용자 정보를 보호합니다. 따라서, 제3자 서비스는 비밀번호 및 기타 민감한 정보에 접근하지 않고도 사용자를 대신하여 요청할 수 있습니다.
OAuth 메커니즘은 세 가지 주요 구성 요소를 가진 인증 흐름을 따릅니다: 제공자, 소유자/사용자, 그리고 클라이언트/소비자. OAuth 제공자는 인증 서버이며 OAuth의 주 엔진입니다. 리소스 서버(APIs like Facebook or Google)는 사용자의 대리 및 승인으로 제3자 웹사이트나 애플리케이션에 연결하기 위해 OAuth를 사용합니다. 제공자는 클라이언트 서비스에 리소스 서버에 호스팅된 정보에 대한 접근 인증 토큰을 제공합니다. 사용자는 리소스 서버의 데이터/정보를 소유합니다. 사용자의 로그인은 정보 공유를 확인합니다. 클라이언트는 사용자의 정보나 리소스에 접근이 필요한 웹사이트나 애플리케이션입니다.
액세스 토큰을 사용하여 리소스 서버에 접근합니다. 마지막으로, 클라이언트 프로그램은 인증 절차를 진행하기 위해 OAuth에 등록해야 합니다. 완전한 OAuth 프로세스는 여러 승인을 필요로 하며, 인가된 거래/접근을 위해 세 가지 구성 요소가 모두 필요합니다.
OAuth 1.0
사용자 정보의 보안은 데이터 공유, 저장, 활용이 증가함에 따라 필수적입니다. 따라서, 데이터 유출을 방지하기 위해 애플리케이션과 웹사이트 서비스에 안전한 인증 표준을 통합하는 것이 중요합니다. OAuth는 웹사이트와 API를 위한 가장 안전한 정보 공유 표준으로 인정받고 있습니다. OAuth 표준은 다양한 클라이언트 앱 인증 시나리오와 다른 기기 기능을 다루기 위해 여러 흐름을 지원합니다. 서버 대 서버 앱, 웹 앱, 모바일 앱, 웹사이트, 콘솔 또는 TV를 지원합니다.
OAuth 1.0 프로토콜은 API 접근 위임을 위한 개방형 표준의 부재를 해결하기 위해 2010년에 발표되었습니다. 그러나 이것은 처음에 2007년에 Twitter 애플리케이션 인터페이스를 위한 인증 방법으로 출시되었습니다. IETF는 2년 후에 개선되고 완전히 새로운 인증 프로토콜인 OAuth 2.0을 발표했습니다. 이는 증가된 OAuth 플로우, 단기 토큰, 그리고 OAuth 1.0과의 호환성 없음으로 첫 번째 버전과 다릅니다.
OAuth 1.0은 디지털 서명을 기반으로 한 프레임워크를 사용하여 위임을 처리했습니다. Google과 Twitter와 같은 주요 기업들이 지원하고 채택할 정도로 강력하고 안전했습니다. 암호 구현과 암호 상호 운용성이 요구되어 매우 안전했습니다. 그러나 개발자가 암호학과 키 관리 능력에 충분한 경험이 없으면 구현하기 어렵습니다.
OAuth는 일반적으로 허가를 제공하는 위임 프로토콜이며 OpenID와 같은 인증 프로토콜이 아닙니다. OpenID는 OAuth 2.0 프로토콜 위에 구축된 신원 계층입니다. 많은 애플리케이션이 OAuth 2.0을 인증 및 권한 부여에 사용하지만, 이는 전문적으로 위임된 권한 부여를 위한 것입니다.
OAuth 2.0 프레임워크
OAuth 2.0 프레임워크는 인증을 위한 업계 표준 프로토콜입니다. 원래 Open Authorization 프로토콜의 재작성은 현대 웹 및 비웹 클라이언트를 위한 더 포괄적인 솔루션을 제공합니다. 이 프레임워크는 사용자 데이터를 더욱 안전하게 보호하는 사양을 포함하고 있습니다. 이러한 사양에는 다음이 포함됩니다:
토큰 만료
OAuth 토큰은 일반적으로 취소할 수 없으며, 1.0에서는 만료되지 않습니다. 결과적으로, 토큰은 완전히 안전하지 않고 위협에 취약합니다. 토큰이나 검증 비밀에 접근할 수 있는 무단 클라이언트/사용자, 예를 들어 해커와 악의적인 사이트는 무단 요청을 하고 사용자의 자격 증명과 개인 정보에 접근할 수 있습니다. OAuth 2.0 프레임워크는 만료 가능한 토큰으로 이러한 약점을 극복합니다. 액세스 토큰이 만료되면, 새로운 액세스 토큰을 생성하기 위해 새로고침 주기를 통하지 않는 한 애플리케이션에 대한 접근 권한도 만료됩니다. OAuth 2.0은 “단기” 액세스 토큰을 생성합니다. 이들은 세션의 지속 시간부터 몇 주까지 지속되지만, 사용자가 전체 과정을 반복하여 애플리케이션을 다시 승인할 필요 없이 새로운 액세스 토큰을 획득하기 위해 새로고침 토큰을 사용합니다.
클라이언트 사이드 개발
OAuth 2.0은 웹 워크플로우뿐만 아니라 비웹 클라이언트도 고려합니다. OAuth 2.0은 웹 애플리케이션, 데스크탑 애플리케이션, 모바일 폰, TV/콘솔, 그리고 API 기반 서비스와 같은 비브라우저 기반 애플리케이션을 위한 특정 인증 플로우를 제공합니다. 또한 구현하기가 훨씬 쉽고, 작업하기 쉬우며 강력한 인증을 제공합니다.
업무 분리
OAuth 2.0은 리소스 전달과 사용자 인증 처리의 업무를 분리합니다. 물리적으로 분리된 서버나 심지어 다른 도메인 이름이 두 역할을 처리할 수 있습니다. 그래서 시스템의 각 부분은 독립적으로 확장됩니다. 따라서, 인증 서버는 클라이언트 ID와 비밀번호가 필요하지만, API 서버는 액세스 토큰만을 받아들입니다. 결과적으로, 데이터베이스는 API 서버와의 데이터 공유를 피합니다. 이러한 점들이 새로운 표준을 대규모 기업에 더 적합하게 만듭니다. 이는 시스템이 독립적으로, 다른 팀에 의해, 그리고 다른 타임라인에 따라 일어날 수 있게 하기 때문입니다.
베어러 토큰과 제거된 암호화 요구사항
OAuth는 API의 쉬운 사용과 좋은 보안 관행 사이의 균형을 만듭니다. 베어러 토큰의 사용은 OAuth 1.0 표준에서 암호화 서명의 복잡성을 없애 OAuth의 구현을 단순화합니다. OAuth 2.0은 요청에서 토큰 자체만을 요구합니다.
이중 인증
OAuth는 계정 공개를 위해 덜 안전한 단일 요소 인증 방식을 사용했습니다. 단일 요소 인증은 해커가 접근을 얻기 위해 단 하나의 정보만 얻으면 쉽게 침해될 수 있습니다. 그러나 OAuth 2.0은 사용자에게 접근 권한을 부여하기 위해 더 많은 인증 수준을 요구합니다. 이는 토큰화와 이중 요소의 특성을 사용하여 사용자 계정을 보호합니다.
OAuth가 중요한 이유는?
정교한 웹 애플리케이션, 모바일 앱, 그리고 독특한 비즈니스 모델이 등장했습니다. 사용 사례의 진화가 전통적인 인증 메커니즘을 불충분하게 만들어 새로운 시나리오로 발전하고 있습니다. 이러한 시나리오 중 많은 것이 요청이나 작업을 실행하기 위해 서버나 클라이언트가 여러 서버와 통신(접근)해야 합니다. 따라서, 여러 신뢰할 수 있는 당사자들 사이에서 데이터를 공유하고 신원을 연합하는 새로운 솔루션을 제공할 필요성이 강화되었습니다. OAuth는 인증과 관련된 도전과제를 해결하려고 노력하는 강력한 보안 프레임워크입니다. 그러므로 애플리케이션과 웹사이트에 OAuth를 통합하는 것이 중요합니다. 그 이유는 다음과 같습니다:
공유하는 동안에도 서버 정보를 안전하게 보호합니다
OAuth 프로토콜은 웹 서버와 브라우저 사이의 데이터가 비공개로 유지되도록 SSL(보안 소켓 레이어)에 의존합니다. 사실, 사용자의 자격 증명을 보호하기 때문에 어떤 조직의 웹사이트 인증에서 중요한 부분입니다.
토큰화는 사용자 데이터에 대한 제한된 접근만을 허용합니다
신용카드 정보와 의료 기록과 같은 민감한 정보는 각각 토큰 ID가 할당되어 원격으로 저장됩니다. 상인들은 실제 데이터가 아닌 토큰을 받습니다. 따라서 공유된 정보는 비공개로 유지됩니다. 아직 의료 기록, 비밀번호, 신용카드 번호에 접근할 수 없는 제3자는 거래를 위해 토큰을 검증할 수 있습니다.
OAuth는 단일 로그인(SSO) 사용을 허용합니다.
SSO는 쉬운 접근, 위험 관리, 사용자 데이터에 대한 통제를 보장합니다. 하나의 로그인 자격 증명 세트만으로 여러 애플리케이션에 접근할 수 있게 함으로써 사용자의 사기와 생산성을 향상시킵니다. 사용자 자격 증명을 통합하고 사용자의 로그인 과정을 간소화합니다. 이는 온라인 서비스를 사용할 때 여러 비밀번호를 관리하거나 같은 정보를 반복 입력하는 번거로움을 없앱니다.
사용자가 제3자 서비스가 자신의 리소스에 할 수 있는 것을 제어할 수 있게 합니다
전통적인 프로세스는 정보를 공유하기 위해 제3자 웹사이트와 자격 증명을 공유해야 합니다. 그러나 OAuth는 제3자를 제한하고 사용자 설정 변경, 사용자 자격 증명 변경, 사용자 계정 접근 차단과 같은 특정 악의적인 행동을 수행하는 것을 방지합니다.
결론
OAuth(Open Authorization)는 사용자 정보를 데이터 유출로부터 최대한 보호합니다. OAuth 1.0을 위한 첫 번째 프로토콜은 OAuth 2.0으로 재작성되었습니다. 사이버 보안 업계는 OAuth 2.0을 인증을 위한 가장 안전한 옵션으로 널리 채택합니다. 완벽한 인증 시스템은 없지만, OAuth는 최고 중 하나입니다. Facebook, Twitter, LinkedIn, Google, Amazon, Instagram, GitHub과 같은 사이트들은 인증 및 권한 부여를 위한 주요 기술로 OAuth를 사용합니다.