디지털 서명된 token을 전달해 사용자를 인증하는 방식이다.
이때 사용되는 token이 JTW(JSON Web Token)이다.
client가 Auth Server에 로그인 한다.
(Auth Server는 우리의 application(application server 내)에 위치할 수도 있고, facebook, goole과 같은 제 3자가 될 수도 있다.)
Auth Server가 인증을 완료하면 사용자에게 JWT Token을 전달한다.
client는 application server에 resource를 요청할때 앞서 전달받은 JWT Token을 Authorization Header에 전달한다.
3-1) GET 방식으로 전달
3-2) POST 방식으로 전달
application server는 전달받은 JWT Token이 유효하면 200 ok와 함께 data를 response 한다.
application server는 더이상 로그인한 사용자의 session을 관리하지 않는다. 단지 전달받은 JWT가 유효한 Token인지만 확인한다.
또한, outside domain인 client가 application server에 resource를 요청하기위해 application server는 CORS enable 해야한다.
CORS를 enable 하지 않으면 기본적으로 application server는 외부 domain에 resource 접근을 허용하지 않는다.
+ CORS(Cross-Origin Resource Sharing)
:교차 출처(=다른 출처) 소스 공유
브라우저에서 다른 출처의 리소스를 공유하는 방법이다.
+ JWT(JSON Web Token)
JWT에 대한 자세한 내용은 여기에 있다.
• multiple endpoint 환경(Mobile/Web 등)인 경우 통합적인 인증/인가 환경을 제공하위해 JWT를 사용한다.
• 3rd party에게 public 하게 open 한 REST Endpoint가 존재할 경우 해당 3rd party의 인증/인가를 관리하기 위해 JWT를 사용한다.
https://youtu.be/x6bzYyMY0GA
https://minholee93.tistory.com/entry/Spring-Security-JWT-Authentication?category=924032