Hello

19. JWT 프로젝트 세팅

by 볼빵빵오춘기

새 프로젝트 만들기

  • 기존 그 전 프로젝트에서는 gradle-kotlin으로 만들었으나 이번엔 동영상 강의와 같게 maven으로 만들어보았다.
  • OAuth2 Client 는 dependencies안한다. 
    why? JWT에서 OAuth2를 사용할려면 그 전에 배웠던 내용이 필요없기 때문에. 즉, 다른 방식으로 구현해야하기 때문이다.

 

 

JWT Dependencies 하기

https://mvnrepository.com/ 사이트에 들어가기

(mvnrepository : 자바라이브러리가 모여있는 사이트이다.)

 

클릭하여 복사한다.

 

⇒ 여기서 JWT 라이브러리를 쓰는이유는 JWT토큰을 우리가 base64를 인코딩하여 직접 만들어도 되지만 라이브러리가 있으므로 어렵게 만들 필요없이 사용한다.

 

JWT 라이브러리를 이용하여 헤어, 페이로드, 시그니처를 만들예정이다.

시그니처 같은 경우 헤더+페이로드+ 시크릿값인데 이 헤더+페이로드+ 시크릿값을 변수에 넣어 HS256으로 암호화를 해서 그걸 다시 base64로 인코딩을 한다.(안해도 되긴 함, 여기서는 시크릿값은 “코스”라고 했다.)

 

pom.xml

https://mvnrepository.com/ 에서 복사한 내용을 pom.xml에 <dependencies>~</dependencies> 사이에 넣어준다.

<dependencies>
    <!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
    <dependency>
        <groupId>com.auth0</groupId>
        <artifactId>java-jwt</artifactId>
        <version>3.19.2</version>
    </dependency>
</dependencies>

 

더보기

pom.xml 전체 코드

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.17</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.cos</groupId>
	<artifactId>jwt</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>jwt</name>
	<description>JWT Project</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
		<dependency>
			<groupId>com.auth0</groupId>
			<artifactId>java-jwt</artifactId>
			<version>3.19.2</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<builder>paketobuildpacks/builder-jammy-base:latest</builder>
					</image>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

 

Error 발생

pom.xml에 mavenrepository에서 추가한 JWT라이브러리가 빨간글씨가 되면서 error가 발생했다. 

해결방법 : https://stackoverflow.com/questions/61537415/dependency-org-springframework-bootspring-boot-starter-security2-2-6-release

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기