이 게시글은 유튜브 개발자 유미님의 무료강의 스프링 시큐리티 JWT 1, 2, 4 : 프로젝트 생성 및 JWT 의존성 추가을 수강하며 공부한 내용을 담고있습니다.
이 게시글은 공부한 내용을 제가 보기 편하게 정리한 내용이므로 정확한 정보는 위 영상을 시청해주세요.
이 게시글은 기본적인 Spring 기본 실습을 해봤다는 가정하에 기초적인 설명은 생략되어 있습니다.
또한 실습을 따라가며 기본적인 JWT 사용방법을 학습하기에 상세한 원리와 설명은 없는 경우가 있습니다.
프로젝트 생성
https://start.spring.io/ 스프링 스타터에서 자신의 버전에 맞도록 설정을 한 뒤 의존성에 다음을 추가한다.
- Lombok
- Spring Web
- Spring Security
- Spring Data JPA
- MySQL Driver
설정을 완료했으면 Generate 버튼을 클릭한다. zip 파일이 다운로드 될텐데 압축해제 한다.
압축해제 후 안에 build.gradle 파일이 있다.
IntelliJ 에서 open 을 클릭한 뒤 build.gradle 을 선택하여 열어준다.
Lombok, Spring Web, Spring Data JPA, MySQL Driver 에 대한 것을 알고있다고 생각하고 넘어간다.
프로젝트를 실행시킬 때 DB 연결이 안되어 있어서 오류가 발생할텐데, 해당 의존성을 주석처리하거나 미리 DB에 연결시켜놓는다.
주석처리 방법
build.gradle 에 가서 다음 두 개를 주석처리한다.
- implementation ‘org.springframework.boot:spring-boot-starter-data-jpa’
- runtimeOnly ‘com.mysql:mysql-connector-j’
그리고 코끼리 버튼을 눌러서 변경사항을 적용한다.
JWT 필수 의존성 추가
JWT 는 0.11.5 버전과 0.12.3 버전 두 개가 존재하는데, 두 버전의 차이가 크다. 내부적으로 구현이나 메서드 이름이 달라서 버전 사용에 주의해야 한다.
1
2
3
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'
build.gradle 의 dependency 에 위 세줄을 추가한다.
코끼리 버튼을 눌러 변경사항을 적용한다.
Controller 생성
1
2
3
4
5
6
7
8
@Controller
@ResponseBody
public class MainController {
@GetMapping("/")
public String mainP() {
return "Main Controller";
}
}
1
2
3
4
5
6
7
8
@Controller
@ResponseBody
public class AdminController {
@GetMapping("/admin")
public String adminP() {
return "Admin Controller";
}
}
위 두 컨트롤러를 작성하고 프로젝트를 실행해본다. 딱히 로직을 작성한게 없으므로 오류가 발생하지 않아야 정상이다.
기본적인 Spring MVC 는 알고있다는 가정하에 진행되므로 위 코드에 대해선 설명하지 않는다.
POSTMAN 설치
GET, POST 요청 및 header 와 body 를 커스텀해서 요청할 수 있게 해주는 프로그램이다.
POSTMAN 과 동일한 기능을 하는 프로그램을 이미 사용중이면 설치할 필요는 없다.
로그인을 하면 결제 plan 이 나오는데 그 화면에서 잘 찾아보면 작은 글씨로 start with free plan(맞나?)이 작은 글씨로 있다.
Test
POSTMAN 에서 localhost:8080/ 로 GET 요청을 보내어 return 값이 정상적으로 오는지 테스트 해본다.
다음 포스팅 : Config 클래스 작성

