Spring boot에서 JWT 구현(1)

2022. 2. 19. 21:56·Backend/Spring
SMALL

 

사이드 프로젝트를 하며 로그인 부분을 JWT로 구현을 했습니다.

그런데요,,

백엔드 말고도 프론트엔드를 같이 구현하며 많은 고민을 하고 삽질을 하여

누군가에게는 이 글이 도움이 되기를 바라며,, 기록을 해보겠습니다🐥

해맑🌟

 

 

JWT(Json Web Token)란?


 

  • 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, payload는 몇몇 클레임(claim) 표명(assert)을 처리하는 JSON을 보관한다.
  • 예를 들어 서버는 '관리자로 로그인됨'이라는 클레임이 있는 토큰을 생성하여 이를 클라이언트에 제공할 수 있다. 그러면 클라이언트는 해당 토큰을 사용하여 관리자로 로그인됨을 증명한다.
  • 토큰은 크기가 작고 URL 안전으로 설계되어 있으며 특히 웹 브라우저 통합 인증(SSO) 컨텍스트에 유용하다.
  • 출처 : 위키백과

 

JWT를 구현하며 발급된 토큰이 JWT 토큰의 형식과 일치하는지는 아래 공식 사이트에 들어가 확인하면 된다.

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

제가 JWT를 구현하며 발급받은 토큰을 입력하여 찍은 사진입니다😀

 

 

 

JWT 구조


  설명 예
Header 토큰 유형과 사용한 서명 알고리즘의 두 부분으로 구성 {
  "alg": "HS256",
  "typ": "JWT"
}
Payload 사용자 및 추가 데이터에 대한 설명인 Claim을 포함
Payload에는 사용자의 비밀번호와 같은 중요한 정보는 포함시키지 않음
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}
Signature 토큰이 전달되는 도중에 변경되지 않았는지 확인 HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

 

 

 

 

Authorization Header에 대하여


 

로그인을 한 후 발급 받은 Access token을 클라이언트에서 API를 요청할 때 Header에 넣어서 아래와 같이 보내준다.

Authorization: <type> <credentials>

 

1. Type

  • 인증 타입으로 보통 Basic으로 이용
  • 다른 타입으로는 아래와 같이 있다고 하는데 여러 코드들을 구경한 결과 'Bearer'를 주로 쓰는것 같아 저도 사용했습니다ㅎㅎ
  • IANA registry of Authentication schemes
  • Authentification for AWS servers (AWS4-HMAC-SHA256)

 

2. Credentials

  • 여기다 JWT 토큰을 넣으면 된다.
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

결과 예시입니다 😀

 

참고


 

 

Authorization - HTTP | MDN

HTTP Authorization 요청 헤더는 서버의 사용자 에이전트임을 증명하는 자격을 포함하여, 보통 서버에서 401 Unauthorized 상태를 WWW-Authenticate (en-US) 헤더로 알려준 이후에 나옵니다.

developer.mozilla.org

 

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

 

다음글


2022.02.20 - [Backend/Spring] - Spring boot에서 JWT 구현(2)

2022.02.20 - [Backend/Spring] - Spring boot에서 JWT 구현(3)

 

'Backend > Spring' 카테고리의 다른 글

Spring boot에서 JWT 구현(3)  (2) 2022.02.20
Spring boot에서 JWT 구현(2)  (3) 2022.02.20
Spring boot에서 첨부파일 업로드 (Apache Tika 파일 변조 체크)  (0) 2021.11.14
Spring boot에 lucy-xss-servlet-filter 적용하기  (0) 2021.07.11
[Spring boot] Swagger  (0) 2020.05.20
'Backend/Spring' 카테고리의 다른 글
  • Spring boot에서 JWT 구현(3)
  • Spring boot에서 JWT 구현(2)
  • Spring boot에서 첨부파일 업로드 (Apache Tika 파일 변조 체크)
  • Spring boot에 lucy-xss-servlet-filter 적용하기
나는 유찌
나는 유찌
쩌리쨩
  • 나는 유찌
    유찌 개발 일기
    나는 유찌
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 사이드 프로젝트
        • 게시판
        • 블로그(Spring boot + React.js ..
      • 데이터베이스
        • SQLD
      • 이슈 해결
      • Front
        • Javascript
        • Vue.js
        • HTML+CSS
      • Backend
        • Spring
        • ORM
        • JAVA
      • 공부
        • HTTP
        • OOP
        • 이것저것
        • 코딩테스트 | 알고리즘
      • Computer Science
        • Computer architecture
        • 데이터베이스
        • 운영체제
      • 일상
        • 독서
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    refresh token
    히가시노 게이고
    Kotlin AccessDecisionManager
    jwt 로그인 구현
    access token
    JWT이란?
    redis 분산락
    추리소설
    phantom read
    spring 격리수준
    role scope
    LeetCode
    독서
    DIRTY READ
    Access Token Refresh Token
    jwt
    AntPathMatcher
    Kotlin AntPathMatcher
    한국소설
    Access token 재발급
    pessimisticlock
    권한 scope 처리
    Spring Security AccessDecisionManager
    Spring boot에서 JWT 구현
    mssql
    Spring Boot
    mysql 격리수준
    spring
    웹 개발
    AccessDecisionVoter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
나는 유찌
Spring boot에서 JWT 구현(1)
상단으로

티스토리툴바