분류 전체보기 84

[SpringBoot] JWT

JWT (JSON Web Token)JSON 객체를 이용하여 사용자의 인증 정보를 안전하게 전달하는 토큰 기반 인증 방식서버 > 클라이언트에게 발급하는 디지털 서명이 된 토큰사용자의 인증 상태를 유지하며 서버에 전달Stateless 방식으로 서버에서 세션을 유지할 필요 X (무상태성) JWT의 특징인증(Authentication)사용자가 로그인하면 서버는 사용자 정보를 기반으로 JWT를 발급이후 사용자가 토큰을 서버에 전달하며 인증을 진행인가(Authorization)JWT에는 사용자 권한 정보가 담길 수 있음API 또는 리소스에 대한 접근 권한을 부여Stateless서버가 세션을 저장할 필요 X, 클라이언트가 관리하기 때문에 확장성이 뛰어남 발급받은 JWT를 이용한 인증 방법HTTP 요청 헤더 중에 A..

SpringBoot 2024.10.23

[SpringBoot] spring security

스프링 시큐리티(spring security, 보안)스프링 기반 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크다양한 어노테이션으로 CSRF 공격, 세션 고정 공격을 방어요청 헤더 보안 처리도 가능 1. 인증 (Authentication)사용자가 누구인지 확인하는 과정, 신원 입증 과정EX) 시스템이 사용자가 제시한 증거 (예: 아이디, 비밀번호)를 바탕으로 그 사용자가 주장하는 인물임을 확인2. 인가(Authorization)인증된 사용자가 수행할 수 있는 작업의 범위를 결정사이트의 특정 부분에 접근할 수 있는지 권한을 확인하는 작업 스프링 시큐리티의 구조필터(Filter)를 기반으로 동작1) SecurityFilterChain스프링 시큐리티의 요청에 대한 보안 처리 과정에서 ..

SpringBoot 2024.10.21

[SpringBoot] API

API (Application Programming Interface)응용프로그램(Application)이 서로 통신할 수 있도록 해주는 인터페이스소프트웨어 간의 중재자 역할서로 다른 소프트웨어 시스템이 데이터를 주고받거나 기능을 호출하는 방식 API 목적재사용성 - 이미 작성된 기능을 여러 프로그램에서 재사용 가능유지보수성 - 코드 변경이 API에 의해 중앙에서 관리, 다른 기능의 영향을 최소화API의 구성엔트포인트(Endpoint) : API가 연결되는 특정 URL주소메서드(Method) : API가 수행하는 작업, HTTP 메서드를 주로 사용GET, POST, PUT, DELETERequest : 클라이언트가 API로 보내는 요청Response : 서버가 API 요청에 대한 응답으로 보내는 데이터H..

SpringBoot 2024.10.18

[SpringBoot] Status Codes

HTTP 상태 코드 (Status Codes)클라이언트의 요청에 대한 서버의 응답 상태를 나타내는 3자리 숫자 1xx(정보)2xx(성공)3xx(리다이렉션)4xx(클라이언트 오류)5xx(서버 오류) 1. 1xx (정보)서버가 요청의 일부를 받고 계속 처리할 준비가 되었음을 알림 2. 2xx (성공)200 OK: 요청이 성공적으로 처리됨201 Created: 요청에 의해 새로운 리소스가 생김 - POST 메서드 사용 시 나타남 3. 3xx (리다이렉션)요청된 리소스가 다른 위치로 이동했거나 클라이언트가 리소스를 다시 요청해야함을 나타냄 4, 4xx (클라이언트 오류)400 Bad Request: 클라이언트의 요청이 잘못됨EX) 올바르지 않은 형식의 데이터를 전송 | 필수 매개변수 누락 등401 Unautho..

SpringBoot 2024.10.18

[SpringBoot] @RequestParam VS @RequestBody

