분류 전체보기 418

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기본개념(CIA와 RSA에 대해 이해하기)

이번 포스팅에서는 보안에 대해 포스팅을 간단하게 해 보겠습니다. CIA C : 기밀성 I : 무결성 A : 가용성 그럼 설명을 좀 더 쉽게 하기위해서 과거에 가서 통신한다는 가정을 해서 얘기를 시작해 본다. 몇백 년 전에 말 타고 다그닥 거리던 시절에 뭐 이런일이 발생한다고 해보자 그럼 여기서 발생할 수 있는 변수가 뭐가 있을까? A나라가 B나라로 통신을 하기 위해 신하에게 문서를 주고 B나라로 보냈는데 C나라가 중간에 이 신하를 죽이고 문서를 바꿔서(C:기밀성) B나라로 위조된 문서(I: 무결성)를 보내면 어떻게 될까? 신뢰성 있는 통신을 할 수 없게 된다.(A :가용성) 위 상황에서는 CIA가 다 깨지게된다. 보안을 하기 위해서는 CIA를 완벽하게 지킨 상태로 통신을 이뤄야 한다 CIA를 완벽하게 지..

SpringbootSecurity 2021.09.02

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

SpringbootSecurity/Springboot로 네이버 로그인 해보기 (yml에서 provider 설정하기)

저번 포스팅에서 이어갑니다. provider OAuth2-Client라는 라이브러리를 사용하고 있는데 OAuthClient를 재공해 주는 provider 있는데 Spring은 구글, 페이스북, 트위터 등등을 제공해준다. 그럼 당연히 네이버나 카카오같은 각 나라마다의 포털사이트를 Spring을 다 제공해주기엔 너무 많기 때문에 대표적인 것만 있는 것이다. 그럼 이런 각 나라마다 포털사이트의 api를 사용하려면 그 포털사이트의 문서를 봐야 사용할 수 있다. 그럼 naverAPI를 받아오기 전에 yml설정부터 하면서 이해해야할 개념이 있다. 기본적으로 스프링 시큐리티가 OAuth2로그인을 사용할 때 OAuth2를 사용하기 위한 여러 가지 방식이 있다. Code방식 Client CredentialGrantTyp..

SpringbootSecurity 2021.09.01

SpringbootSecurity/Springboot로 페이스북 로그인 해보기

https://developers.facebook.com/?locale=ko_KR Facebook for Developers iOS 14에 대비한 파트너 준비 사항: Facebook 광고에 영향을 미칠 Apple iOS 14 요구 사항에 대해 자세히 알아보세요. FACEBOOK으로 빌드하기 Facebook의 추천 플랫폼으로 고객과 소통하고 효율을 높여보세요 developers.facebook.com 위 사이트에 들어가서 로그인을 한다. 로그인하면 상단 해더에 '내 앱'이라는 카테고리가 있는데 거기로 들어가서 앱을 아래와 같이 만든다. 시작하기 전에 기본적인 oauth로그인에 대한 코드나 내용은 이전 포스팅인 구글로그인편을 해 보고 오셔야 해당 포스팅을 이해하실 수 있습니다. 앱을 만들고 로그인 기능을 추..

SpringbootSecurity 2021.08.31

SpringbootSecurity/Springboot로 구글로그인 해보기(3)/구글 로그인 및 자동 회원가입 진행 완료

저번 포스팅에서 이어집니다. PrincpalDetails를 만든 이유는 Authentication객체에 일반 로그인을 했을 경우의 타입과 oauth를 사용해서 로그인한 경우의 타입 이 두 가지 타입을 일치시키기 위해서이다. 그럼 이제 회원 oauth 회원가입을 해보자 회원가입 여기서 attributes가 가지고 있는 정보는 아래와 같다. getAttributes {sub=105617652356040885552, name=, given_name=, family_name= , picture=https://lh3.googleuserconent.com/a/AATXAJzvxBp9CVwqOqPeThYDMDJvNPxhu , email=@gmail.com , email_verified=true , locale=ko} ..

SpringbootSecurity 2021.08.29