본문 바로가기

Web Sever 개발과 CS 기초

(87)
Spring Security와 JWT 토큰을 이용하여 REST API 인증,인가 구현하기 관련 내용 해당 프로젝트 깃허브 해당 프로젝트 깃허브 커밋시점 [스프링] - 쿠키와 세션의 구조 - 세션 로그인과 JWT 로그인 차이 [스프링] - TCP 통신 보안 허점과 RSA 보안 방식 개요와 목적 이번 글에서는 Spring Security와 JWT 토큰을 이용하여 REST API 인증,인가 처리를 해보려고 한다. 구현하려고 하는 기능 로그인 하기 인증 처리 UI서버-http://127.0.0.1:8080/user/manage/login 페이지에 들어가서 로그인 버튼을 클릭하면, 인풋에 입력된 id와 password로 API서버 /login 주소로 로그인 요청한다. UI 페이지에서 보낸 정보가 DB에 있는 id,password와 일치한다면, JWT 인증 토큰을 제공한다. 브라우저는 해당 토큰을 저장..
쿠키와 세션의 구조 - 세션 로그인과 JWT 로그인 차이 관련 내용 [스프링] - Spring Security와 JWT 토큰을 이용하여 REST API 인증,인가 구현하기 글의 목적 관련 내용 글에서는 SpringSecurity와 JWT 토큰을 이용한 REST API 인증 인가 구현을 해보았다. 이번 글에서는, 인증과 인가 처리의 필수 요소인 세션과 쿠키 구조에 대해서 알아보고, 세션 로그인과 JWT 로그인의 작동 과정과 장, 단점을 통해서 둘 사이의 어떤 차이가 있는지 알아보자. 쿠키와 세션의 구조 쿠키와 세션의 필요성 HTTP 프로토콜은 Stateless 특성이 있다. 그래서 클라이언트와 서버의 Request Response 통신이 끝나는 순간, 이전 상태를 보존하지 않는다. 장점으로는, 상태를 보관하지 않으므로 클라이언트의 요청에 어느 서버가 응답해도 상..
TCP 통신 보안 허점과 RSA 보안 방식 관련 내용 [스프링] - Spring Security와 JWT 토큰을 이용하여 REST API 인증,인가 구현하기 개요와 목적 관련 내용 블로그 글에서는 Spring Security와 JWT 토큰을 사용해서, 인증과 인가에 처리 보안에 대해서 알아보았다. 이번 글에서는, 네트워크 통신에 가장 많이 쓰이는 TCP 통신에서 보안이 필요한 이유와 RSA 보안 방식에 대해서 알아보겠다. 먼저 TCP 통신이란 무엇인가 OSI 7계층 OSI 7 계층은, 네트워크 프로토콜들이 통신하는 구조를 7계층으로 분리한 것이다. 각 계층 간의 상호 작동하는 방식을 정해 놓았다. (OSI는 개념적 모델로 실질적 통신에는 사용되지 않는다. TCP/IP는 실질 네트워크 통신에 사용되는 모델이다) TCP는 7 계층 중 트랜스포트 계층..
NAT DHCP 목적, 구조와 동작 방법 관련 내용 [리눅스 인프라/우분투] - VirtualBox NAT network 고정 IP 할당하기 개요와 목적 관련 내용 블로그 글에서는 VirtualBox의 NAT Network를 사용한 고정 IP 할당 방법에 대해서 알아보았다. 이번 글에서는 위에서 언급한 NAT란 무엇인지, 그리고 자동으로 IP를 할당해주는 DHCP는 무엇이고 어떻게 동작하는 지 알아보겠다. NAT 목적1 - 공인 IP 절약 NAT(Network Address Translation)는 하나의 공인 IP를 하나 또는 여러 개의 사설 IP 변환해준다. 하나의 공인 IP를 여러 사설 IP로 나누어 사용 할 수 있기 때문에, 공인 IP를 절약하는 효과가 있다. 사설 IP에서 외부 인터넷과 연결하려면 반드시, NAT을 거쳐서 공인 IP로 ..
Spring Proxy가 아닌 방법으로 AOP 구현 방법 먼저 AOP란 무엇인가 서비스에는 핵심 기능과 부가 기능이 존재한다. 회원 가입 로직이라면 DB에 새로운 회원 정보를 등록하는 것이 핵심 기능이고, 트랜잭션을 관리하고, 로그를 찍는 것은 부가 기능이다. 이러한 부가 기능은 다른 곳에서도 반복 사용되기 때문에, 따로 분리하여 관리하는 것이 유리하다. AOP는 핵심 기능과 부가 기능을 분리하는 역할을 한다. AOP은 Aspect Oriented Programing의 약자이고, Aspect를 사용한 프로그래밍이라는 의미다. Aspect는 부가 기능의 역할은 무엇이고, 핵심 기능 중 어디에 적용할 지 정한다. 스프링이 제공하는 @Aspect가 Aspect중 하나이다. Proxy가 아닌 방법으로 AOP 구현 방법 1. AspectJ 컴파일러 .java 소스 코드..
OpenInView의미와 꺼야 하는 이유 OpenInView 의미와 꺼야 하는 이유 OpenInView는 하이버네이트에서는, Open Session In View이고, JPA에서는 Open EntityManager In View이다. OSIV가 켜져 있으면, DB 커넥션과 영속성 컨텍스트의 사용 범위를, API 응답이 끝날 때까지 유지한다. Controller에서 return을 하기 직전까지, 영속성 컨텍스트를 사용할 수 있는 것이다. 장점으로는 영속성 컨텍스트를 이용한 지연로딩을 Controller 영역에도 사용할 수 있다. 문제점은, 데이터베이스 커넥션을 너무 유지된다. 트래픽이 많은 서비스의 경우, 각 쓰레드마다, 커넥션을 늦게 반납하여, 커넥션 고갈 문제가 생긴다. 끄는 방법 spring: jpa: open-in-view: false 설..
CORS 이해와 동작 원리 파악 개요 목적 Spring 백엔드 서버를 웹페이지에서 테스트할 때 CORS 정책 예외를 만난다. 이번 시간에는 해당 CORS 의미와 동작 과정을 파악한다. 마지막은 Spring에서 CORS 정책을 허용하는 방법을 알아본다. CORS란 Cross-Origin-Resource-Sharing은 브라우저가 Cross Origin 데이터 교환에 대한 HTTP 통신을 통제하는 것을 의미한다. 예시를 통해 Cross Origin의 HTTP 통신 상황에 대해서 알아보자. 브라우저를 사용하는 http://localhost:8080이라는 UI 서버에서, 화면에 작성할 데이터를 받아오기 위해, http://www.imagelist.com:5510 백엔드 서버에서 HTTP 요청을 한다. 이때 브라우저(크롬)는 두 서버의 프로토콜..
HTTPS 필요성과 TLS Handshake 과정 개요 목적 이번 시간에는 HTTP 보안 취약성과 해결책인 HTTPS에 대해서 알아본다, HTTPS 통신을 하기 위한 TLS Handshake 과정에 대해서 알아본다. HTTP의 문제점 (HTTPS 탄생 이유) HTTP는 WEB 인터넷에서 데이터를 저장 전손하는 규칙 모음이다. (정해진 형태로 보내고 읽어야, 이것이 동영상 파일인지 문서 파일인지 바이트를 분석할 수 있다.) HTTP의 보안 문제점은, 요청과 응답을 일반 텍스트로(평문, 암호화되지 않는 메세지) 전송 한다. → 도청 가능 통신 상대를 확인 하지 않는다 → 위장 가능 완전성을 증명할 수 없다 → 중간에 변조 가능(중간자 공격 - 리퀘스트나 리스폰스를 빼앗아 변조) HTTPS 역할과 보안 구조 HTTPS는 새로운 프로토콜이 아니라, HTTP를 ..

반응형