OAuth 2.0 is the industry-standard protocol for authorization.
An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.
위는 OAuth2 문서에서 정의한 OAuth2의 정의입니다.
번역해보면 다음과 같이 정리될 수 있습니다.
웹, 모바일, 데스크톱 앱 등을 대상으로 하는 Authorization을 위한 프로토콜
OAuth2는 4가지 Role를 정의합니다.
이 글에서는 이해를 돕기 위해,
가정하겠습니다.
OAuth2는 여러가지 Flow를 가지고 있습니다.
이 글에서는 가장 기본이 되는 Authorization Code Flow를 알아보겠습니다.
위는 Authorization Code Flow의 한 예시입니다. 기본적으로 OAuth2가 유연하고 확장 가능하기 때문입니다. 하지만 근본적인 내용은 비슷합니다.
위 순차 다이어그램을 정리해보면 다음과 같습니다.
OAuth2를 적용하면 어떤 장점들이 있는지 알아봅시다.
보안성: OAuth2는 인증 정보를 제 3자에게 노출하지 않고도 인증을 수행할 수 있도록 합니다. 인증 서버에서는 인증 정보를 안전하게 보호하고, 애플리케이션은 인증 토큰을 통해 API에 대한 인증을 수행합니다.
유연성: OAuth2는 다양한 인증 방법과 토큰 유형을 지원합니다. 이를 통해 API 제공 업체와 애플리케이션 개발자 모두가 적절한 인증 방법을 선택하고, 필요에 따라 토큰 유형을 지원할 수 있습니다.
사용자 경험: OAuth2는 사용자가 인증 정보를 자주 입력하지 않고도 다양한 애플리케이션에 대한 액세스를 허용합니다. 이를 통해 사용자는 더욱 편리한 인증 경험을 얻을 수 있습니다.
API 보호: OAuth2는 API 제공 업체가 API를 보호하는 데 도움이 됩니다. 인증 서버를 통해 API에 액세스하는 애플리케이션을 관리할 수 있으며, 권한이 없는 액세스를 방지할 수 있습니다.
확장성: OAuth2는 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있습니다. 이를 통해 API를 사용하는 애플리케이션 개발자는 쉽게 OAuth2를 구현하고 사용할 수 있습니다.
복잡성: OAuth2는 구현이 복잡하고, 구성이 어려울 수 있습니다. 서로 다른 인증 및 권한 부여 흐름을 구성하고, 클라이언트 및 서버 사이에서 필요한 토큰 교환을 관리해야 하기 때문입니다. 이러한 복잡성은 시간과 비용이 많이 드는 구현을 유발할 수 있습니다.
보안성: OAuth2는 대부분의 보안 문제를 해결하고, 중요한 개인 정보를 보호합니다. 그러나 매우 중요한 시스템이나 높은 보안 요구 사항이 있는 경우에는, 추가적인 보안 관련 구현이 필요할 수 있습니다.
토큰 유효성: OAuth2는 토큰 유효성 검사를 제공하지만, 만료된 토큰을 처리하는 방법은 클라이언트 응용 프로그램에 따라 다를 수 있습니다. 만료된 토큰 처리가 제대로 이루어지지 않으면, 보안 문제가 발생할 수 있습니다.
이 글에서는 OAuth2에 대해 알아보았습니다. 이에 대한 제 생각을 간단히 정리해보겠습니다.