개념
- OAUTH2는 인증, 인가 등을 간편하게 해주는 프레임 워크이다.
- 내가 만든 어플리케이션이 다른 어플리케이션에서 정보를 가져와서 사용해야하는 경우, 클라이언트 측에서 접근을 허용해 줘야햔다.
- 기존의 인증, 인가 방식의 문제점은 유저 클라이언트가 사용할 권한을 설정할 수 없어, 내가 만든 어플리케이션에 너무 많은 권한을 부여해야 한다는 점이었다.
- 내가 만든 어플리케이션이 해킹당할 경우 해커가 마음대로 다른 어플리케이션 내의 유저 정보를 수정할 수 있다는 문제점이 있다.
동작방식
- 쉽게 이해하기 위해서 내 어플리케이션에 소셜로그인 기능을 구현하는 경우를 생각해보자
- 내가 만든 어플리케이션이 카카오에서 제공하는 유저 정보를 활용해야하는 경우, 내 어플리케이션에는 카카오에 인증을 요청한다.
- 카카오의 Authentication server에서 카카오 로그인 화면으로 이동하고 카카오 로그인이 성공하면 카카오에서는 유저에게 내 어플리케이션에 권한을 부여할 것인지를 물어보고, 유저가 허가하면 카카오에서는 내 어플에 Access token을 부여한다.
- 그 Access token을 통해 내 어플리케이션에서는 유저 정보에 접근할 수 있지만, 카카오에서 허가한 권한에 대해서만 접근할 수 있다.
- 이 때 접근하는 유저 정보는 카카오의 resource server에서 가지고 오게 된다.
장점
- Access token에 권한을 제한적으로 부여하여, 보안에 좀 더 유리하다.
- 하나의 Access token을 여러 어플리케이션 간 공유해서 사용할 수 있다.
- sso나 msa에서 통합된 인증, 인가를 구현할 수 있다는 장점이 있다.
실습
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>