반응형

분류 전체보기 54

OAuth 2.0 PKCE 확장

1. OAuth 2.0 PKCE(Proof Key for Code Exchange) 기존 Authorization Code Grant 방식에서 Accesstoken 요청 단계 중 client_secret의 보안성을 높이기 위해 고안된 기술이다. 2. 동작 방식 클라이언트 애플리케이션이 인증 서버 요청 시, code_challenge, code_challenge_method라는 새로운 파라미터를 함께 전송한다. code_challenge: code_verifier를 변환한 결과물 Code Verifier를 선택한 Hash 알고리즘으로 해싱, Base64 인코딩한 값 ex) base64encode(sha256(code_verifier)) code_challenge_method: code_challenge를 ..

OAuth 2.0 기본 개념

1. OAuth ? Open standard for Authorization의 약자로 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근권한을 부여할 수 있는 공통적인 수단으로 사용되는, 접근 위임을 위한 개방형 표준이다. (위키백과) OAuth가 사용되기 전에는 인증 방식의 표준이 없기 때문에 아이디와 비밀번호를 사용하여 보안에 취약한 구조이며, 기업마다 자체 인증 방식으로 개발하여 제각각의 코드로 개발되었다. 2. vs OAuth 1.0 ? 간단한 구현: 암호화된 시그니처를 생성하는 과정을 생략하여 간단한 구현 가능 다양한 인증 방식: HMAC 암호화 방식만 제공하던 OAuth 1.0과 달리 다양한 인증 방식 제공 높은 보안성: 토큰 기..

[Nginx] 정적 파일 제공

1. 오류 내용 대용량 파일(≥10MB) 다운로드 시 속도 저하 → Connection timeout 파일 다운로드 시 압축 처리, 파일명 변경 등의 작업을 위해 다운로드 API를 사용 중 대용량 파일을 읽어오는 과정에서 메모리 과부하 발생 2. 개선 사항 파일 다운로드 API 제거 웹서버(Nginx)에서 ‘Content-Disposition’ header를 통해 파일명 변경하여 정적 파일로 serve https://api.example.com/static/[file_name]/[file_origin_name] -- default.conf -- location ~ ^/static/(.+)/(.+)$ { alias /var/www/html/uploads/attach/$1; set $fname $2; add..

[AWS] EC2 인스턴스 유형 변경 검토

1. 기존 서버 구조 서비스 초기 런칭 이후 하나의 EC2 인스턴스 내에 WEB-API-DB를 운영중인 상황으로 접속자 증가에 따른 CPU 이용률 과부하, 메모리 자원 부족 → 성능 저하 별도의 개발 서버없이 도메인 구분을 통한 개발 환경으로 개발 과정의 오류 등 리스크가 높음 2. 개선 내용 메모리에 의존적인 데이터베이스를 단독 인스턴스(EC2) 분리하여 부하 분산으로 인한 서버 성능 개선, Scale-out 방식의 서버 증설을 위한 확장성 [DB] AWS RDS 마이그레이션 검토 스테이징(개발), 프로덕션 서버 별도 구성하여 개발 과정의 오류 등 리스크 감소 WEB-API 인스턴스 Dockerize, 웹 서버 구동에 적절한 인스턴스 타입으로 선택 [Docker] 다중 컨테이너 앱 환경 구축 3. 운영..

[DB] AWS RDS 마이그레이션 검토

1. 현 운영 상황 WEB API 앱을 운영중인 EC2 인스턴스 내에 직접 설치한 MariaDB를 함께 운영중인 상황으로 CPU 이용률 과부하, 메모리 자원 부족 → 성능 저하 데이터베이스 인스턴스를 분리 운영함으로써 인스턴스 로드 밸런싱, 확장성과 성능, 보안에 이점이 있고, 다수 애플리케이션 운영 시 DB 운영/관리에 용이 2. RDS 도입 배경 AWS RDS vs EC2 DB (단독 인스턴스) EC2 DB의 경우 데이터베이스의 모든 영역을 직접 관리/운영, RDS에서는 AWS 콘솔을 통한 관리 부담 감소 스토리지 오토 스케일링 기능 AWS 콘솔을 통한 데이터베이스 모니터링 및 자동 백업, 복구 기능 3. AWS DMS (Database Migration Service) AWS DMS 기능을 통한 무..

[Docker] 다중 컨테이너 앱 환경 구축

