[Security] SpringBoot Security & JWT - OAuth2.0_Naver
·
Back-End/Security
[작성일: 2023. 09. 19] 네이버 로그인 참고로 나는 페이스북이 가입이 되어있지 않고 사용할 일이 없을 거 같아서 구글과 네이버만 연동하려고 한다.페이스북 연동은 하지 않았지만 필요한 코드는 작성했다. 우선 google은 sub라는 id가 존재하지만 facebook과 naver은 sub가 존재하지 않는다. 그래서 username이 만들어질 때 sub에 null값이 들어가게 된다. 이 문제를 해결하기 위해 provider 클래스와 OAuth2Userinfo 인터페이스, 인터페이스를 구현할 GoogleUserInfo 클래스를 따로 만들어준다. public interface OAuth2UserInfo { String getProviderId(); String getProvider(); ..
[Security] SpringBoot Security & JWT - OAuth2.0_Google
·
Back-End/Security
[작성일: 2023. 09. 17] 구글 로그인우선 구글 OAuth 프로젝트를 만들고 OAuth 동의 화면(외부) ➡️ OAuth 클라이언트 ID 만들기 순서로 진행하면 된다.  승인된 리디렉션 URI에는 다음과 같은 주소를 넣어주면 된다. http://localhost:8080/login/oauth2/code/google 이 주소는 구글 로그인이 완료되고 나면 구글 서버쪽에서 인증이 되었다는 code를 돌려준다. 우리는 이 코드를 받아 access token을 요청할 수 있다. 이 token으로 사용자의 개인 정보에 접근할 수 있는 권한이 생긴다. 이 URI가 있기 때문에 컨트롤러를 따로 만들 필요가 없다.  그 다음 나는 gradle을 사용하기 때문에 gradle.build에 의존성을 추가하고, ym..
[Security] SpringBoot Security & JWT - 스프링 시큐리티
·
Back-End/Security
[작성일: 2023. 09. 16]   Security + JWT로 로그인을 구현한 경험이 있지만 동작되는 원리를 잘 이해하지 못해서 강의를 듣고 블로그에 정리하면서 공부하려고 한다.나중에 다시봐도 이해할 수 있게, 또는 Security에 대해 모르는 누가 봐도 이해할 수 있게 작성하는 것이 목표다. 환경설정강의가 나랑 다른 환경에서 진행되고 있기 때문에 무작정 따라하지 않고 나는 내 환경에 맞춰서 공부를 하려고 한다.    application.ymlthymeleaf로 바꾸면서 필요없을 거 같은 설정은 우선 다 제외했다.그리고 mysql로 되어있던 datasource 부분도 mariadb로 바꿔주었다. spring: datasource: driver-class-name: org.mariadb.j..
[HTTP] HTTP 헤더 - 캐시와 조건부 요청
·
Back-End/HTTP
[작성일: 2023. 09. 12] 캐시 기본 동작캐시가 없을 때데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운받아야 한다.인터넷 네트워크는 매우 비싸고 느리다.브라우저 로딩 속도가 느리다.느린 사용자 경험   캐시 적용 cache-control: max-age=60캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.비싼 네트워크 사용량을 줄일 수 있다.브라우저 로딩 속도가 매우 빠르다.빠른 사용자 경험 하지만 캐시 유효 시간이 초과하면 서버를 통해 다시 데이터를 조회하고 캐시를 갱신한다.이때 다시 네트워크 다운로드(1.1M)가 발생하는 것이다. 서버에 있는 데이터와 클라이언트에게 있는 데이터가 변함이 없는데도 전체를 다시 다운 받는다면 낭비가 발생한다.     검증 헤더와 조..
[HTTP] HTTP 헤더 - 일반 헤더
·
Back-End/HTTP
[작성일: 2023. 09. 09] HTTP 헤더 개요1999년 RFC2616이 등장했지만 폐기되고, 2014년 RFC7230~7235가 등장했다. RFC732x가 등장하며 변화한 것을 알아보자. 엔티티(Entity) ➡️ 표현(Repressentation)Repressentation = representation Metadata + Representation Data표현 = 표현 메타데이터 + 표현 데이터  메시지 본문(message body)을 통해 표현 데이터를 전달한다.메시지 본문 = 페이로드(payload)표현은 요청이나 응답에서 전달할 실제 데이터를 의미한다.표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공한다.데이터 유형(html, json), 데이터 길이, 압축정보 등     표현Co..
[HTTP] HTTP 상태코드
·
Back-End/HTTP
[작성일: 2023. 09. 08] 상태코드상태코드란 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능을 의미한다.1xx (Informational) : 요청이 수신되어 처리 중(거의 사용 X)2xx (Successful) : 요청 정상 처리3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없다는 의미5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함. 클라이언트가 인식할 수 없는 상태코드를 서버가 반환한다면 상위 상태코드로 해석해서 처리하면 된다.미래에 새로운 상태코드가 추가되어도 클라이언트를 변경하지 않아도 된다.    2xx (Succes..