Oauth
![](https://velog.velcdn.com/images/3eung_h10n/post/00f0b493-6cd4-493e-84fa-a00ce28e508d/image.png)
- 클라이언트가 우리가 만든 서비스, 리소스 오너가 사용자, 리소스 서버는 구글, 카카오등 믿을만한 그런 서버(리소스 오너가 가입되어있음), 어떤 기능을 제공해주는 존재
- Oauth는 위 3자간의 관계를 정리한것
등록
- 일단 Client가 Resource server에 등록되어야함(이걸 register라고함, client의 아이디와 비밀번호가 같이 저장)
인증
- 등록이 끝나면 Resource Owner가 Client에 접속
- 이때 로그인을 하라고함
![](https://velog.velcdn.com/images/3eung_h10n/post/203cddbf-99a5-4d94-b394-5c6cc505aa1e/image.png)
- 위처럼 리소스 오너가 클라이언트에 페이스북,카카오등을 통해 로그인을 하면 클라이언트가 보낸 링크로 리소스오너가 리소스 서버로 접속하는것
- 그럼 리소스 서버는 그 링크를 받아서 링크에 있는 클라이언트 id이 있는지 확인함
![](https://velog.velcdn.com/images/3eung_h10n/post/98935e74-6ce0-4ee7-8938-ca3fe121f7a9/image.png)
- 있으면 스콥에 해당하는 기능을 허용할건지 물어봄(리소스 서버가 리소스 오너한테)
- 위의 과정은 리소스 오너의 허락을 받은것
- 그리고 리소스 서버의 허락도 받아야함
- 리소스 서버가 리소스 오너에게 임시 코드를 보냄, 그러면 리소스 오너가 그 코드를 가지고 클라이언트에게 접속, 클라이언트는 그 코드를 받아서 리소스 서버로 접속
- 리소스 서버가 클라이언트가 접속했을때 클라이언트의 id에 해당하는 임시코드가 일치하는지 확인함
- 임시코드 : authorization 코드
- 그 다음단계가 엑세스 토큰을 발급하는 것
- authorization코드를 지우면서 AccessToken을 리소스 서버가 생성해서 클라이언트에게 보내줌
- 그 이후엔 클라이언트가 그 토큰으로 접속하면 리소스 서버가 스콥에 해당하는 기능과 유저의 정보를 클라이언트에게 제공하는것
- 이 기능을 api라고함
- refresh token
- 위의 access token은 수명이 있음
- 수명이 끝나면 api를 제공받지 못함
- 그때 위의 과정을 처음부터 안하고 다시 access 토큰을 받게 해주는게 refresh token
- access와 refresh를 보통 같이 발급함, api를 제공받을때 access token을 제출하다 수명이 다하면 refresh token을 리소스 서버에게 제출하면 됨