
OAuth
정의
- 사용자가 소셜 미디어플랫폼이나 다른 웹 서비스와 안전하게 상호 작용할수 있도록 설계되는 표준 인증 프로토콜
- 사용자가 자신의 정보를 웹사이트나 애플리케이션과 공유할 수 있도록 허용하면서 보안을 유지하기 위해 개발
구성요소
- Resource Owner(리소스 소유자) : 보호된 리소스에 접근하려는 사용자, 웹사이트 사용자를 의미
- Client(클라이언트) : 리소스에 접근하려는 애플리케이션 또는 서비스, 사용자가 로그인하고 싶은 웹사이트 또는 애플리케이션 의미
- Resource Server(리소스 서버) : 보호된 사용자가 리소스를 호스팅하는 서버, 사용자가 접근하려는 데이터를 소유
- Authorization Server(인기 서버) : 클라이언트가 사용자의 리소스에 접근하는 데 필요한 허가를 얻을 수 있도록 도와주는 서버
특징
- 인증 및 인가 분리 : 사용자의 리소스에 대한 접근 권한을 클라이너트가 관리하는것을 허용하여, 사용자의 인증과 리소스 접근을 분리
- 안전한 접근 권한 부여 : 사용자가 제 3자 애플리케이션에 대한 접근 권한을 안전하게 부여할 수 있도록 함
- 표준화된 프로토콜 : 표준화된 인증 프로토콜로서, 다양한 웹 서비스와 애플리케이션 간의 통합을 용이하게 해줌
장점
- 보안 강화 : 사용자는 자신의 아이디와 비밀번호를 제 3자 애플리케이션에 직접 제공하지 않아도 됨
- 사용자 편의성 증대 : 다양한 애플리케이션에서 동일한 인증 정보를 사용하여 편리하게 로그인 가능
- API 통합 용이성 : API 간의 통합을 간단하게 만들어줌
단점
- 보안 취약점 : 애플리케이션에서 올바르지 않은 방법으로 OAuth를 구현할 경우 보안 위험 초래 가능
- 사용자 프라이버스 우려 : 제 3자 애플리케이션에 대한 접근 권한을 부여할 때 그에 대한 프라이버시가 우려 가능
주의할 점
- 애플리케이션 보안 강화 : 보안에 대한 고려가 필요
- 권한 부여 범위 확인 : 제 3자 애플리케이션에 부여하는 권한의 범위를 명확히 이해하고 확인해야 함
- 유효 기간 관리 : 엑세스 토큰 및 리프레시 토큰의 유효 기간을 관리하여 보안 유지