[gRPC] SpringBoot3.3.1에 gRPC 적용하기
·
gRPC
SpringBoot3.3.1에 gRPC를 적용시켜 보자📌 서론이번 포스팅보다 더 자세한 글을 적어둔 링크를 새롭게 적어두었습니다! gRPC 서버 구성, gRPC 클라이언트 구성, gRPC 인터셉터로 인증 구현, feign vs gRPC, 서킷 브레이커 적용 등 MSA를 구성하는데 필요한 정보들을 적어둔 링크입니다.예시 프로젝트는 아래의 github에 만들어 두었습니다. (편하게 사용해 주시면 됩니다.) GitHub - wlsdks/grpc-demo: SpringBoot3.x.x 버전 grpc 사용 예제 프로젝트SpringBoot3.x.x 버전 grpc 사용 예제 프로젝트. Contribute to wlsdks/grpc-demo development by creating an account on GitH..
Spring Security6 - Authentication(인증)
·
Spring/Spring Security
1. 인증 관련 주요 클래스와 인터페이스 및 동작원리 Authentication: 인증 요청과 인증된 주체를 나타내는 인터페이스이다. AuthenticationManager: 실제로 인증을 처리하는 인터페이스이다. UserDetailsService: 사용자의 세부 정보를 로드하는 방법을 정의한다. PasswordEncoder: 비밀번호의 암호화 또는 해싱을 처리한다. Spring Security 6의 주요 인증 방식(Basic Authentication, Form-Based Authentication, OAuth2, JWT)은 모두 AuthenticationManager를 사용한다. AuthenticationManager는 UserDetailsService를 호출하여 사용자 정보를 로드하고, Authen..
Spring Security와 CORS: 크로스 도메인 요청 처리 기법 알아보기
·
Spring/Spring Security
웹 애플리케이션을 개발하면서 보안과 리소스 공유는 중요한 고려사항이다. 이번에는 Spring Security와 CORS(Cross-Origin Resource Sharing)에 대해서 자세히 알아보자 1. 크로스 도메인(Cross-Domain) 이해하기 1-1. 크로스 도메인 정의: 크로스 도메인은 한 도메인에서 실행되는 웹 페이지가 다른 도메인의 리소스에 접근할 때 발생하는 상황을 의미한다. 예시: http://domain-a.com에서 로딩된 웹 페이지가 http://domain-b.com의 이미지나 API에 접근하는 것이다. domain-a.com: 여기서 로딩된 웹 페이지가 다른 도메인의 리소스에 접근하려고 한다. domain-b.com: 이 도메인은 이미지나 API와 같은 리소스를 제공한다. A..
Spring Boot 3.1 & Spring Security 6: Security Config 최적화 리팩토링 (12편)
·
Spring/Spring Security
이번에는 필요없는 필터는 없애고 최적화를 진행하기 위해 Security Config를 리팩토링 했다. 1. SecurityConfig 리팩토링 앞의 게시글을 확인해보면 작성한 코드가 있기에 변경된 메서드만 설명하겠다. 일단 나는 ssl(서버 사이드 랜더링)이기 때문에 에러페이지, 메인페이지, 회원가입, 로그인, 정적 리소스는 모두 접근을 허가해줬다. 여기서 특히 바뀐건 addFilterBefore() 이것이다. jwtAuthorizationFilter 다음 바로 customAuthenticationFilter로 가도록 했다. @Bean public SecurityFilterChain filterChain( HttpSecurity http, CustomAuthenticationFilter customAut..
Spring Boot 심화: 커스텀 어노테이션 만들기 (2편)
·
Spring/Spring 기초 지식
커스텀한 어노테이션(Custom Annotation)이란 무엇일까? 그리고 우리가 주로 사용하는 어노테이션을 분석해보자 1. 커스텀 어노테이션을 만드는 방법 Java에서는 사용자 정의 어노테이션을 만들 수 있다. 이를 위해선 @interface 키워드를 사용하면 된다. // @interface를 통해 어노테이션을 정의한다. public @interface MyCustomAnnotation { String value() default ""; int number() default 0; } 위의 예제 코드에서, MyCustomAnnotation은 어노테이션의 이름이다. value와 number는 이 어노테이션의 요소(또는 매개변수)이며, 기본값으로 각각 빈 문자열과 0을 가지고 있다. 어노테이션 요소의 유형은..
Spring Boot 3.1 & Spring Security 6: 로그인 프로세스 및 JWT 토큰 동작 설명 (10편)
·
Spring/Spring Security
지금까지 만든 시큐리티의 동작을 설명하겠다. 1. 로그인 과정 로그인 페이지 접근: 사용자는 웹 브라우저에서 로그인 페이지(/login)에 접근한다. 로그인 페이지에는 사용자 이름과 비밀번호를 입력할 수 있는 폼이 있다. 로그인 요청: 사용자가 자신의 사용자 이름과 비밀번호를 입력하고 "Login" 버튼을 클릭하면, AJAX 요청을 통해 서버에 로그인 요청(/user/login)이 전송된다. 인증 필터 처리: CustomAuthenticationFilter는 로그인 요청을 가로챈다. 이 필터는 UsernamePasswordAuthenticationFilter를 확장하여 구현되었다. 요청에서 사용자 이름과 비밀번호를 추출하여 UsernamePasswordAuthenticationToken 객체를 생성한다...
Spring Boot 3.1 & Spring Security 6: 로그인 & 메인 페이지 컨트롤러 (9편)
·
Spring/Spring Security
로그인 뷰를 보여주고 action을 실행시킬 로그인 컨트롤러와 메인페이지를 보여주게될 메인 컨트롤러를 작성한다. 1. @Controller - 로그인, 메인페이지 컨트롤러 1-1. LoginController 이 코드는 사용자의 로그인 및 로그아웃을 관리하는 컨트롤러이다. Spring의 @Controller 어노테이션을 사용하여 웹 요청을 처리하는 클래스임을 나타낸다. @Slf4j @RequiredArgsConstructor @Controller public class LoginController { /** * [View] 로그인 페이지를 엽니다. */ @GetMapping("/login") public String login() { return "login"; } /** * [Action] 로그인 프로..
Spring Boot 3 & Security 6 시리즈: JWT 로그인 폼 구현 (1편)
·
Spring/Spring Security
Spring Security를 구현하기 전에 앞으로 사용할 JWT 토큰이 어떤 것인지에 대해서 알아보자 📌 서론 JWT (JSON Web Token)는 웹에서 정보를 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 제공하는 토큰이다. JWT는 세 부분으로 구성되며, 각 부분은 점(.)으로 구분된다. 아래의 링크에서 jwt 토큰을 Encoded, Decoded 해볼 수 있다. JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 1. JWT란 Header: Header는 JWT의 메타데이터를 포함하며, 주로 두 가지 정보를 담..