Oauth란 인증 인가를 통한 보안 프로토콜의 일종이다.

보통 관심없는 사람은 관심없겟지만 서비스를 만들다보면 네이버, 구글 , 카카오를 통한 로그인 기능을 만들고 싶을 때가있다.


Oauth는 이러한 기능에 밑거름이되는 보안 프로토콜이다.


그렇다면 Oauth라는 기술은 왜사용하는 것일까?? 카카오같은 사용자의 데이터를 가지고있는 서버가 사용자의 아이디와 비밀번호를 노출하지 않고 제 3자서버에게

데이터를 제공하는 목적에 있다.


흠... 그러면 Oauth1.0 버전은 건너뛰고 현재는 Oauth 2.0버전을 사용한다. Oauth의 인증방식은 여러가지가있지만

가장 많이 사용하는 인증방식은 Authrization code grant type 이 있다. 말그대로 코드를 이용한 인증 방식이다.


여기서 몇가지 용어 정리가 필요한데


1. 리소스 오너

2. 클라이언트

3. 인증 서버

4. 인가 서버


네가지 용어가 있다.

리소스 오너란 "나" 로그인 할려는 주체

클라이언트란 카카오 로그인 같은 기능을 추가하고 싶은 웹 클라이언트

인증 서버란 카카오

인가 서버란 카카오의 데이터를 가지고있는 DB관련 서버


플로우는 각자 알아서 검색해보자 ㅎㅎ


여튼 이러한 인증 인가 서버를 구현하고 싶을때는 뭐 직접 Dispatcher 서블릿의 정보가 오기전에 필터 핸들러에서 처리하는 방법도 있겠지만

Spring Security라는 보안 프레임워크를 사용하면 필터체인이라는 15가지 필터들을 이용해서 이러한 인증 인가서버를 만들 수 있다.


근데 Oauth는 필연적으로 토큰으로 현재 리소스 오너에 대한 정보를 호출할수잇는 권한을 발행하는데


이때 token을 state less 하게 할것인지 state full 하게 연결할것인지는 본인스스로 상황을 생각해보고 사용해보도록하자