@RequestParam VS @RequestBody 공통점Spring에서 클라이언트로부터 데이터를 받는 방식차이점 1. @RequestParam클라이언트가 URL 쿼리 스트링 또는 풀 데이터로 전달한 데이터를 컨트롤러 메서드의 파라미터로 받을 때 사용주로 GET 요청에서 많이 사용데이터를 URL 뒤에 붙여서 전달하는 경우URL에서 데이터를 전달할 때: 검색 조건, 필터링 등의 간단한 데이터를 요청할 때GET 요청보안에 덜 민감한 데이터RequestParam 기본값 해제 & 기본값 설정@RequestParam 값이 없을 경우 오류1) 필수값 설정 해제 : @RequestParam(required = false)2) 기본값 설정 : @RequestParam(required = false, defaultVa..

SpringBoot 2024.10.17

[SpringBoot] JpaRepository

JpaRepositorySpring Data JPA 에서 제공하는 기본 인터페이스CRUD와 페이징, 정렬을 포함한 다양한 데이터 엑세스 메서드를 제공1. CRUD 메서드save(S entity): S새로운 엔터티를 저장하거나, 기존 엔터티를 업데이트findById(ID id)주어진 ID에 해당하는 엔터티를 조회existsById(ID id): boolean주어진 ID가 존재하는지 확인findAll()데이터베이스에 있는 모든 엔터티를 조회deleteById(ID id): void주어진 ID의 엔터티를 삭제 2. JpaRepository의 구조타입1엔터티(entity) 클래스 타입DB 테이블과 매핑되는 클래스타입2엔터티의 ID 타입해당 엔터티의 기본 키 필드에 사용된 데이터 타입 3. 쿼리 메서드 사용사용자..

SpringBoot 2024.10.17

[SpringBoot] ORM, JPA

ORM (Object Relational Mapping)객체와 관계형 데이터베이스 간의 데이터를 매핑해주는 기술데이터베이스의 테이블과 애플리케이션의 객체 간의 구조적 불일치를 해결하는 솔루션ORM의 특징객체와 테이블이 매핑: 1:1로 연결하여 데이터를 매핑객체지향적인 데이터 조작: SQL 대신 자바 객체 메서드로 CRUD 작업 수행반복적인 SQL 작성 없이 데이터 조작 가능, DBMS에 독립적학습 곡선 높음, 복잡한 쿼리 작성 어려움ORM의 동작 원리각 테이블은 클래스에, 테이블의 각 행(row)은 객체에 매핑Entity - 데이터베이스 테이블과 매핑되는 클래스Field: 클래스의 필드는 테이블의 열(column)에 해당 JPA (Java Persistence Api)ORM의 종류 중 하나Java 애플리..

SpringBoot 2024.10.16

[SpringBoot] 테스트 코드

테스트 코드애플리케이션이 의도한 대로 작동하는지 확인하기 위해 작성된 코드개발자가 직접 코드의 결과를 수작업으로 확인하는 대신 자동화된 테스트로 특정 기능이 올바르게 동작하는지를 반복적으로 확인테스트 코드의 종류단위테스트통합테스트기능테스트회귀테스트 given-when-then 패턴테스트 코드를 세 단계로 구분해 작성하는 방식1) given: 테스트의 실행을 준비하는 단계2) when: 테스트를 진행하는 단계3) then: 테스트를 검증하는 단계스프링부트 3 테스트spring-boot-starter-test: 테스트를 위한 도구 모음스프링부트 스타터 테스트 목록1) Junit 5: 자바 프로그래밍 언어용 단위 테스트 프레임워크테스트 방식을 구분할 수 있는 어노테이션을 제공@Test를 사용: 메서드 호출 시..

SpringBoot 2024.10.16

[SpringBoot] DispatchServlet

DS (DispatchServlet)스프링 부트의 핵심 서블릿클라이언트의 요청을 받아 알맞은 핸들러(Controller)를 찾아 실행하고 처리된 결과를 다시 클라이언트에게 반환웹 애플리케이션의 요청 흐름을 관리하는 중심 역할 DispatchServlet의 동작 과정1. 클라이언트 요청 처리사용자가 웹에서 요청(Get, Post, Put, Delete)을 보냄서블릿 컨테이너가 DS로 요청을 전달2. Handler (Controller) 조회HandlerMapping을 통해 요청 URL에 맞는 핸들러를 찾음3. Handler Adapter 조회매핑한 핸들러 실행을 위한 어댑터를 찾고, Controller가 실행될 수 있는 형태로 변환4. Handler(Controller) 실행Handler Adapter가 ..

SpringBoot 2024.10.14