전체 글 13

[Spring] OAuth2 / 액세스 토큰 개념 정리

OAuth2 서비스란? OAuth2는 인터넷 사용자들이 비밀번호를 공유하지 않고, 웹사이트들이 서로 사용자 계정 정보에 접근할 수 있는 방법을 제공하는 오픈스탠다드 프로토콜입니다. 이는 사용자가 서비스 제공자에게 특정 애플리케이션에 대한 접근 권한을 부여할 수 있게 해줍니다. OAuth2의 주요 장점 중 하나는 사용자가 서비스 제공자와 애플리케이션 사이에서 중개 역할을 할 수 있다는 것입니다. 이는 사용자가 직접적으로 자신의 계정 접근 권한을 제어할 수 있게 해주므로 보안성이 향상됩니다. 또한, 사용자는 비밀번호를 공유하지 않고도 애플리케이션에 의한 자신의 계정 사용을 승인할 수 있습니다. 그러나, OAuth2에는 단점도 있습니다. 복잡한 인증 절차로 인해 개발 시간이 늘어날 수 있으며, 애플리케이션에 ..

스프링 일지 2024.01.10

[Spring] 토큰 기반 인증과 JWT 개념 정리

서버 기반 인증 vs 토큰 기반 인증 📌 서버 기반 인증 서버 기반 인증에서는 사용자가 로그인하면 서버는 사용자 세션을 추적하고, 이 정보를 서버 메모리에 저장합니다. 사용자가 시스템에 로그인하고 세션을 생성하면, 이 세션 정보는 서버에 저장되고, 서버는 사용자의 브라우저에 쿠키를 설정합니다. 이 쿠키에는 세션 ID가 포함되어 있습니다. 사용자가 웹 사이트에 요청을 보낼 때마다, 브라우저는 이 쿠키를 함께 전송합니다. 서버는 쿠키의 세션 ID를 사용하여 사용자를 식별하고, 해당 사용자의 세션 정보를 검색합니다. 이 정보를 사용하여 사용자가 허용된 작업을 수행할 수 있습니다. 하지만 서버 기반 인증은 사용자 세션 정보를 서버에 저장하므로, 서버의 메모리 사용량이 증가하며, 서버의 부하가 커질 수 있습니다...

스프링 일지 2023.12.14

[Spring] 스프링 시큐리티, BCryptPasswordEncoder, 암호화 개념 정리

📌 스프링 시큐리티는 자바 기반의 애플리케이션에서 사용할 수 있는 강력한 인증 및 인가 솔루션입니다. 이는 스프링 프레임워크에 통합된 보안 프레임워크로서, 웹 보안, 인증, 권한 부여, 공격으로부터의 보호 등 다양한 보안 기능을 제공합니다. 인증(Authentication)과 인가(Authorization)는 보안의 두 가지 주요 측면입니다. 이 두 용어는 다음과 같은 차이점을 가지고 있습니다. 인증은 사용자의 신원을 확인하는 과정입니다. 이는 보통 사용자 이름과 비밀번호를 사용하여 수행되며, 사용자가 그들이 주장하는 사람인지 확인합니다. 반면에, 인가는 이미 인증된 사용자가 시스템의 특정 자원에 액세스하도록 허용하는 과정입니다. 이는 사용자의 권한 또는 역할을 기반으로 수행되며, 사용자가 수행할 수 있..

스프링 일지 2023.12.13

서버 사이드 템플릿 엔진 / 클라이언트 사이드 템플릿 엔진 정리

템플릿 엔진 HTML 상 데이터를 넣어서 보여주는 도구 (소프트웨어) == 지정된 양식과 데이터가 합쳐져 HTML 문서 출력 ✔️서버 사이드 템플릿 엔진 Server Side Templete Engine 서버 : 데이터 처리- 가공, HTML 완성했어 ^0^ 클라이언트 : 응~ 받아갈게 서버에서 HTML 랜더링 - 페이지 로딩시 한번만 이루어짐 (이후 변경사항이 생기면 새로고침을 해야지 업데이트 됨) == 서버에서 Java 코드로 문자열을 만든 후 서버에서 HTML로 변환하여 완성된 페이지를 클라이언트 (브라우저)로 전달 DB 또는 API에서 가져온 데이터를 정의된 템플릿에 넣어서 html 완성 클라이언트에게 전달해주는 역할 종류로는 JSP, Thymeleaf, Velocity, Freemarker 등이..

스프링 일지 2023.11.29

REST / ResponseEntity 정리

