혼자공부중
공부하는 블로그
혼자공부중
전체 방문자
오늘
어제
  • 분류 전체보기 (111)
    • 자격증 (49)
      • 정보처리기사 실기 (49)
    • JAVA (18)
    • DB (0)
    • 알고리즘 문제 풀이 (11)
      • 프로그래머스 (11)
    • Front (0)
      • HTML (0)
      • CSS (0)
      • Javascript (0)
    • 패스트캠퍼스 강의 (33)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향
  • 정보처리기사 필기
  • 자바
  • 정보처리기사
  • 2022정보처리기사
  • 패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
  • 수제비
  • 인터페이스
  • 데이터베이스
  • 정보처리기사 실기
  • 프로그래머스
  • 2022정보처리기사실기
  • 변수
  • 상속
  • 데이터모델
  • DBMS
  • SQLD
  • 코딩테스트
  • 정보처리기사 필기 정리
  • Java
  • 2022정보처리기사필기
  • 반복문
  • 애플리케이션테스트
  • 관계형데이터베이스
  • 정보처리기사 실기 정리
  • 시나공
  • 배열
  • UI
  • 알고리즘
  • 메소드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
혼자공부중

공부하는 블로그

[37일차] 50일 포트폴리오 챌린지
패스트캠퍼스 강의

[37일차] 50일 포트폴리오 챌린지

2023. 9. 13. 15:57
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S 

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr



 

JWT

토큰 관련된 인증은 대부분 로그인할 때 사용됩니다.

그 중에서도 JWT는 웹 표준을 따르고 있으며, JSON 객체를 사용하여 정보를 전달합니다.

그리고, 필요한 모든 정보를 한 객체에 담아서 전달하기 때문에 JWT 한 가지로 인증을 마칠 수 있습니다.

JWT의 구조

위와 같이 헤더, 내용, 서명이 '.(dot)'을 구분자로 하여 JWT 토큰 1개를 이룹니다.

완성된 토큰은 다음의 형태를 가집니다.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

JWT 인코딩 : https://jwt.io/

위의 링크로 접속하면 JWT을 만들어볼 수 있습니다.

JSON 이란?

JSON은 Key, Value가 한 쌍을 이루는 객체를 말합니다.

https://www.w3schools.com/whatis/whatis_json.asp

{
    "employees":[
        {"firstName":"John", "lastName":"Doe"},
        {"firstName":"Anna", "lastName":"Smith"},
        {"firstName":"Peter", "lastName":"Jones"}
    ]
}

위와 같이, employees 라는 Key 값에 Value로써 3개의 array records가 들어있는 형태입니다. 물론 Value로 array가 아닌 "name"과 같이 단순한 string 하나로 구성될 수도 있습니다.

JWT에서는 원래 "name": "value"로써, "Key": "Value"라고 하지 않습니다. 하지만 편의를 위해 "Key": "Value"로 사용하겠습니다.

HEADER:ALGORITHM & TOKEN TYPE

인코딩 : Base64

{
  "alg": "HS256",
  "typ": "JWT"
}

헤더에서는 해시 알고리즘과 토큰의 타입을 정의할 수 있습니다.

HS256은 HMAC SHA 256을 의미합니다.

해시 알고리즘 중 한 가지입니다.

타입의 값 JWT는 이 토큰을 JWT로 지정합니다.

PAYLOAD:DATA

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

내용에서는 전달하는 데이터를 포함할 수 있습니다.

데이터 각각의 Key를 claim이라고 부릅니다.

claim은 사용자가 원하는 Key와 Value로 구성할 수 있습니다.

claim에는 3가지 종류가 있습니다.

registered, public, private

registered claim : 등록된 클레임

컴팩트하게 3글자로 정의하며, 필수는 아니나 사용이 권장됩니다.

iss (issuer), exp (expiration time), sub (subject), aud (audience)

등이 있습니다.

그 외의 클레임 종류 : https://datatracker.ietf.org/doc/html/rfc7519#section-4.1

public claim : 공개 클레임

사용자가 자유롭게 정의할 수 있습니다.

단, 충돌을 방지하려면 IANA JSON 웹 토큰 레지스트리에 정의돼 있거나 충돌이 방지된 네임스페이스를 포함하는 URI로 정의해야 합니다.

URI로 정의하는 경우 :

{"http(s)://specific.uri/@unique_recommended_namespace/additional_path": true}

IANA JSON Web Token Registries : https://www.iana.org/assignments/jwt/jwt.xhtml

private claim : 비공개 클레임

이는 등록된 또는 공개 클레임이 아닌 클레임이며, 정보를 공유하기 위해 만들어진 커스터마이징된 클레임입니다.

precautions : 주의 사항

Payload는 서명된 파트가 아닙니다.

단순 Base64 인코딩이 된 파트이며, 이는 누구나 디코딩하여 데이터 열람이 가능합니다.

password 같은 결정적인 요소들은 Payload에 담기면 안 됩니다.

VERIFY SIGNATURE

해시 : HMAC SHA 256

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)

서명 파트는 위와 같이 Base64 인코딩된 Header "." Payload 그리고 secret이 필요합니다.

secret은 말 그대로 유저가 지정하는 비밀 코드입니다.

위와 같이 해싱하면 서명이 완성됩니다.


JWT란 무엇인가? 그리고 어떻게 사용하는가? (1) - 개념 (velog.io)

 

JWT란 무엇인가? 그리고 어떻게 사용하는가? (1) - 개념

안녕하세요, 주니어 개발자 Eon입니다.오늘 다룰 내용은 JWT (Json Web Token)입니다.사용하는 / 사용되는 로직은 다음 포스트에서 다루겠습니다.토큰 관련된 인증은 대부분 로그인할 때 사용됩니다.

velog.io

 

저작자표시 변경금지 (새창열림)

'패스트캠퍼스 강의' 카테고리의 다른 글

[32일차] 50일 포트폴리오 챌린지  (0) 2023.09.08
[31일] 50일 포트폴리오 챌린지  (0) 2023.09.07
[30일] 50일 포트폴리오 챌린지  (0) 2023.09.06
[29일차] 50일 포트폴리오 챌린지  (0) 2023.09.05
[28일차] 50일 포트폴리오 챌린지  (0) 2023.09.04
    '패스트캠퍼스 강의' 카테고리의 다른 글
    • [32일차] 50일 포트폴리오 챌린지
    • [31일] 50일 포트폴리오 챌린지
    • [30일] 50일 포트폴리오 챌린지
    • [29일차] 50일 포트폴리오 챌린지
    혼자공부중
    혼자공부중
    대단한 목적보다는 혼자 공부하는 것에 의미를 두려고 합니다.

    티스토리툴바