분류 전체보기
-
JWT란? JWT의 구조와 인증 과정카테고리 없음 2022. 8. 28. 18:54
1. JWT란? 클라이언트가 서버의 특정 리소스를 사용하기 위해서는 사용자 인증을 해야합니다. 사용자 인증방식에는 대표적으로 쿠키, 세션, 토큰방식이 있고 오늘 설명드릴 JWT(JSON Web Token)는 토큰 인증 방식에서 제일 많이 알려진 인증 방식 중 하나입니다. JWT는 이름 그대로 JSON으로 형태로 된 토큰이며 {header}.{payload}.{signature} 의 구조로 구성되어있습니다. 지금부터 JWT 구조를 하나하나 살펴보겠습니다. [JWT의 예] Authorization: Bearer eyJraWQiOjEsImFsZyI6IkhTMjU2IiwidHlwIjoiSldUIn0.eyJzdWIiOiJ1c2VybmFtZSIsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTI2MjM..
-
[MySQL] 인덱스(Index)란? - 인덱스 생성 방법과 주의 사항데이터베이스 2022. 8. 11. 18:03
1. 인덱스란 무엇인가 인덱스(Index)란 데이터베이스에 저장된 데이터를 빠르고 효율적으로 찾고자 만들어진 데이터 구조입니다. 인덱스를 직관적으로 이해하기 가장 쉬운 방법은 책을 예로 드는 것입니다. 예를 들어 천만건의 데이터로 구성된 책이 하나 있고 그 안에서 특정 단어를 찾아야한다면 어떻게 해야할까요 책의 첫 장부터 훑어서 찾아보는 방법도 있겠지만 책의 두께가 두꺼워질 수록 검색할 분량이 기하급수적으로 늘어나면서 검색 속도가 급격히 느려질 것입니다. 그래서 아마 대부분의 사람들은 책 맨 뒷장에 를 볼 것입니다. 가나다 순서로 정렬된 는 그 옆에 단어가 위치한 페이지 번호가 적혀있어서 그 페이지를 펼치면 원하는 데이터를 바로 찾을 수 있을 것입니다. '폭포수' 라는 단어는 101페이지에 있고 '프로그..
-
[SQL] INNER JOIN과 OUTER JOIN에 대해서 알아보자!데이터베이스 2022. 8. 5. 11:26
조인이란? 조인(JOIN)이란 두 개 이상의 테이블으 서로 묶어서 하나의 결과 집합(테이블)을 만들어 내는 것을 말합니다. 1. 내부조인(INNER JOIN) 1-1. 내부조인(Inner Join) INNER JOIN은 조인 중에서 가장 많이 사용되는 조인입니다. 보통 JOIN이라하면 INNER JOIN을 지칭하는 것입니다. INNER JOIN은 조건을 사용하여 두 테이블의 레코드를 결합합니다. 예제 테이블) 각 아이가 하나의 장난감만을 가지고 있다. 일대일 관계이며 toy_id가 참조키 boys toys boy_id boy toy_id toy_id toy 1 Davey 3 1 hula hoop 2 Bobby 5 2 balsa gilder 3 Beaver 2 3 toy soldiers 4 Richie 1..
-
[redis] Redis 서버 Master/Slave 설정하기 (windows10)데이터베이스 2022. 8. 4. 11:55
redis는 마스터/슬레이브 형태의 복제 모델을 제공합니다. 이를 통해서 마스터의 변경이 슬레이브로 전파됩니다. 한 대의 슬레이브는 오직 하나의 마스터만 가질 수 있습니다. redis의 마스터/슬레이브 설정은 정말 간단합니다! 1. Master / Slave 설정 우선 redis 설치 폴더에서 master 폴더와 slave1, slave2 폴더를 각 각 생성해줍니다. 이 폴더들에는 rdb파일과 aof파일을 저장할 것입니다. C:\Task\tools\redis-3.0.504 Aug 3 20:15 master/ Aug 3 20:15 slave1/ Aug 3 20:15 slave2/ Jul 16 22:34 Logs/ Aug 3 19:59 redis.windows.conf Aug 3 17:41 redis.win..
-
[redis] RDB 저장 실패시에도 write 명령 허용하기데이터베이스 2022. 8. 3. 18:00
Redis 기본설정상 RDB 저장이 비정상적으로 종료가 되면 모든 Write 명령은 동작하지 않습니다. 127.0.0.1:6379> set kim "1234" MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error. RDB 저장 실패시에도 Write를 허용하는 2가지 방법이 있습니다. 1. 명령어 127.0.0.1:6379> config set stop-writes-on-bgsave-error no OK ..
-
[Spring Security] UsernamePasswordAuthenticationFilter의 내부 동작 과정을 알아보자스프링 2022. 8. 3. 16:19
UsernamePasswordAuthenticationFilter 란? UsernamePasswordAuthenticationFilter는 Form 데이터 기반의 로그인 처리 필터입니다. 설정한 로그인 url로 오는 요청을 감시하며, 로그인 url이 맞다면 그 요청을 필터가 낚아채서 Form 데이터 형식으로 전달받은 username과 password 정보가 실제 유저정보와 일치하는지 확인합니다. 정보가 맞다면 Authentication 객체를 담을 SecurityContext를 생성하고 SecurityContextHolder에 저장합니다. UsernamePasswordAuthenticationFilter 동작과정 1. UsernamePasswordAuthenticationFilter 로그인 URL이 날라..
-
[Spring Security] Security Oauth2 설정에서 custom OAuth2UserService가 실행하지 않는 이슈스프링 2022. 7. 23. 16:20
@Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http .oauth2Login() .authorizationEndpoint() .baseUri("/oauth2/authorization") .authorizationRequestRepository(cookieAuthorizationRequestRepository()) .and() .redirectionEndpoint() .baseUri("/*/oauth2/code/*") .and() .userInfoEndpoint() .userService(customOAuth2UserService) .and() .failureHandler(oA..
-
[JPA] JPA의 변경감지에 대해서데이터베이스 2022. 7. 11. 11:16
변경감지란? 트랜잭션이 커밋되는 시점에 엔티티의 변경사항이 있으면 UPDATE 쿼리를 자동으로 생성해서 데이터베이스에 반영하는 JPA의 기능 EntityManager em = emf.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); // 영속 엔티티 조회 Member memberA = em.find(Member.class, "memberA"); // 영속 엔티티 데이터 수정 memberA.setUsername("hi"); memberA.setAge(10); //em.update(memberA) 이런 코드가 있어야 하지 않을까? transaction.commit(); JPA의 엔티티매..