전체 글 69

JWT 활용하기 (2) - 회원 가입, 로그인 기능 만들기

회원 가입 기능을 구현하기에 앞서 JWT 관련해서 간단한 설정들을 알아보자  JWT 활용하기 (1)인증(Authentication)과 인가(Authorization) 란? 인증(Authentication)과 인가(Authorization) 란?인증 ▼해당 유저가 실제 유저인지 인증하는 개념지문인식, 로그인 등 실제 유저가 맞는지 확인하는 장치인가 ▼seungg8361.tistory.com 1. Entity 클래스 만들기@Entity@Getter@Setter@NoArgsConstructor // 기본 생성자 생성@Table(name="users") // 테이블 이름public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY..

WSL 실행 환경에서 발생한 문제

Eureka 서버와 Gateway, Product 서버를 각각 실행시킨 뒤 Eureka에 접속해서 확인해 보니 호스트 이름이 이상하게 떠버렸다.... WSL을 실행시키지 않고 확인했을 때는 분명 localhost로 되어있었는데, WSL를 실행시키니 "사용자이름. mshome.net"이라는 이상하고 처음 보는 주소를 발견했다. 이러한 문제는 Gateway 서버에서 Product 서버에 요청을 보낼 때 화려하게 터져버렸다. 500 에러가 발생해 버렸고, 로그를 확인해 보니 도메인 이름의 IP 주소를 DNS 서버를 통해 찾으려고 시도했지만 실패했다는 에러가 발생했다. DNS 서버에 IPv4 주소를 1번 요청했지만 실패했다는 뜻이다... 즉, 이름은 존재하지만 IP 주소가 등록되어 있지 않거나, DNS 서버 설..

Spring Cloud 란? (4) - API Gateway

클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가 기능을 제공하는 중간 서버 역할.클라이언트 요청을 적절한 서비스로 전달하는 라우팅 기능요청의 인증 및 권한을 검증여러 서비스 인스턴스 간의 부하를 분산하는 로드 밸런싱 기능요청 및 응답을 로깅하고 모니터링요청과 응답을 변환하거나 필터링Spring Cloud Gateway 주요 기능 ▼요청의 URL 패턴에 따라 동적으로 라우팅요청 전·후에 다양한 작업을 수행할 수 있는 필터 체인 제공모니터링 및 요청의 인증 및 권한을 검증하는 보안 기능  build.gradle ▼dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementatio..

평균 구하기 문제

내가 푼 코드 ▼class Solution { public double solution(int[] arr) { double sum = 0; double average = 0; for (int i =0; i 다른 사람의 풀이 ▼https://school.programmers.co.kr/learn/courses/30/lessons/12944/solution_groups?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   새롭게 알게 된 내용 ▼stream API : 코드의 간결성, 대용량 데이터 처리 시 병렬 스트림을 사용하면 여러 CPU ..

CI/CD와 Docker 란?

CI (Continuous Integration) : 지속적 통합 ▼모든 개발자들이 작성한 코드를 정기적으로 통합하는 것을 말한다.코드 통합 시 발생할 수 있는 충돌을 신속하게 발견하고, 테스트 자동화를 통해 버그를 초기에 발견해서 해결한다.코드를 commit 하면 CI서버가 이를 감지한다 → CI서버는 빌드 및 자동화된 테스트를 실행한다 → 테스트를 통과하지 못하면 알림이 전달된다.CD (Continous Deployment) : 지속적 제공 ▼CI 이후의 단계로, 코드 변경 사항이 테스트를 통과한 후 자동으로 배포되는 것이다.사용자에게 새로운 기능과 버그 수정을 신속하게 제공한다.배포를 자동화하여 수동 작업에서 발생할 수 있는 오류를 줄이고, 개발과 배포의 일관성을 유지한다.테스트를 통과한 코드 변경..

Spring Security 란?

스프링 기반의 애플리케이션의 보안을 담당하는 프레임워크이다.필터 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작한다. Spring에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Controller로 분배된다. 이때 DispatcherServlet 이전 단계가 필터이다.Spring Security는 FilterChainProxy를 통해서 상세로직을 구현하고 있다.필터(Filter) 란? 필터(Filter) 란?웹 애플리케이션에서 관리되는 영역으로 클라이언트에서 오는 요청과 응답에 대해서 최초, 최종 단계에 위치한다.요청과 응답에 정보를 변경하거나 부가적인 기능을 추가할 수 있다. ex) Logging,seungg8361.tistory.com  b..

필터(Filter) 란?

웹 애플리케이션에서 관리되는 영역으로 클라이언트에서 오는 요청과 응답에 대해서 최초, 최종 단계에 위치한다.요청과 응답에 정보를 변경하거나 부가적인 기능을 추가할 수 있다. ex) Logging, 보안, 인증·인가 관련 Filter 0 => Logging용 필터 Filter 1 => 인증·인가용 필터라고 가정해 보자Logging용 필터 ▼public class LoggingFilter implements Filter { @Override // Filter를 implements 한 뒤 사용 가능한 doFilter 메서드, FilterChain은 filter를 이동시키기 위해 사용 public void doFilter(ServletRequest request, ServletResponse r..

JWT 활용하기 (1)

인증(Authentication)과 인가(Authorization) 란? 인증(Authentication)과 인가(Authorization) 란?인증 ▼해당 유저가 실제 유저인지 인증하는 개념지문인식, 로그인 등 실제 유저가 맞는지 확인하는 장치인가 ▼해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념관리자 페이seungg8361.tistory.com JWT를 사용하기 전에 의존성과 설정을  추가해 주자 build.gradle ▼compileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'ru..

인증(Authentication)과 인가(Authorization) 란?

인증 ▼해당 유저가 실제 유저인지 인증하는 개념지문인식, 로그인 등 실제 유저가 맞는지 확인하는 장치인가 ▼해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념관리자 페이지, 관리자 권한 클라이언트 - 서버 ▼HTTP 프로토콜로 통신을 한다.리소스를 절약하기 위해서 서버와 클라이언트가 연결되어 있지 않는 비연결성으로 이루어져 있다.서버가 클라이언트의 상태를 저장하지 않는 무상태로 이루어져 있다.  이러한 환경에서 유저가 인증되었다는 정보를 유지시키기 위해서 어떻게 해야 할까?  쿠키와 세션 인증 ▼사용자가 로그인을 하면 DB에서 데이터를 확인하고 결과를 세션 저장소에 해당 유저가 로그인되었다는 정보를 저장한다.세션 저장소에서는 Session ID를 발급하고 전달하면 브라우저에서는 Session..

Bean 이란?

Spring 프레임워크가 관리하는 객체를 의미한다. 이 객체들은 애플리케이션 콘텍스트 내에서 생성되고, 필요할 때마다 주입된다.@ComponentScan에 의해서 Component가 자동으로 Scan 되어 해당 클래스를 Bean으로 등록해 준다.  Bean을 왜 수동으로 등록할까?기술 지원 Bean : 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들은 수동으로 등록하는 게 좋다.비즈니스 로직 Bean 보다 수가 적기 때문에 수동으로 등록하기 좋다.문제가 발생했을 때 해당 문제의 위치를 정확하게 파악하기 쉽다. Bean 수동 등록 예시@Configuration // Spring IoC 컨테이너에 Bean으로 저장되게 함public class PasswordConfig { // passwordC..