REST 네트워크 상에서 client와 server 사이의 통신 방식 중 하나이다. 자원을 이름 (자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. -> 자원의 표현에 의한 상태 전달 REST API는 웹의 장점을 최대한 활용한 API (아키텍처 중 하나) : REST 기반으로 서비스 API를 구현한 것 * Architecture는 영단어로는 ‘건축학’ 이라는 뜻 - 시스템 구조와 구성 요소 - 요소들간의 동작 원리 하나의 서비스가 어떻게 구성되며 어떻게 동작한다를 나타냄 URL의 설계방식 (스프링 부트, 리액트 같은 기술이 아님) 🤚🏻 REST API 장/단점 장점 - URL을 보고 어떤 기능을 수행하는지 알 수 있음 - HTTP 표준을 사용하는 모든 플랫폼에서 사용..

카테고리 없음 2023.11.28

세상에 이런 에러는 없었다 [ Failed to create the part's controls ] - jdk 충돌 / 환경 변수 설정

다른 프로젝트를 위해 인텔리제이 세팅한다고 허우적 거리다가 무사해결되어서 행복하게 잔게 문제였을까 갑자기 이클립스, 스프링 controller,dao,service 코드가 아무것도 안보이는 문제가 발생했다 (와중 jsp는 보여서 다행인데 너무 슬퍼) 내가 어제 무엇을 했나 곰곰히 생가해보면 인텔리제이 세팅에 java 21 jdk 버전을 깐 것 그거 하나뿐이였다. 해결 방안을 찾아보는데 다 룸북 문제라고 하고, 프로젝트 클린하면 된다고 하는데 난 다 해당되지 않았다 이걸로 아침부터 개발 못하고 허우적 거리다가 (주변인들 다 처음보는 에러라.. 이클립스 삭제했다 다시 깔아보라는 소리만 ㅠㅠ) jdk 충돌 문제로 의심이 계속 되어 개발 초창기에 해봤던 cmd에 자바 버전을 확인해 보기로 했다. 혹시 몰라서 삭..

[Spring] 테스트 - JUnit

📍테스트 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지 확인하는 작업 → 애플리케이션을 구성하는 클래스 안에 테스트 코드를 포함시키기 보다 별도로 테스용 클래스를 만들어서 작성하는 편을 더 추천 Given-When-Then 테스트 패턴: 시나리오를 기반으로 테스트하는 패턴 Given 테스트의 상황을 설정 == 테스트 실행 준비 When 특정 동작을 실행 == 테스트 진행 Then 예상 결과를 확인하는 단계 == 테스트 결과 검증 📍JUnit 프레임워크의 테스트 조건 public 으로 선언 @Test 애노테이션 하나의 클래스 안에 여러 개의 테스트 메소드가 들어가는 것을 허용함! (추가 조건) void 파라미터 받지 않기 assertEquals() 두 값이 동일한지 확인 / 두 값이 다르면 테스트는..

스프링 일지 2023.11.16

[Spring] 개념 IoC/DI

📌 IoC (Inversion 도치 of Control 제어, 지배 ) : 제어의 역전 → 우리는 클래스만 생성하고 언제 호출할지 소멸할지 신경 안쓴다! (프레임워크(스프링 컨테이너)가 알아서 해줌 == 프로그램의 제어권 역전) 직접 생성이 아닌 외부에서 객체를 가지고와서 사용하는 것 직접 생성 : 클래스 A에서 new 키워드로 클래스 B 생성 ⁠⁠public class A{ b = new B(); } 간접 생성 : 코드에서 객체를 생성하지 않고 어디선가(스프링 컨테이너) 받아온 객체를 b에 할당 ⁠public class A{ private B b; } 📌 DI (Dependency 의존 Injection 주입) : 의존성 주입 → IoC 개념을 구현하기 위한 디자인 패턴 중 하나 직접 객체 생성 - 결..

스프링 일지 2023.11.15

[오라클] 테이블 만들려고 계정 클릭 후 본 에러 (ORA - 28002 / ORA - 28001) -> 해결

오라클 계정에도 기한이 있다는 것을 알게된건...너무 오랜만에 오라클을 하지않았다는 반증이겠지.. 반성 경고 문구는 총 2개를 봤다! 최근 만든 계정이 있고 오래된 계정이 있어서 그런듯 ORA-28002: the password will expire within ## days -> 너의 계정 ##일 남았다~~ 경고 알림! ORA-28001: the password has expired -> 너의 계정 만료되었어 == 막혔어 요청한 작업을 수행하는 중 오류 발생: ORA-28001: the password has expired 28001. 00000 - "the password has expired" *Cause: The user's account has expired and the password mus..

어떤 주제로 프로젝트를 시작할까 - 하 -

테라리움으로 저장하고 나서 구현하고 싶다고 생각이 들었던 것은 처음 테라리움을 만들어보는 사람에게 대략적으로 컨셉/구조를 배치하여 어떤 스타일을 선호하는지 알 수 있게 하면 좋겠다라고 생각했다. 그냥 이뻐보이는거 무작정 사서 배치했는데 어울리지 않으면 수습이 안되니 가상으로도 (옛날 싸이월드 미니룸같이) 이미지 모델링을 하고 구매로 연결될 수 있고 식물 관리법 같은 걸 물어볼 수 있는 커뮤니티도 있으면 좋겠다!라고 생각을 했다 캔버스에 구현해야 될꺼같아 자바스크립트로 간단한 게임도 x, y 좌표 만들어 보고 했는데 머릿속에 있는 내가 생각한 웹 페이지가 만들어질지 궁금하다