분류 전체보기
리소스 게이트웨이 - CGI
게이트웨이의 가장 일반적인 형태인 애플리케이션 서버는 목적지 서버와 게이트웨이를 한 개의 서버로 결합한다. 애플리케이션 서버는 HTTP를 통해서 클라이언트와 통신하고 서버 측에 있는 애플리케이션 프로그램에 연결하는 서버 측 게이트웨이다. 애플리케이션 서버는 게이트웨이의 애플리케이션 프로그래밍 인터페이스를 통해서 요청을 서버에서 동작하고 있는 애플리케이션에 전달한다. 애플리케이션 게이트웨이에서 유명했던 최초의 API는 공용 게이트웨이 인터페이스(CGI)였다. CGI는 특정 URL에 대한 HTTP 요청에 따라 프로그램을 실행하고, 프로그램의 출력을 수집하고, HTTP 응답으로 회신하는데 웹 서버가 사용하는 표준화된 인터페이스 집합이다. 공용 게이트웨이 인터페이스 CGI 애플리케이션이 서버와 분리되면서 펄, ..
보안 게이트웨이
HTTP/HTTPS 서버 측 보안 게이트웨이 기업 내부의 모든 웹 요청을 암호화함으로써 개인 정보 보호와 보안을 제공하는데 게이트웨이를 사용할 수 있다. 클라이언트는 일반 HTTP를 사용하여 웹을 탐색할 수 있지만, 게이트웨이는 사용자의 모든 세션을 암호화할 것이다. HTTPS/HTTP: 클라이언ㅌ 측 보안 가속 게이트웨이 HTTpS/HTTP 게이트웨이는 보안 가속기로 유명하다. 이 HTTPS/HTTP 게이트웨이는 웹 서버의 앞단에 위치하고, 보이지 않는 인터셉트 게이트웨이나 리버스 프락시 역할을 한다. 이 게이트웨이는 보안 HTTPS ㅌ트래픽을 받아서 복호화하고, 웹 서버로 보낼 일반 HTTP 요청을 보낸다. 이런 게이트웨이는 원 서버보다 더욱 효율적으로 보안 트래픽을 복호화하는 암호화 하드웨어를 내장..
게이트웨이
게이트웨이 서로 다른 프로토콜과 애플리케이션 간의 HTTP 인터페이스 게이트웨이는 리소스와 애플리케이션을 연결하는 역할을 한다. 애플리케이션은 게이트웨이에게 요청을 처리해달라고 할 수 있고, 게이트웨이는 그에 응답할 수 있다. 게이트웨이는 요청을 받고 응답을 보내는 포털 같이 동작하는데, 동적인 콘텐츠를 생성하거나 데이터베이스에 질의를 보낼 수 있다. 클라이언트 측 게이트웨이와 서버 측 게이트웨이 웹 게이트웨이는 한쪽에서는 HTTP로 통신하고 다른 한쪽에서는 HTTP 가 아닌 다른 프로토콜로 통신한다. 게이트웨이는 클라이언트 측 프로토콜과 서버 측 프로토콜을 빗금(/)으로 구분해 기술한다. 게이트웨이가 HTTP 클라이언트와 NNTP 뉴스 서버 사이에 있으면 HTTP/NNTP 게이트웨이가 된다. 서버 측 ..
Swagger - SerializerMethodField의 return type hint
django rest framework에서 SerializerMethodField 필드의 return 타입이 원시형이 아닌 Serializer의 형태일 때 어떻게 API Docs에서 보여줄 것인가에 대한 고민이 있었다. drf-yasg를 검색해 본 결과 아래의 어노테이션을 선언하면 object 형태의 Serializer 도 보여줄 수 있었다 @swagger_serializer_method(serializer_or_field=FooSerializer) def get_foo_list(self, obj) return FooSerializer(obj.instance).data 참고: https://drf-yasg.readthedocs.io/en/stable/custom_spec.html#support-for-s..
[Django] - 사용자 로그인 - JWT 적용하기 - 2. JWT 이해하기
2023.07.02 - [Django] - 사용자 로그인 - JWT 적용하기 - 1. Session 이해하기 JWT (Json Web Token) 이란? JWT는 JSON Web Token의 약자로, 웹 표준으로 지정된 토큰 기반의 인증 방식이다. JWT는 사용자의 정보를 JSON 객체로 안전하게 전송하기 위한 방법으로, 특히 분산 시스템에서 인증 정보를 공유할 때 유용하다. JWT의 구성 JWT는 세 부분으로 구성되어 있다. Header JWT의 헤더(Header)는 JWT의 유형과 암호화 알고리즘 정보를 포함하는 부분입니다. 헤더는 Base64로 인코딩 된 JSON 객체로 구성되어 있다. 헤더는 다음과 같은 두 가지 주요 속성을 포함한다. 토큰 유형(Type): 토큰의 유형을 나타내는 속성이다. 일반..
사용자 로그인 - JWT 적용하기 - 1. Session 이해하기
사용자 로그인을 구현하였다. 기존에는 Session만을 이용했는데, 이번엔 JWT를 활용하였다. JWT를 이용하면서 이론적으로만 알던 부분을 적용하면서 이해도가 깊어진 느낌이다. 우선 전통적인 Session 기반 인증을 공부해 보자. 1. 세션(Session)이란? 세션은 웹 서버에서 클라이언트를 구분하기 위한 방법 중 하나이다. 클라이언트가 웹 서버에 접속하면, 웹 서버는 해당 클라이언트의 브라우저에게 세션 ID를 부여한다. 이후 클라이언트가 서버로 요청을 보낼 때마다, 해당 세션 ID를 함께 보내게 된다. 1.1 세션 로그인(Session Login)이란? 세션 로그인은, 사용자가 로그인을 하면 서버에서 해당 사용자에 대한 세션을 생성하는 방식이다. 이후 사용자가 로그인 상태를 유지하는 동안, 해당 ..
Windows 에서 AWS CLI 실행하기
AWS의 access Key를 통해 cli로 aws 서비스를 접근할 수 있다. 오늘은 이걸 해보자 AWS CLI 다운받기 aws cli는 여기서 다운로드할 수 있다. https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html 나는 Windows니까 윈도 용을 다운로드하자 Windows 용 Access Key 발급받기 CLI로 AWS에 접속하려면 여러 가지 방법이 있는데 일단은 access key를 발급받아서 접속해 보자 이때 Access Key는 절대 유출되면 안 된다(그리고 IAM 계정을 만들어서 하자) 우선 우측 상단에 계정 이름을 눌러서 보안 자격 증명에 들어가자. 그다음 아래로 스크롤하면 '액세스키 만들기'..
서버 성능 측정해보기
https://www.youtube.com/watch?v=HSNyJnobBws 서버 성능에 대해 막연하게 대답하지 않고 정량적으로 답할 수 있도록 해줬다. 해당 내용을 보고 현재 개발 중인 API 서버를 테스트 해봤다 벤치마크 툴은 여기서 소개한 wrk2 로 해봤다. Wrk2 를 이용한 API 테스트 해보기 설치하기 일단 wrk2 를 설치해보자 sudo apt-get update sudo apt-get install build-essential libssl-dev git git clone https://github.com/giltene/wrk2.git cd wrk2 make sudo cp wrk /usr/local/bin 나는 windows 11을 사용하고 있기 때문에 wsl2 에서 ubuntu 22.0..
Git branch 삭제하기
git branch 를 순회하면서 특정 단어를 가진 branch 를 삭제하고 싶었다 일일히 하기 귀찮았다... git branch | grep MKT | xargs git branch -d
인증 구현하기
Django 인증 절차를 Custom 하고 싶었다. 나는 모든 View에서 인증 절차를 처리하는 AuthenticationMiddleware를 조작하거나 AUTHENTICATION_CLASSES를 재정의해서 request.user를 확인하는 절차를 처리할 수 있다. 나는 AuthenticationMiddleware 보다는 AUTHENTICATION_CLASSES 를 재정의하고자 했다. 그 이유는 AuthenticationMiddleware는 상위의 위치하는 레이어이기 때문에 이걸 섣부르게 커스텀했다가는 내가 인지 못하는 부작용이 발생할 거 같았다. AuthenticationMiddleware AuthenticationMiddleware 는 각 View에서 인증을 위한 절차를 검사하는 middleware이..