본문 바로가기
프로그래밍/보안

OAuth 2.0이란? OAuth는 언제 왜 사용할까?

by 공부하는EJ 2022. 6. 8.
728x90

 

 

🌈 OAuth 2.0

 

웹이나 앱에서 흔히 찾아볼 수 있는 소셜로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현된다.

전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과는 달리 OAuth는 인증을 중개해주는 메커니즘이다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다. 이미 사용자 정보를 가지고 있는 웹 서비스(Github, google, facebook and etc) 에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해진다.

 

OAuth란 인증을 위한 표준 프로토콜이며, 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공한하는 프로세스를 단순화하는 프로토콜 중 한 방법이다. 

 

🌈 그럼 OAuth는 언제, 왜 사용할까?

유저 입장에서 생각해보면, 우리는 웹상에서 굉장히 많은 서비스를 이용하고 있고 각각의 서비스를 이용하기 위해 회원가입 절차가 필요한 경우가 대부분이다. 그 서비스별로 아이디와 비밀번호를 다 기억하는 것은 매우 귀찮은 일이기에 이를 활용한다면 자주 사용하고 중요한 서비스들의 아이디와 패스워드만 기억해 놓고 해당 서비스를 통해 소셜 로그인을 할 수 있게 된다.

 

또한 보안상의 이점도 있는데, 검증되지 않은 App에서 OAuth를 사용하여 로그인한다면, 직접 유저의 민감한 정보가 노출될 일이 없고 인증 권한에 대한 허가를 미리 유저에게 구해야하기 때문에 안전하게 사용할 수 있다.

 

 

🌈  OAuth에서 꼭 알아야할 용어

 

- Resource Owner : 액세스 중인 리소스의 유저

- Client : Resource Owner 를 대신하여 보호된 리소스에 액세스하는 응용 프로그램.

- Resource server : Client의 요청을 수락하고 응답할 수 있는 서버.

- Authorization server: Resource server가 액세스 토큰을 발급받는 서버.

- Authorization grant: 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명의 유형.

- Authorization code: 액세스 토큰을 발급받기 전에 필요한 코드, 클라이언트 ID로 이 코드를 받아온 후 클라이언트 secret과 코드를 이용해 access token을 바당옴.

- Access token: 보호된 리소스에 액세스하는데 사용되는 credential. authorization code 와 client secret을 이용해 받아온 이 access token으로 resouce server에 접근할 수 있음.

- Scope: scope는 토큰의 권한을 정의함. 주어진 액세스 토큰을 사용하여 액세스 할 수 있는 리소스의 범위이다.

 

728x90

댓글