요즘은 새로운 웹사이트를 사용할 때 구글, 네이버와 같은 소셜 계정으로 바로 편리하게 로그인, 회원가입을 할 수 있는데요. 이 방법은 소셜 사이트에서 내 데이터의 일부를 제3자의 서비스와 공유해서 가능한 거예요. 이렇게 다양한 서비스 사이에서 안전하게 고객 데이터를 주고받기 위해 OAuth 프레임워크가 탄생했어요. OAuth는 제3자의 클라이언트에게 보호된 리소스를 제한적으로 접근하게 해주는 프레임워크에요.
2010년에 IETF에서 OAuth 1.0 공식 표준안 RFC 5849를 발표했는데요. OAuth 1.0에는 여러 가지 문제가 있었어요. 구현이 복잡했고, 모바일 애플리케이션에서 지원이 부족했어요. 또한 인증을 위한 Access Token이 만료되지 않아서 보안에 취약점이 있었어요.
OAuth 1.0의 문제점을 보완하기 위해 2012년에 OAuth 2.0이 발표됐어요. 자세한 정보는 RFC 6749에서 확인할 수 있어요.
OAuth 2.0 프레임워크가 어떻게 리소스를 공유하는지 더 자세히 알아볼게요. OAuth 프레임워크에는 리소스 소유자, 클라이언트, 인증 서버, 리소스 서버가 있어요.
- 리소스 소유자: 사용자
- 클라이언트: 사용자의 정보를 접근하는 제3자의 서비스
- 인증 서버: 클라이언트의 접근을 관리하는 서버
- 리소스 서버: 리소스 소유자의 데이터를 관리하는 서버
먼저, 리소스 소유자가 클라이언트에게 인증을 허가해요. 구글과 같은 소셜 계정에 로그인하는 과정이죠. 이때 리소스 소유자는 클라이언트와 어떤 정보를 공유할지 선택할 수 있어요.
리소스 소유자의 동의가 확인되면 인증 서버는 클라이언트에게 액세스 토큰(Access Token)과 리프레시 토큰(Refresh Token)을 발급해요. 클라이언트는 액세스 토큰을 사용해서 리소스 서버에 보호된 데이터를 불러올 수 있어요.
하지만 보안 문제로 액세스 토큰은 만료 기간이 있어요. 그렇다면 리소스 소유자가 다시 로그인해야 하는 번거로움이 있는데요. 액세스 토큰이 만료되기 전에 리프레시 토큰으로 액세스 토큰을 재발급 받을 수 있어요.
토스페이먼츠 브랜드페이는 쉽게 내 회사만의 OO페이와 같은 간편결제를 구현할 수 있는 서비스입니다.
위 화면은 구매자가 계좌를 등록하는 과정인데요. 내 회사의 OO페이에 구매자가 계좌를 등록하면, 계좌 정보는 토스페이먼츠 브랜드페이 리소스 서버에 저장돼요. 그래서 내 회사에서 구매자의 정보를 접근할 때는 브랜드페이 액세스 토큰으로 Bearer 인증을 완료해야 돼요.
브랜드페이 연동하기