Spring

웹 앱 개발에서 서블릿 컨테이너 사용웹 브라우저는 HTTP라는 프로토콜을 사용하여 네트워크를 통해 서버와 통신한다.서블릿은 의미 있는 비즈니스 로직 외 모든 걸 지원서블릿: 서블릿 컨테이너와 직접 상호작용하는 자바 객체위 사진에서 초록색 부분만 의미 있는 비즈니스 로직이다.나머지는 HTTP메시지를 처리하 위해 수행해야하는 반복적인 작업이다.HTTP를 이해하고 HTTP 요청과 응답을 자바 앱으로 변환하는 역할을 하는 것이 서블릿 컨테이너, 이며 자바 앱이 HTTP 메시지를 변환하는 역할을 한다.서블릿 컨테이너를 사용하면 자바 앱은 통신 계츨을 구현할 필요가 없다. 가장 널리 알려진 구현체 중 하나는 톰캣(Tomcat)이다.실제 앱에서 사용되는 솔루션은 다양하다. 제티(Jetty), 제이보스(Jboss), ..
WAS와 WS의 차이점은 "웹 풀스택" 카테고리에 가면 설명이 있으니 참고 프로젝트를 하다가 "스프링부트는 웹 서버 내장하고 있는데 nginx 같은 웹 서버를 따로 사용해야할까요?"라는 질문을 받았다. 결론부터 말하자면api통신 시: WS필요 없음서버에서 페이지 반환 해야하는 상황이라면: 필요할 수도 있음 (대량의 트래픽이 오고간다면) 이 질문에 나도 대답을 하지 못해서 인프런의 갓영한님의 "스프링 MVC 1편"에 해당 내용에 대해 언급한게 있어서 해당 강의를 보고 내용을 정리해보고자 했다.WAS만 사용할 경우 WAS가 하는 일은 다음과 같다동적 파일 제공정적 리소스 제공애플리케이션 로직 실행여기서 알 수 있듯이 WAS가 정적 리소스도 제공한다는 사실이다.html, css, js, 이미지 같은 정적 리소..
본 글은 인프런 "스프링부트 시큐리티 & JWT 강의" 최주호 강사님의 강의를 바탕으로 작성한 글입니다.스프링 시큐리티란? 공식문서에는 아래와 같이 설명되어 있다.Spring Security는 강력하고 사용자 정의가 가능한 인증 및 엑세스 제어 프레임워크입니다. 이는 Spring 기반 애플리케이션 보안을 위한 사실상의 표준입니다.Spring Security는 Java 애플리케이션에 인증과 권한 부여를 모두 제공하는 데 중점은 둔 프레임워크입니다. 따라서 java 애플리케이션으로 인증/권한 부여를 하기 위해서 Spring Security를 많이 사용한다.1. 환경설정 강의에서는 mushtache라는 템플릿 엔진을 사용했다. 의존성은 아래와 같이 추가해 주었다LombokSpring Boot DevToolsS..
이전 프로젝트에서는 AccessToken, RefreshToken을 사용해 로그인을 구현했는데그 당시 토큰에 대한 개념과 Spring Security 필터에 대한 지식이 제대로 잡힌 상태가 아니였기에 (지금은..?)졸업 프로젝트에서 구현한 AccessToken을 구현하면서 내용을 정리해 보고자 한다.settingGradle 버전: 3.x.xjava: 17 패키지 구조 노란색 하이라이트인 클래스만 사용해서 JWT필터와 AcessToken 발급 구현토큰 발급이 주인 내용이므로 memberRepository나 login controller에 대한 내용은 간단하게 설명 Spring Security란? jwt를 구현하기 위해서는 먼저 Sprint Security 필터에 대한 이해가 어느정도 필요하다.해당 내용은 ..
JWT(JSON Web Token)란? jwt는 인증에 필요한 정보들을 암호화 시킨 JSON 토큰을 의미한다.따라서 JWT를 이용한 인증은 유저를 인증하고 식별하기 위한 Token 기반 인증이다.JWT는 JSON 데이터를 Base94 URL-safe Encode를 통해 인코딩하여 직렬화한 것이고,토큰 내부에는 개인키를 통한 전자 명이 들어있다.Base64 URL-safe Encode란? 일반적인 Base64 Encode 를 URL에서 오류 없이 사용하도록 '+' 와 '/'를 각각 '-', '_'으로 표현한 것이다. 토큰 기반 인증에서 토큰은 토큰 자체에 사용자 정보들이 포함되어 있다는 점(self-contained)이 특징이다. 클라이언트의 상태를 알아야했던 stateful했던 환경에서 JWT를 사용하게..
Authentication vs Authorization Atuhentication: 인증Authorization: 권한 부여 웹 사이트에 로그인 하는 것을 Authentication이라고 한다. 한번 로그인을 한 후에는 로그인 상태가 유지되어야 한다.이 유지하는 역할을 하는 것이 Authorization이다. 권한 부여를 통해 로그인 상태의 사용자만 사용할 수 있는기능을 사용할 수 있게 한다.어떤 요청마다 로그인을 할 수 없는 노릇이니 로그인 상태를 유지시키는 기술이 필요하다-> 여기서 세션이나 JWT 활용  대표적으로 사용자의 인증/인가를 처리할 때 사용하는 방식은 다음과 같이 3가지가 있다쿠키 방식세션 방식JWT 토큰 방식쿠키 클아이언트가 인증정보 관리 (stateless)쿠키 인증 방식은 쿠키에 ..
HTTP API를 제공하는 경우 데이터를 전달해야 하므로, http 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. https://mystudylog.tistory.com/40 HTTP 요청 메시지 - 텍스트, JSON HTTP message body 데이터 조회 - text 요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는 @RequestParam , @ModelAttribute 를 사용할 수 없다 1. InputStream HTTP 메시지 바디의 데이 mystudylog.tistory.com 위 링크에서는 요청과 응답이 모두 정리되어 있으므로 여기서는 응답 부분만 정리하겠다. @GetMapping("/response-body-string-v1") publ..
서버에서 응답 데이터를 만드는 방법은 크게 3가지이다 정적 리소스: 정적인 HTML, css, js를 제공해서 응답하는 것 뷰 템플릿: 동적인 HTML을 제공할 때는 뷰 템플릿을 사용 HTTP 메시지 사용: HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 정적 리소스로 응답 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static, /public, /resources, /META-INF/resources src/main/resources 는 리소스를 보관하는 곳이고, 또 클래스패스의 시작 경로이다. 따라서 다음 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스..
API 예시 회원 관리를 HTTP API로 만든다 생각하고 매핑을 어떻게 하는지 알아보자. 회원 관리 API 회원 목록 조회: GET → /users 회원 등록: POST → /users 회원 조회: GET → /users/{userId} 회원 수정: PATCH → /users/{userId} 회원 삭제: DELETE → /users/{userId} @RestController @RequestMapping("/mapping/users") public class MappingClassController { @GetMapping public String user() { return "get users"; } @PostMapping public String addUser() { return "post user..
hapBday
'Spring' 카테고리의 글 목록 (2 Page)