OAuth
우리가 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2.0라는 기술을 바탕으로 구현된다.
OAuth는 인증을 중개해주는 메커니즘이다.
사용자 정보를 가지고 있는 웹 서비스에서 사용자의 인증을 대신해 주고, 접근 권한에 대한 토큰을 발급 후 이를 이용해 내 서버에서 인증이 가능해진다.
OAuth 작동 메커니즘 - OAuth 주체
- Resource Owner
- OAuth 인증을 통해 소셜 로그인을 하고 싶어하는 사용자
- 사용자의 이름, 전화번호의 정보
- Resource Server & Authorization Server
- Resource Server : 사용자의 정보를 저장하고 있는 서버
- Authorization Server : 인증을 담당하는 서버
- Application
- 사용자가 소셜 로그인을 활용해 이용하고자 하는 새로운 서비스
OAuth 인증방식의 종류와 흐름
Grant Type : Authorization Server에서 Access Token을 받아오는 방식
1 . Implicit Grant Type
Implicit Grant Type은 기존 서비스에 로그인만 되어있으면 새로운 서비스에 바로 액세트 토큰을 내어주기 때문에 보안성이 조금 떨어진다.
그래서 이 인증단계를 한단계 추가한 Authorization Code Grant Type을 주로 사용한다.
2 . Authorization Code Grant Type
Authorization Code를 사용한 인증단계가 추가로 있어 비교적 더 안전하다.
그리고 토큰을 Application의 Client에 노출시키지 않고 Server에서만 관리가 가능하도록 만들수 있어 소셜 로그인을 구현하는 방식의 선택지가 늘어난다.
하지만 사용자가 새로운 서비스를 이용하다 액세스 토큰이 만료되었을때, 매번 이 과정을 거쳐 액세스 토큰을 다시 발급받아야 하는 것은 사용자 편의성에 좋지 않다.
그래서 액세스 토큰을 발급해 줄 때 리프레시 토큰을 같이 발급해주기도 한다.
3. Refresh Token Grant Type
Authorization Server로 리프레시 토큰을 보내주면, Authorization Server는 리프레시 토큰을 검증한 다음 액세스 토큰을 다시 발급해 준다.
다시 발급받은 액세스 토큰을 사용해 Resource Server에서 사용자의 정보를 받아온다.
OAuth 장점
쉽고 안전하게 새로운 서비스를 이용할 수 있다.
권한 영역을 설정할 수 있다.
참조, 출처 : 코드스테이츠