728x90

1. MySQL에서 테이블을 만들어준다.

ID에 적용할 것이므로 AI(Auto Increment) 체크!

 

2. 자바 코드에서 Model에 @GeneratedValue 어노테이션을 추가해준다.

@GeneratedValue(strategy = GenerationType.IDENTITY)

다음은 코드에 적용한 모습이다.

 

728x90

JWT란?

JSON 정보를 안전하게 전송하기위한 방식. HMAC, RSA 또는 ECDSA를 사용

1.구조 : Header.PayLoad.Signature(서명)


1.1 Header는 typ(토큰의 타입), alg(알고리즘 방식)으로 구성
여기서 alg는 서명을 해싱하기 위한 알고리즘이다.

1.2 PayLoad는 여러 정보들 (쉽게 유저 정보 정도)

1.3 서명은 Header와 PayLoad 그리고 시크릿키를 가지고 암호화 (HS256은 시크릿키를 포함하지만 RSA는 헤더와 페이로드를 개인키로 암호화 한다.)

  • Header, PayLoad, 서명은 각각 base64로 암호화 되어있다. -> 디코딩 또한 가능 (해시는 디코딩 불가능)
  • 이 원리를 통해 암호화에 목적이 있는 것이 아닌 서명에 목적을 두며 데이터가 유효한지 검증하기 위한 작업을 할 수 있다고 한다.

2. 작동 방식

 

1. 클라이언트에서 서버로 로그인 시도를 하면 서버에서 JWT 토큰을 만들어 되돌려 준다.
2. 클라이언트는 보통 이 토큰을 로컬스토리지에서 가지고 있는다.
3. 클라이언트에서 서버에 개인정보를 요청하면서 JWT 토큰을 서버에 전달한다.
4. 서버에서 토큰을 검증하여 클라이언트에서 요청을 보낸 사용자가 신뢰할 수 있는 사용자인지 검증한다.

5. 요청 받은 정보를 페이로드를 통해 DB에서 일치하는 정보를 찾아 리턴한다. 

  • 검증하는 방법 : 클라이언트에서 전달 받은 JWT 토큰과 비교한다.
  • 무엇을 비교해? : 서버에서 Header와 PayLoad, 시크릿키 등을 암호화 해보고 결과가 전달받은 JWT 토큰과 똑같은지 검증한다.

HMAC? : 서명을 Header와 PayLoad, 시크릿키를 이용해서 암호화

 

RSA?

  • Header.PayLoad.서명
  • 서명 : (헤더+페이로드)를 개인키로 암호화
  • 위에 기술된 내용은 HMAC을 예로 기술한 내용이며, 서명이 (헤더, 페이로드, 시크릿키)로 구성 됐다는 차이뿐이다.
  • RSA 검증 시 : 클라이언트가 서버에 요청하면 공개키로 서명을 검증하기만 하면 됨.

 

-

 

 

* 해당 글은 인프런에 게시된 '최주호'님의 강의를 듣고 개인적으로 정리한 글입니다.

강의 출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0

728x90

Spring 프로젝트에서 css 작업을 위해 Bootstrap을 사용하기로 했다!

 

HTML 파일에서 사용해보긴 했으나, JSP파일에서 사용이 가능한지 확인할 겸, 사용법을 정리하고자 한다.

 

https://getbootstrap.com/

 

Bootstrap

The most popular HTML, CSS, and JS library in the world.

getbootstrap.com

 

부트스트랩 홈페이지이다. 들어가면 Get Started를 누르면 나오는 코드들이 있다.

위 2개의 코드를 복사하여 JSP 파일 또는 HTML 파일 상단에 붙여 넣어준다.

 

그 후 부트스트랩을 사용 가능한지 테스트를 위해 버튼을 하나 만들어 보겠다.

 

 

좌측 상단에서 Button을 검색한다. 그럼 여러 가지 버튼 소스들이 나오는데 소스를 복사하여 JSP 파일 또는 HTML 파일에 붙여 넣어준다.

 

필자는 예시로 button태그를 하나 복사하여 붙여넣어 주었다.

 

프로젝트 실행 후 화면은 다음과 같다.

 

버튼 외에도 다양한 스타일의 CSS를 간단하게 적용해볼 수 있으니 잘 사용하면 유명 사이트 못지않은 사이트를 만들어 볼 수 있겠다!

+ Recent posts