OAUTH2

김가빈·2023년 9월 26일
0

springsecurity

목록 보기
15/23

개념

  • OAUTH2는 인증, 인가 등을 간편하게 해주는 프레임 워크이다.
  • 내가 만든 어플리케이션이 다른 어플리케이션에서 정보를 가져와서 사용해야하는 경우, 클라이언트 측에서 접근을 허용해 줘야햔다.
  • 기존의 인증, 인가 방식의 문제점은 유저 클라이언트가 사용할 권한을 설정할 수 없어, 내가 만든 어플리케이션에 너무 많은 권한을 부여해야 한다는 점이었다.
    • 내가 만든 어플리케이션이 해킹당할 경우 해커가 마음대로 다른 어플리케이션 내의 유저 정보를 수정할 수 있다는 문제점이 있다.

동작방식

  • 쉽게 이해하기 위해서 내 어플리케이션에 소셜로그인 기능을 구현하는 경우를 생각해보자
  • 내가 만든 어플리케이션이 카카오에서 제공하는 유저 정보를 활용해야하는 경우, 내 어플리케이션에는 카카오에 인증을 요청한다.
  • 카카오의 Authentication server에서 카카오 로그인 화면으로 이동하고 카카오 로그인이 성공하면 카카오에서는 유저에게 내 어플리케이션에 권한을 부여할 것인지를 물어보고, 유저가 허가하면 카카오에서는 내 어플에 Access token을 부여한다.
  • 그 Access token을 통해 내 어플리케이션에서는 유저 정보에 접근할 수 있지만, 카카오에서 허가한 권한에 대해서만 접근할 수 있다.
    • 이 때 접근하는 유저 정보는 카카오의 resource server에서 가지고 오게 된다.

장점

  • Access token에 권한을 제한적으로 부여하여, 보안에 좀 더 유리하다.
  • 하나의 Access token을 여러 어플리케이션 간 공유해서 사용할 수 있다.
    • sso나 msa에서 통합된 인증, 인가를 구현할 수 있다는 장점이 있다.

실습

  • 내가 생성할 프로그램을 리소스 제공자에게 등록한다.

    • 여기서는 gitHub를 사용할 것이다.
    • settings -> developter settings -> oauth application register에서 다음과 같이 설정한다.
  • pom.xml에 dependency를 추가한다.

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-oauth2-client</artifactId>
		</dependency>
profile
신입 웹개발자입니다.

0개의 댓글