MariaDB 엔진 - InnoDB vs MyISAM
·
Spring
SHOW ENGINES;Engine Support Comment Transactions XA SavepointsEngineSupportCommentTransactionsXASavepointsInnoDBDEFAULTSupports transactionsYESYESYESMyISAMYESNon-transactional engineNONONOMEMORYYESStored in memoryNONONOCSVYESCSV storage engineNONONOEngine: 스토리지 엔진의 이름.Support: 엔진이 활성화되어 있는지 여부 (YES, NO, DEFAULT).Comment: 간단한 설명.Transactions: 트랜잭션 지원 여부.XA: 분산 트랜잭션 지원 여부.Savepoints: 트랜잭션 내의 저장 지점..
Swagger (REST API 문서화)
·
Spring
1. Swagger란?Swagger는 REST API를 설계, 빌드, 문서화, 소비하는 데 유용한 도구입니다. Spring Boot에서는 Springdoc OpenAPI 라이브러리를 사용하여 Swagger UI를 쉽게 설정할 수 있습니다.2. Gradle 프로젝트에서 Swagger 적용 단계1단계: 의존성 추가build.gradle 파일에 다음 의존성을 추가합니다:dependencies { implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' }2단계: Swagger 관련 설정 추가Springdoc OpenAPI는 기본적으로 /swagger-ui/index.html 경로에서 API 문서를 제공합니다. 일반적인 설정은 추가로..
CORS (Cross-Origin Resource Sharing)
·
Spring
1. CORS란?CORS(Cross-Origin Resource Sharing)는 웹 브라우저 보안 정책으로, 특정 도메인에서 다른 도메인 리소스에 대한 요청을 제어합니다.브라우저는 기본적으로 Same-Origin Policy(동일 출처 정책)를 따르며, 다른 도메인의 리소스 요청을 차단합니다.동일 출처 정책: 요청의 프로토콜, 도메인, 포트가 동일해야 함.CORS는 이러한 제한을 완화할 수 있도록 서버에서 적절한 헤더를 설정하여 특정 출처(origin)에 대해 리소스 접근 권한을 부여합니다.2. CORS의 동작 흐름2.1 기본 요청 흐름클라이언트:브라우저가 XMLHttpRequest, Fetch API, 등의 방식으로 리소스를 요청.브라우저:요청이 다른 도메인(origin)으로 향할 경우 CORS 정..
AJAX(Asynchronous JavaScript and XML)
·
Spring
1. AJAX란?1.1 정의AJAX(Asynchronous JavaScript and XML)는 웹 페이지를 새로 고침하지 않고도 서버와 비동기적으로 데이터를 주고받을 수 있게 해주는 기술입니다.XML뿐만 아니라 JSON, HTML, 일반 텍스트 등 다양한 데이터 형식을 사용할 수 있습니다.1.2 AJAX의 주요 목적사용자 경험 개선:페이지 전체를 다시 로드하지 않고 필요한 데이터만 갱신.효율적인 데이터 통신:필요한 데이터만 서버에서 가져와 네트워크 사용량 감소.2. AJAX의 주요 구성 요소2.1 핵심 기술HTML/CSS: 사용자 인터페이스(UI) 설계.JavaScript: 클라이언트와 서버 간 데이터 요청 및 응답 처리.XMLHttpRequest 또는 Fetch API: 서버와 비동기 데이터 통신.서..
스프링 OAuth2 클라이언트 세션 15 : OAuth2AuthorizedClientService
·
Spring Security/OAuth2
OAuth2AuthorizedClientServiceOAuth2 소셜 로그인을 진행하는 사용자에 대해 우리의 서버는 인증 서버에서 발급 받은 Access 토큰과 같은 정보를 담을 저장소가 필요하다. 기본적으로 인메모리 방식으로 관리되는데 소셜 로그인 사용자 수가 증가하고 서버의 스케일 아웃 문제로 인해 인메모리 방식은 실무에서 사용하지 않는다. 따라서 DB에 해당 정보를 저장하기 위해서는 OAuth2AuthorizedClientService를 직접 작성해야 한다.JDBC 의존성 추가JDBC 방식을 지원하기 때문에 JDBC 모듈이 필요하고 JPA를 사용하고 싶은 경우 전부 커스텀해서 만들어야 한다. build.gradledependencies { implementation 'org.springfram..
스프링 OAuth2 클라이언트 세션 14 : OAuth2LoginAuthenticationFilter
·
Spring Security/OAuth2
로그인 성공 redirect_uri 필터 : /login/oauth2/code/서비스명 OAuth2LoginAuthenticationFilter는 인증 서버에서 로그인을 성공한 뒤 우리 서버측으로 발급되는 CODE를 획득하고, CODE를 통해 Access 토큰과 User 정보를 획득하는 OAuth2LoginAuthenticationProvider를 호출하는 일련의 과정을 시작하는 필터이다. OAuth2LoginAuthenticationFilterOAuth2LoginAuthenticationFilter는 /login/oauth2/code/서비스명 경로에 대해서 CODE를 받는 필터이다.이후 검증을 진행하고 완료되면 OAuth2LoginAuthenticationProvide를 호출한다.public class..
스프링 OAuth2 클라이언트 세션 13 : OAuth2AuthorizationRequestRedirectFilter
·
Spring Security/OAuth2
로그인 페이지에서 : /oauth2/authorization/서비스로그인 페이지에서 GET : /oauth2/authorization/서비스 경로로 요청을 할 경우 OAuth2 의존성에 의해 OAuth2AuthorizationRequestRedirectFilter에서 해당 요청을 받고 내부 프로세서를 진행한다. OAuth2AuthorizationRequestRedirectFilter는 요청을 받은 후 해당하는 서비스의 로그인 URI로 요청을 리디렉션 시킨다. (이때 서비스의 정보는 지난 번에 등록한 ClientRegistrationRepository에서 가져온다.)OAuth2AuthorizationRequestRedirectFilterOAuth2AuthorizationRequestRedirectFilte..
스프링 OAuth2 클라이언트 세션 12 : ClientRegistration
·
Spring Security/OAuth2
자료ClientRegistrationhttps://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/oauth2/client/registration/ClientRegistration.htmlClientRegistrationRepositoryhttps://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/oauth2/client/registration/ClientRegistrationRepository.htmlOAuth2 서비스 변수 등록 방법기존에 application.properties 변수 설정 파일에서 설정했..
스프링 OAuth2 클라이언트 세션 11 : 커스텀 로그인 페이지
·
Spring Security/OAuth2
기본 OAuth2 로그인 페이지GET : /login커스텀 로그인 페이지 설정login.mustachelogin pagenaver logingoogle login controller > LoginController@Controllerpublic class LoginController { @GetMapping("/login") public String loginPage() { return "login"; }}SecurityConfig OAuth2 커스텀 로그인 페이지 등록config > SecurityConfighttp .oauth2Login((oauth2) -> oauth2 .loginPage("/login") .userInfoEndpoint..
스프링 OAuth2 클라이언트 세션 : 로그인 및 DB 저장 테스트
·
Spring Security/OAuth2
테스트# JPA 및 Hibernate 설정spring.jpa.hibernate.ddl-auto=createspring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImplddl-auto 설정을 create로 바꾼 후 프로젝트 실행UserEntity 테이블이 만들어짐.로그인 페이지로 이동.네이버로 로그인 구글 로그인해당 두 서비스로 로그인이 잘 됐고, UserEntity에 데이터가 잘 들어왔다.