웹 개발
-
WebClient 와 ChatClient 의 관계웹 개발 2024. 12. 19. 12:20
0. 문제 발생타른 서버와의 API 통신을 위해 WebClient 를 사용하는 과정에서 API 통신이 안되는 반복되는 현상으로 정상적인 서비스가 되지 않았다..내부 API 통신 실패!!로만 확인이 되는 상황에서이유를 알고 싶어 여러 로그를 찍어보다가API 통신이 요청을 보내는 Header 에토큰 값으로 sk-proj…. 와 같은 토큰도 아닌 요상한게 들어가있었다..이게 골치였는데..토큰 값으로 해당 값이 세팅되어있으니 인증시에 계속.. 에러가 발생..해당 값의 출처는openai 를 사용하기 위한 api-key 였고, key 가 세팅되어 넘어갔었다.서버간 api 통신을 위해 webClient 사용을 하는데 bear auth 에 엉뚱한 api-key 가 세팅이 되니 통신 장애가 계속 발생되는 상황…… 관계..
-
JWT 토큰 암호화 방식 및 키 저장 방식웹 개발 2024. 6. 26. 23:05
사용자 인증시에 jwt 토큰을 많이 사용하고 있지만 어떤 구성과 어떤 역할인지는 많이 확인하였지만 직접 암호화는 방식과 암호화를 위한 키 저장 방식에 대해 스스로 모르고 있다 생각하여 정리해본다. > JWT 토큰 생성 방식1. 대칭 키 암호화 방식 (HMAC)대칭 키 암호화 방식은 동일한 비밀 키를 사용하여 JWT 토큰을 생성하고 검증합니다. 주로 HS256, HS384, HS512 알고리즘이 사용됩니다. 이 방식은 설정과 사용이 간단하지만, 비밀 키가 유출될 경우 보안에 취약할 수 있습니다. { ... String secretKey = "your-256-bit-secret"; // JWT 생성 String jwt = Jwts.builde..
-
Pageable 을 파헤치자.웹 개발 2024. 4. 29. 19:07
1. 스프링 페이징의 기본 개념페이징 처리의 원리, 페이징 처리의 과정public class PagingVO { // 현재페이지, 시작페이지, 끝페이지, private int nowPage, startPage, endPage, // 게시글 총 갯수, 페이지당 글 갯수, 마지막페이지, total, cntPerPage, lastPage, // SQL쿼리에 쓸 start, end start, end; private int cntPage = 5; public PagingVO() { } public PagingVO(int total, int nowPage, int cntPerPage) { setNowPage(now..
-
자바 HashTable 과 HashMap웹 개발 2024. 3. 28. 21:58
HashTable 이란 - 해시 함수를 사용해서 변환한 값을 index 로 삼아 key 와 value 를 저장하는 자료구조 - 어떤 특정 값을 받아서 해시 함수에 입력하고, 함수의 출력값을 인덱스로 삼아 데이터를 저장한다. - 순차적으로 데이터를 저장하지 않는다. - 해시 테이블은 key-value 가 1:1 매핑되어 있어 검색, 삽입, 삭제 과정에서 모두 평균적으로 O(1) 의 시간복잡도를 갖는다. (공간 복잡도는 O(n)) - 이진탐색 트리나 배열에 비해서 속도가 획기적으로 빠르다. 해시 동작 원리 - 원래 데이터인 keys 를 Hashing 이라는 과정(hash fucntion) 을 거친다. - Hashign 과정을 거친 후 Hash value(hashing 후 데이터의 값) 로 매핑한다. - Ha..
-
User-Agent 정보 가져오기웹 개발 2024. 3. 20. 14:54
개발 중에 브라우저 정보를 필요로 하는 요구사항에 따라 습관적으로 구글 검색해서 브라우저 정보를 뽑아오는 코드를 아무생각 없이 작성하였다. HttpServletRequest request = ((ServletRequestAttributes) Optional.ofNullable(RequestContextHolder.getRequestAttributes()) .orElseThrow(() -> new RuntimeException("request Attribute is null")) ) .getRequest(); String userAgent = request.getHeader(HEADER_USER_AGENT); String browserName = "Unknown"; if (userAgent != null)..
-
정적 코드 분석 도구 Sonarqube 도입 제안웹 개발 2024. 2. 24. 09:37
1. SonarQube 소개 SonarQube는 오픈 소스 플랫폼으로, 소프트웨어 개발 프로세스의 여러 단계에서 코드의 품질을 관리하고 개선하는 데 사용됩니다. 이는 정적 코드 분석을 통해 코드 품질을 평가하고 지속적인 통합 및 개선을 지원합니다. 20개 이상의 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 목적으로 정적 코드 분석으로 자동 리뷰를 수행하기 위한 지속적인 코드 품질 검사용 오픈 소스 플랫폼이다. 소나소스(SonarSource)가 개발하였다. 소나큐브는 중복 코드, 코딩 표준, 유닛 테스트, 코드 커버리지, 코드 복잡도, 주석, 버그 및 보안 취약점의 보고서를 제공한다. (https://ko.wikipedia.org/wiki/소나큐브) https://trends.google...
-
@RequestBody, @ResponseBody ??웹 개발 2024. 1. 27. 02:53
1. RuqeustBody HttpMessageConverter 가 Http Request Body 내에 있는 데이터를 Java 객체로 변환해주는 역할 @Valid를 붙이면 검증을 할 수 있고, 실패 시 MEthodArgumentNotValidException 을 던진다. 주로 POST 또는 PUT 요청과 함께 사용 주로 JSON 또는 XML 형식의 데이터를 받아서 자바 객체로 변환하는데 사용 2. ResponseBody 컨트롤러 메서드가 반환하는 데이터를 HTTP 응답의 메시지 바디(body)에 넣어주는 역할 주로 컨트롤로 메서드가 JSON 또는 XML 형식의 데이터를 반환할 때 사용 스프링은 반환된 객체를 해당 형식의 데이터로 변환하고 응답 메시지를 바디에 담아 클라이언트로 전송 스프링 4.0 이후에..
-
Flyway웹 개발 2022. 12. 15. 09:21
ChatGPT 가 Hot 하길래 한번 이용해보기위해 Flyway 를 검색 해보았다.. 더보기 Flyway is a database migration tool that helps users automate the process of database schema changes. It allows users to define and manage database changes in a version control system, and then apply them to a database. This helps ensure that the database schema is up-to-date and consistent across different environments, such as development, st..