프로젝트 (78) 썸네일형 리스트형 [JWT]토큰별 Header와 Cookie를 동시에 사용한 이유 이번 프로젝트에서 Spring Security와 JWT를 사용한 토큰 방식 인가 처리를 구현하였다. JWT의 Access-Token은 HTTP Header에, Refresh-Token은 HttpOnly Cookie로 설정했었다. 저번 프로젝트 회고 당시 '왜 이렇게 썼나요?' 라는 질문이 들어와 구현했던 과정의 이유에 대해 정리하고자 한다. Access Token in Header HTTP 헤더를 통한 AT 전송은 API 호출의 표준 방식이다. 이 방식은 CSRF 공격에 자연스럽게 내성을 가지며, 다양한 클라이언트(웹, 모바일, 데스크톱 애플리케이션 등)에서 일관되게 사용할 수 있다. 구체적으로는 다음과 같은 장점을 가진다. 장점 1. 플랫폼 독립성 액세스 토큰을 Header에 담으면 다양한 클라이언트 .. WebFlux vs SSEemitter 분석 먼저 결론 둘 다 비동기, 그러나 IO 작업에서 효율의 차이 발생 (논블로킹과 블로킹) SSEEmitter: 비동기 서블릿을 사용하지만, 내부적으로는 Java의 전통적인 블로킹 I/O API를 사용할 수 있다. 따라서 I/O 작업이 길어지면 해당 작업을 수행하는 쓰레드는 블로킹될 수 있다. WebFlux: 이벤트 루프와 논블로킹 I/O를 사용합니다. 이로 인해 적은 수의 쓰레드로도 높은 동시성을 처리할 수 있고, 복잡한 로직이나 큰 규모의 애플리케이션에서는 특히 더 효율적이다. 따라서 복잡한 로직이나 높은 동시성이 필요한 경우, WebFlux가 더 효율적으로 동작할 수 있다. SeeEmitter는 비동기지만 Blocking IO이다. WebFlux와 SseEmitter 모두 비동기 처리를 지원하지만, 둘.. [개발]셀레니움을 사용한 스크래핑 구현 ref : https://mollangpiu.tistory.com/362 https://velog.io/@rednada1486/Java-Selenium-활용-동적웹크롤링#️-2-selenium과-chromedriver-다운로드 셀레니움 Selenium은 웹 브라우저를 자동화하는 도구다. 주로 웹 앱 테스팅에 사용되지만, 스크래핑에도 널리 쓰인다. Java, Python 등 여러 언어를 지원하며, 복잡한 웹 페이지에서도 데이터를 추출할 수 있다. 실행 방식 Selenium 코드는 서버 측에서 실행된다. 이 코드는 웹 드라이버 API를 통해 웹 브라우저를 제어한다. 사용자의 로컬 머신에서 크롬을 직접 실행하는 것은 아니다. 크롬 드라이버 필요성 Selenium은 웹 드라이버 인터페이스를 사용해 브라우저를 제.. [ElasticSearch] 1. 도큐먼트와 인덱스 엘라스틱 스택 도서 1회차 사전 지식 엘라스틱 서치 엘라스틱 서치 = 검색엔진 + 데이터베이스 엘라스틱서치는 NoSQL과 유사하다고 생각하면 이해가 편할 것이다. 엘라스틱 서치는 인덱싱 시점에서 분석을 거쳐 단어 단위로 분해된다. 스코어링 : 유사도 점수 기반 스코어링을 통해 유사 검색어를 분류 가능 분산 시스템과 클러스터링 : 여러 엔진을 클러스터링, 하나가 다운되어도 여분의 기능이 동작 가능 DSL 쿼리 채용 : JOIN 쿼리가 사실상 어려움, 반정규화를 기본으로 함 인덱스가 불변하기에, 삭제 등 비용이 비싸다. 하지만 이는 빠른 검색을 위한 것으로, 대용량 데이터에 대해 빠른 검색과 집계를 제공한다는 장점과 trade-off 된 것이다. 키바나(Kibana) 엘라스틱 서치의 시각화 도구. UI를 담.. [ElasticSearch, Kibana] 개발 환경 세팅 서버는 EC2(Ubuntu 20.04) 우분투 위에 올림을 가정한다. Elastic Search 버전 및 설치 https://www.elastic.co/kr/support/matrix 해당 사이트에서 현재 OS와 맞는 버전을 선택하자. 본인은 7.11.x를 사용할 것이다. JDK 설치(7.x 버전 이상은 설치하지 않아도 괜찮다.)버전 확인 sudo apt update sudo apt install openjdk-11-jdk java -version Elasticsearch 7.11.x 설치 HTTPS를 위한 패키지 설치: sqlCopy code sudo apt-get update sudo apt-get install apt-transport-https ca-certificates wget Elastics.. [회고]중고 거래 플랫폼을 마무리하며 1. 프로젝트 기간과 역할 2023.08.21 ~ 10.06 팀장 및 발표, 백엔드 사용자 도메인 2. 내가 배운 것 Spring Security 인가 및 인증 처리의 이해, Filter 개념과 filterChain의 개념. 스프링 시큐리티의 경우 배우는데 꽤 난관이 있었다. 언뜻 개념 자체는 알고 있었지만, 인가와 인증 처리의 개념이 모호했기 때문에 기초부터 천천히 학습했던 것 같다. 이번 프로젝트에서는 CORS와 내가 만든 JwtFilter를 위주로 사용하였다. 기본적인 세션 방식 대신 서버의 효율성과 확장성을 고려하여 토큰 방식을 사용하였다. 로그인, 메인 화면 등 권한이 필요없는 사이트 외 토큰을 입력받을 수 있도록 하였다. JWT 사용자 관리를 JWT를 사용한 토큰 방식으로 인가를 진행하였다. .. 이전 1 ··· 7 8 9 10 다음