[Spring Boot] Spring OAuth 없이 Spring Boot로 Github OAuth 사용하기[1/2]

2021. 11. 22. 19:05Spring/Boot

스프링 부트 기반으로 Oauth를 다루려고 검색해보면 거의 대부분 Spring OAuth 모듈을 사용해서 해결하는 것 같다. 이번 글에서는 OAuth 라이브러리 없이 직접 Github OAuth를 활용해 Github API에 접근하는 글을 작성하도록 하겠다.

사전 준비 사항

  • 깃허브 아이디
  • 스프링 부트 기반 컨트롤러 매핑 지식
  • HTTP
  • Oauth 기초 지식

OAuth 간단 정리

OAuth가 뭔지 간단하게 정리하고 가자. OAuth는 서비스 제공자가 직접 사용자의 정보를 관리하지 않고 외부 사이트에 존재하는 사용자의 정보에 대해 서비스 제공자에게 권한을 부여하는 개방형 표준이다. 우리가 평소에 회원가입을 통해 이름, 아이디, 비밀번호 등을 직접 입력하는 방식은 서비스 제공자가 정보를 관리하게 된다. OAuth를 사용하는 방식은 네이버, 페이스북, 구글 등에 있는 계정 정보를 서비스 제공자에게 권한을 부여하여 접근할 수 있도록 한 후에 서비스를 제공받을 수 있게 해준다. 따라서 서비스 제공자는 유저 정보를 직접 관리하지 않아도 되며 사용자는 복잡한 회원가입 과정 없이 간편하게 서비스를 이용할 수 있게 된다.

깃허브에 애플리케이션 등록하기

깃허브의 OAuth를 사용하려면 먼저 OAuth를 사용할 애플리케이션을 만들어야 한다. 아래 과정을 따라하자.

 

 

먼저 계정의 Settings에 들어간다. 그리고 스크롤을 내리다 보면 Developer settings가 나오는데 클릭한다.

 

 

그리고 OAuth Apps를 선택하면 아래와 같은 페이지가 나온다. 여기서 New OAuth App을 누르자.

 

 

로컬에서 테스트할 것이므로 아래와 같이 작성한다. Authoization callback URL은 나중에 필요하므로 기억해두자.

 

 

Register application을 클릭하면 애플리케이션이 만들어지고 정보 페이지가 나온다.

 

 

Genereate a new client secret을 클릭하여 시크릿 값을 만들자. 이 값은 절대 노출되어서는 안된다. 그리고 처음 만들었을 때 이외에는 다시 전체를 볼 수 없으므로 처음에 값을 복사해서 메모장 같은 곳에 옮겨놓자.

 

 

이제 실제 애플리케이션을 만들 준비가 끝났다. 스프링 부트 프로젝트를 만들자. 이 부분은 편한대로 설정하면 된다. 나는 Gradle, Java 11을 선택했다.

 

 

그리고 의존성으로 Spring Web, Spring Boot DevTools, Thymeleaf를 선택하고 Finish를 누르자. Thymeleaf에 대한 지식이 없어도 될 정도로 간단하게 사용할 것이므로 Thymeleaf를 몰라도 진행에 전혀 상관없다.

 

 

프로젝트를 열어 보면 아래와 같이 구성되어 있을 것이다. 독자들은 GithubApiApplication만 있을 것이다. 필자는 이미 코드를 작성했으므로 클래스와 html이 들어있다.

 

 

글이 길어져 다음 글에서 이어서 쓰도록 하겠다.