1. 도입 배경 기존 서버 관리의 문제점: 인스턴스 내에 응용프로그램 등을 직접 설치함으로써 환경을 구축하기 때문에, 여러 인스턴스 환경 운영/관리의 어려움이 있음 호스트와 격리된 각 컨테이너를 실행 함으로써 여러 App 간의 독립성과 확장성을 가진 환경을 보장함 Docker image를 이용하여 개발/운영 환경의 통합, 각종 라이브러리 설치 등으로 인한 의존성을 걱정할 필요 없이 인프라 구축에 용이함 배포 신속성, 자동화 등 2. 컨테이너 구조 Nginx Reverse Proxy를 통한 클라이언트 요청 처리 프록시 서버의 IP와 port만 공개가 되어 보안 대비 API (php-fpm) 로드 밸런싱으로 트래픽 분산 프록시 캐싱과 트래픽 분산으로 인한 서버 성능 향상 이후 상황에 맞는 Best Pract..

Access Token, Refresh Token 이해

Access Token, Refresh Token 이해 안녕하세요 여러분! 오늘은 웹 개발에서 사용되는 "Access Token"과 "Refresh Token"에 대해 알아보려고 해요! 🚀 Access Token과 Refresh Token은 사용자 인증과 권한 부여를 위해 사용되는 토큰입니다. 웹 애플리케이션에서는 보안성을 유지하고 사용자의 인증 상태를 유지하기 위해 이러한 토큰 기반의 인증 시스템을 많이 사용하고 있답니다. 😊 Access Token이란? Access Token은 사용자의 인증 정보를 포함한 토큰입니다. 일반적으로 짧은 유효 기간을 가지며, 사용자가 웹 애플리케이션에 로그인할 때 발급됩니다. Access Token을 이용하여 사용자가 인증된 요청을 보낼 수 있고, 인증이 필요한 리소스에..

JWT (JSON Web Token)

JWT (JSON Web Token) 안녕하세요 여러분! 오늘은 웹 개발에서 사용되는 "JWT (JSON Web Token)"에 대해 알아보려고 해요! 🚀 JWT는 인증과 정보 교류를 위해 사용되는 토큰 기반의 인증 방식이에요. 웹 애플리케이션에서 사용자의 로그인 상태를 유지하고, 안전하게 정보를 전달하기 위해 많이 사용되고 있답니다. 😊 JWT의 구조 JWT는 세 개의 파트로 구성되어 있습니다. 각 파트는 점으로 구분되며, 각각은 Base64로 인코딩된 문자열로 이루어져 있어요: 헤더 (Header): JWT의 유형과 해시 알고리즘을 포함합니다. 헤더는 JSON 형태로 이루어져 있고, 일반적으로 "alg"와 "typ" 필드를 포함합니다. 페이로드 (Payload): JWT에 포함되는 정보를 담고 있습니..

관계형 데이터베이스 (RDBMS)

관계형 데이터베이스 (RDBMS) 안녕하세요 여러분! 오늘은 웹 개발에서 사용되는 "관계형 데이터베이스(RDBMS)"에 대해 알아보려고 해요! 🚀 관계형 데이터베이스는 데이터를 테이블 형태로 구성하고, 테이블 간의 관계를 이용하여 데이터를 저장, 검색, 조작하는데 사용되는 데이터베이스 시스템이에요. 일반적으로 SQL(Structured Query Language)을 사용하여 데이터베이스에 접근하고 조작할 수 있답니다. 😊 관계형 데이터베이스의 특징 관계형 데이터베이스는 다음과 같은 특징을 가지고 있어요: 테이블 구조: 데이터는 여러 개의 테이블로 구성됩니다. 각 테이블은 열(Column)과 행(Row)으로 구성되어 있으며, 열은 데이터의 속성을 나타내고 행은 개별 데이터를 나타냅니다. 정규화: 관계형 데..

라우터 (Router)

라우터 (Router) 안녕하세요 여러분! 오늘은 웹 개발에서 사용되는 "라우터 (Router)"에 대해 알아보려고 해요! 🚀 라우터는 웹 애플리케이션에서 페이지 간의 이동을 관리하고 처리하는 기능을 담당합니다. 사용자가 다른 페이지로 이동할 때마다 새로운 요청을 보내지 않고도 페이지를 동적으로 갱신할 수 있어요. 😊 라우터의 역할 라우터는 다양한 역할을 수행하여 웹 애플리케이션의 페이지 전환을 가능하게 합니다. 주요 역할은 다음과 같아요: 페이지 전환: 라우터는 사용자의 요청에 따라 여러 페이지를 동적으로 전환할 수 있습니다. 사용자의 액션에 따라 화면을 실시간으로 업데이트하여 원하는 페이지로 이동할 수 있어요. URL 매핑: 라우터는 URL과 페이지를 연결하여 요청된 URL에 따라 적절한 페이지로 이..

반응형