jwt 8

SpringbootSecurity/JWT토큰만들기

이번 포스팅은 저번 포스팅과 연결돼 있습니다. com.auth0 java-jwt 3.10.2 위 dependency는 JWT토큰을 만들어주는 라이브러리이다. pom.xml에서 설정해 주기!! 어번 포스팅에서 클라이언트가 로그인 요청이 왔을 때 JWT서버에서 해야 하는 설정을 해줬다면 이제 요청이 끝나고 응답을 해줄 때 JWT서버에서 해줘야 할 설정들을 포스팅해보겠습니다. 이전 포스팅에서 attemptAuthentication(요청) 함수가 끝이 나고 successfulAuthentication함수가 순차적으로 실행되는데 successfulAuthentication함수에서 JWT토큰을 만들어서 응답을 해주기 전까지 포스팅을 했습니다. 이번 포스팅에서 응답을 하는 것을 포스팅해보겠습니다. 주석에 주요 내용들..

SpringbootSecurity 2021.10.04

SpringbootSecurity/JWT Bearer 인증방식

JWT Bearer인증방식에 대해서 포스팅을 하겠습니다. 본 포스팅은 저번 포스팅과 연결돼있습니다. http.csrf.disable설정의 의미는 기본적으로 웹서버에서는 자바스크립트의 공격을 방어하기 위해서 크로스 오리진정첵을 운영하고 있는데 그 설정을 없앤다는 것이다. 바로 밑에 http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) 는 Stateless를 사용한다는 것은 session을 사용하지 않겠다는 것이다. 기본적인 웹은 stateless를 사용하는데 statfull처럼 느껴지도록 session과 cookie를 사용하는데 jwt서버는 session을 사용하지 않기 때문에 사용하지 않도록 설정해 준 것이다. fo..

SpringbootSecurity 2021.09.23

SpringbootSecurity/JWT를 위한 Security설정

지금 현제 하고 있는 프로젝트는 Security를 기반으로 만들어졌기 때문에 JWT를 위한 Security설정을 해보겠다. 모델을 하나 만든다. 이제 yml설정에서 create로 바꿔주고 db에 테이블을 하나 만들면 된다. Security설정 기본적으로 Seicurity설정은 다음과 같이 해준다. 그리고 몇가지 설정을 추가적으로 더 해줘야 한다. 서버 설정 추가 corsFilter는 SpringFramwork가 들고 있는 함수를 사용한다. /api/로 들어오는 모든 주소는 이 config설정을 따라라고 설정을 해주고 return 해준다. 그리고 위와 같이 걸기만 하면 의미가 없고 filter에 등록을 해줘야 한다. 다시 SecurityConfig클래스로 가서 Security설정을 만져 준다. 이렇게 시큐..

SpringbootSecurity 2021.09.07

SpringbootSecurity/JWT 프로젝트 세팅 (yml설정포함)

이제 드디어 JWT서버를 만들어보는 프로젝트를 만들어 본다. https://mvnrepository.com/ mvnrepository에서 JWT를 사용하기 편리하게 해주는 라이브러리를 다운로드한다. 이 라이브러리를 쓰면 base64로 인코딩 디코딩 작업과 HS256으로 암호화는 작업을 직접 해야 하는데 아주 간편하게 해 준다. 이 라이브러리까지 porm.xml에 추가해주면 기본적인 프로젝트 수정은 끝났다. yml설정 server: port: 8080 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: ..

SpringbootSecurity 2021.09.07

SpringbootSecurity/JWT구조에 대한 이해

https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 저번 포스팅에선 RFC문서가 뭔지에 대해서 이해를 했으니 이제 JWT가 뭔지 자세히 알아보자. JSON웹 토큰이란?(JWT) JSON웹 토큰은 JSON객체로 안전하게 정보를 전송하기 위한 방식이다. 이 정보는 디지털 서명이 되어 있으므로 신뢰할 수 있다. JWT는 HMAC알고리즘 또는 RSA를 사용한다. JWT를 암호화하여 당사자간에 비밀을 제공 할 수도 있지만 이 JWT의 핵심은 서명된 토큰에 중점을 둔 것이다. 즉 서명의 용도로 사용을 하는 ..

SpringbootSecurity 2021.09.04

SpringbootSecurity/RFC문서에 대한 개념

https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 이 사이트로 가면 JWT에 대한 설명이 나온다. 어떤 암호화 방식을 쓰는지 어떻게 사용하는지 등등 잘 나와있다.(영어긴 하지만...) 그래서 여기에 적인 문서를 정리를 하기 위해서 포스팅을 한다. 그럼 JWT를 이해하기 전에 RFC문서가 뭔지 알아야 이해할 수 있다. 이 JWT는 RFC7519번 문서에 설명이 나오기 때문이다. RFC문서란? http라는 것은 미국에 벨연구소라는 곳이 있는며 여기서 월드 와이드 웹(WWW)이 나왔다. www가 뭐냐..

SpringbootSecurity 2021.09.04

SpringbootSecurity/JWT/JWT기본개념(TCP에 대해 이해하기)

저번 포스팅에서 Session에 대한 이해와 더해서 JWT를 이해하기 위해선 TCP도 알고 있어야 한다. 어떤 새로운 기술을 배울 때 그 기술이 원초적으로 이해가 되지 않는다면 그 기술에 대한 배경지식이 많이 부족하다는 것이다. 그래서 그 기술을 기술적으로 사용할 수 있게 된다고 해도 이해를 하지 않았기 때문에 금방 까먹고 새로운 기술이 나오면 처음부터 다시 배우는 느낌이 들 수밖에 없다. 그렇기 때문에 이런 배경지식을 먼저 이해하는 것이 중요한 것 같다 osi 7 계층에 대한 자세한 내용은 따로 포스팅이 되어있습니다! 웹에는 OSI 7 계층이라는 것이 있다. 이걸이해해야 TCP/IP를 알게되고 그래야 보안을 이해하면서 왜 JWT가 나오는지 알수 있게되는 것이다. OSI 7계층 1. 응용계층 : 응용프로..

SpringbootSecurity 2021.09.02

SpringbootSecurity/JWT기본개념(세션에 고질적인 문제)

JWT JWT는 json web token이 라고 한다. 그럼 이 JWT가 왜 사용되고 어디에 사용되는지 먼저 알아보자 JWT를 이해하기위해선 session의 단점이 뭔지부터 알아야 한다. Session 기본적으로 사용자가 웹에서 서버로 최초 요청을 한다고 하면 서버가 응답을 할 때 해더에 쿠키를 담아서 세션 id를 넘겨주고 사용자의 웹에 자동으로 쿠키를 저장하는 것이 기본전략이다. 그래서 다음에 같은 사용자가 다시 요청을 한다고하면 쿠키에 있는 세션id를 보고 사용자의 요청을 효율적으로 응답할 수 있게 되는 것이다. 그럼 이 session은 언제 사라지냐? 1. 서버 쪽에서 session값을 날렸을 때 2. 사용자가 브라우저를 전부 종료했을 때 3. 특정 시간이 지나면 자동 삭제 이때 서버가 알아야 하..

SpringbootSecurity 2021.09.02