주요 콘텐츠로 건너뛰기

OAuth 또는 Open Authorization은 액세스 위임을 위한 개방형 표준 인가 프로토콜입니다. 사용자가 비밀번호를 제공할 필요 없이 서비스 제공업체(예: 웹사이트 및 애플리케이션)에 정보에 대한 액세스 권한을 부여할 수 있는 안전한 방법입니다.

OAuth는 서버 소유자를 대신하여 클라이언트에 서버 리소스에 대한 보안 위임 액세스를 제공합니다. 특정 인가 흐름을 사용하면 클라이언트가 비밀번호를 제공하지 않고도 보호된 리소스에 액세스할 수 있습니다. 클라이언트는 비밀번호 대신 리소스에 대한 액세스 권한을 부여할 해당 리소스의 소유자가 승인할 수 있는 액세스 토큰을 사용합니다.

OAuth 토큰이란?

OAuth 토큰은 리소스에 대한 사용자의 액세스 권한을 부여합니다. 즉, 사용자를 인증하지는 않지만, 서비스 제공업체가 사용자를 대신하여 다른 리소스에 대한 액세스 권한을 부여하는 데 사용됩니다.

OAuth 거래는 사용자가 서비스 제공업체 ID를 사용하여 다른 리소스에서 권한을 요청할 때 발생합니다. 리소스는 서비스 제공업체에게 요청 토큰 및 비밀 형태로 제공되는 권한을 요청합니다. 그 다음에는, 리소스가 요청을 인증하기 위해 사용자를 해당 서비스 제공업체로 리디렉션합니다. 이 시점에서 리소스는 요청 토큰을 액세스 토큰 및 비밀로 교환합니다. 두 토큰이 동일한 비밀을 공유하면 OAuth 프로세스가 완료되고 사용자가 리소스에 대한 액세스 권한을 서비스 제공업체에게 성공적으로 위임한 것입니다.

OAuth 프로세스

위의 예는 일반적인 OAuth 프로세스를 요약한 것입니다. OAuth는 또한 사용자가 원할 때마다 토큰을 해지할 수 있는 권한과 다양한 리소스에 대해 서비스 제공업체에게 다양한 수준의 액세스를 정의하는 등 보다 세분화된 제어와 권한을 허용합니다.

OAuth 1.0과 OAuth 2.0의 비교

2012년에 OAuth 1.0에 대한 대대적인 개선으로 OAuth 2.0이 도입되었습니다. 이 버전의 OAuth에 대한 변경 사항은 버전 2.0 및 1.0이 호환되지 않을 만큼 충분히 중요합니다. OAuth 2.0은 OAuth 인가 흐름의 세션 고정 보안 결함을 해결하도록 설계되었습니다.

이 문제는 OAuth 2.0으로 해결되었지만 새 버전은 의도적으로 암호화, 서명, 클라이언트 확인 또는 채널 바인딩을 정의하거나 지원하지 않습니다. 그러나, 대신 구현자가 해당 목적을 위해 HTTPS/TLS 등 다른 보안 프로토콜을 사용해야 합니다.

OAuth 1.0과 2.0의 차이점은 다음과 같이 요약할 수 있습니다.

OAuth 1.0과 OAuth 2.0

OAuth와 SAML의 비교 – 차이점은?

SAML은 하나의 장치가 하나 이상의 장치를 대신하여 인증과 인가를 모두 수행할 수 있는 프레임워크를 설명하는 XML 변형 언어입니다.

JSON과 같은 데이터 인코딩을 위한 가벼운 옵션이 등장하면서 모바일 장치 사용자를 지원하기 위해 OAuth가 채택되었습니다. OAuth는 SAML을 대체할 필요성에서 발전한 최신 프로토콜이지만 두 프로토콜 모두 보안 싱글 사인 온(SSO)에 중요합니다.

즉, OAuth는 두 프로토콜이 서로를 보완할 수 있는 만큼 SAML의 대안이 되지는 않습니다. 예를 들어 SSO 환경에서 SAML은 인증(사용자가 진짜이고 액세스 권한이 부여되었는지 확인)을 담당할 수 있고 OAuth는 인가(특정 보호 리소스에 대한 액세스 권한 부여)를 담당할 수 있습니다.