OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹 사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹 사이트의 계정에 관한 정보를 공유할 수 있게 허용한다 (로그인 API)
OAuth가 쓰이기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본 인증인 아이디, 비밀번호를 썼는데 이는 보안상 취약한 구조다. 기본 인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인했다. OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다. OAuth를 쓰면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합해 쓰는 게 가능해진다.
OAuth를 사용하는 서비스는 사용자에게 액세스 토큰을 주는데 이 토큰은 JWT 형식일 수도 있다.
이 액세스 토큰을 받은 사용자는 자신의 개인정보를 서비스에 넘기지 않고도 그 서비스에 회원가입 or 로그인해서 서비스를 이용할 수 있다, 액세스 토큰을 발급받았다고 가정하고 이 액세스 토큰이 만료되면 더 이상 쓸 수 없을텐데 해결하기 위해 만들어진 것이 리프레시 토큰(Refresh Token)이다.
아래는 만료된 엑세스 토큰을 새로고침하는 과정
액세스 토큰은 리프레시 토큰에 비해 일반적으로 유효기간이 짧다. 그래서 사용자가 액세스 토큰을 발급받아 서비스를 이용하다가 이 액세스 토큰이 만료됐을 경우, 액세스 토큰과 같이 발급받은 리프레시 토큰을 이용해 액세스 토큰을 새로 발급받는다. 그럼 사용자는 계속해서 서비스를 이용할 수 있다.
2번째 그림에선 이해를 위해 사용자와 서버가 있는 형태를 취했지만, 원래 OAuth의 참여자는 4개로 구분된다.
- Resource Server : API 서버를 말하는 OAuth 2.0 용어. 앱이 액세스 토큰을 얻은 후 인증된 요청을 처리한다. 일반적으로 이런 액세스 요청 처리를 위한 CRUD API를 제공하며, 클라이언트에 리소스를 제공하기 전에 액세스 토큰을 검사해 액세스 권한을 부여해야 하는지를 결정한다.
- Resource Owner : 앱이 자기 계정에 접근하게 승인하는 사용자. 사용자 계정에 대한 앱의 액세스는 부여된 권한 범위로 제한된다
- Client : Resource Server에 접속해 자원을 가져와 사용하는 클라이언트. 웹 앱 또는 애플리케이션일 수 있다. 쉽게 말해 내가 만들고 있는 앱일 수도 있다.
- Authorization Server : 사용자 동의를 받아 권한을 부여하는 인증 서버. 클라이언트의 접근 자격을 확인하고 액세스 토큰을 발급해 권한을 부여한다
'CS > 네트워크' 카테고리의 다른 글
NAT와 NAPT의 개념과 원리 (0) | 2024.09.23 |
---|---|
JWT (Json Web Token) (0) | 2024.09.23 |
MAC 주소 개념 정리 / 스위치 (0) | 2024.08.09 |
스위치 라우터의 차이 (0) | 2024.08.09 |
IPsec의 개념 (0) | 2024.07.30 |