OAuth란?
- 오픈 스탠다드 인증 프로토콜. -> 사용자가 자신의 정보를 제공하지 않고도, 한 서비스가 다른 서비스에 대한 사용자의 계정에 접근할 수 있도록 허용할 수 있다.
- 인터넷 서비스 간의 안전한 승인 방식.
- ex) 호텔에 처음 도착했을 때, 프론트 데스크에서 신분을 확인하고 열쇠를 준다. 이 열쇠로 방에 들어갈 수 있고, 호텔의 다양한 서비스를 이용할 수 있다. 인터넷에서 OAuth가 이 프론트 데스크 역할을 한다. 어떤 앱이나 서비스를 이용하고 싶을 때, 서비스가 사용자의 신분을 직접 확인하는 대신, OAuth를 통해 신분을 확인하고 열쇠(접근 토큰)을 준다.
OAuth의 특징
- 토큰 기반 : 사용자는 자신의 로그인 정보를 제공하지 않고, 대신 '액세스 토큰'이라고 하는 인증 토큰을 제공. 이 토큰은 특정 자원에 대한 접근 권한만을 부여하며, 제한된 시간 동안만 유효하다.
- 범위 지정 : OAuth는 접근 토큰에 '범위'를 지정할 수 있어서, 타사 서비스가 사용자의 계정에 접근할 때 특정 자원이라 행동에만 제한적으로 접근할 수 있다.
- 보안성 : 사용자의 로그인 정보를 제3자에게 전달할 필요가 없기 때문에 OAuth는 비교적 안전한 인증 방식을 제공한다.
- 사용자 경험 : 사용자는 여러 서비스에 대해 별도의 계정을 만들 필요 없이, 이미 가지고 있는 계정(구글, 네이버 등)을 이용하여 다른 서비스에 로그인할 수 있다.
OAuth의 장점
- 편리성 : 사용자는 여러 아이디와 비밀번호를 기억할 필요 없이 서비스를 이용할 수 있다.
- 강화된 보안 : 비밀번호를 공유하지 않고 서비스 간 인증을 수행할 수 있어 보안이 강화된다.
- 제어 가능성 : 사용자는 어떤 서비스가 자신의 정보에 접근할 수 있는지, 그리고 어떤 정보에 접근할 수 있는지를 제어할 수 있다.
OAuth의 단점
- 복잡성 : 처음 구현하는 개발자에게는 프로토콜이 복잡하게 느껴질 수 있으며, 잘못 구현될 경우 보안 취약점이 될 수 있다.
- 중앙 집중화 : 많은 서비스가 구글이나 페이스북 같은 몇몇 대형 서비스의 인증 시스템에 의존하게 되면, 이러한 서비스들에 문제가 발생하거나 정책이 변경될 경우 많은 부분에 영항을 끼칠 수 있다.
- 토큰 유출 위험 : 액세스 토큰이 유출될 경우 공격자가 사용자의 허가를 받지 않고 자원에 접근할 수 있다.