본문 바로가기

전체 글

(94)
PostgreSQL - 01 (설치 - Windows) 설치 프로그램 다운로드 PostgreSQL 공식 사이트에 접속합니다. 설치 시점은 2023년 12월 24일 입니다. 저와 화면이 다를 수 있습니다. Download 버튼을 클릭합니다. Windows를 클릭합니다. Download the installer를 클릭합니다. Windows x86-64의 최신 버전 16.1을 설치 하기 위해 노란형광펜 부분을 클릭합니다. 다운로드 페이지로 이동되면서 파일이 다운로드 됩니다. 설치 탐색기의 다운로드 폴더로 이동하여 postgresql-16.1-1-windows-x64.exe 파일을 실행합니다. 설치 프로그램이 실행 되면 예를 클릭하여 설치를 진행 합니다. Next를 클릭합니다. 설치 디렉토리를 설정 합니다. 저는 초기값을 사용 하였습니다. Next를 클릭합니다. 설..
FastAPI - 18 (보안4 - QAuth2, Bearer, JWT - 클라이언트 구성 ) 인증서버와 인증을 요청하는 클라이언트를 각각 구성하겠습니다. 환경 구성 인증 서버 설정 인증 서버 코드 작성(main.py): 사용자 인증과 JWT 토큰 발급을 처리하는 FastAPI 애플리케이션을 작성합니다. 이 서버는 로그인 엔드포인트(/token)를 제공하고 유효한 자격 증명을 가진 사용자에게 JWT 토큰을 발급합니다. 인증 서버 실행: 인증 서버를 8000 포트에서 실행합니다. uvicorn uvicorn main:app --reload --port 8000 클라이언트 서버 설정 클라이언트 서버 코드 작성(main_client.py): 인증 서버와 다른 FastAPI 애플리케이션을 작성하여 클라이언트 서버로 사용합니다. 이 서버는 인증이 필요한 엔드포인트를 제공하며, 요청의 Authorizatio..
FastAPI - 17 (보안3 - JWT) 출처: https://fastapi.tiangolo.com/tutorial/security/oauth2-jwt/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. JWT란 먼저 OAuth 2.0에서 발급되는 Bearer 토큰의 형태 중 하나가 JWT입니다. JWT 정의: JWT (JSON Web Tokens)는 JSON 객체를 긴 문자열로 인코딩하는 표준입니다. 이 문자열은 공백 없이 밀집되어 있습니다. 예시 형태: JWT는 다음과 같은 형태를 가집니다: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJ..
FastAPI - 16 (보안2 - QAuth2, Bearer) 출처: https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. 로그인(인증)하여 토큰 받기 이전의 코드(FastAPI - 15 (보안1 - QAuth2, Bearer))를 이용하여 추가 합니다. OAuth2PasswordRequestForm를 이용 하여 username과 password 가져옵니다. 전달 된 사용자 정보로 인증을 진행 합니다. 인증이 완료되면 토큰을 생성하여 반환 하고 그렇지 않으면 HTTPException을 발생 시킵니다. 코드 from typing import Union from fastapi import Depends, FastAPI, HTT..
FastAPI - 15 (보안1 - QAuth2, Bearer) OAuth2, Bearer란 OAuth2 OAuth 2.0을 사용하면, 계정 정보(특히 비밀번호)를 직접 공유하지 않고도 여러 서비스 간에 안전하게 로그인하고 정보를 공유할 수 있습니다. 이는 인터넷에서 개인정보를 보호하는 중요한 방법 중 하나입니다. 인터넷에서의 "키(토큰)" 우리가 인터넷에서 다양한 서비스(예: 게임, 소셜 미디어, 쇼핑 앱 등)를 사용할 때, 때때로 한 서비스(예: 구글 또는 페이스북)를 사용해서 다른 서비스에 로그인하는 경우가 있습니다. 여기서 OAuth 2.0은 하나의 서비스가 다른 서비스에 '키(토큰)'를 안전하게 전달할 수 있게 해주는 역할을 합니다. "키(토큰)" 전달 과정 권한 요청: 예를 들어, '게임 A'에 '구글 계정'으로 로그인하고 싶다고 해 봅시다. 여기서 게임 ..
FastAPI - 14 (의존성 주입) 출처: https://fastapi.tiangolo.com/ko/tutorial/dependencies/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. 의존성 주입(Dependency Injection) 의존성 주입은 객체가 필요로 하는 외부 리소스(의존성)를 객체 자체가 아닌 외부에서 제공하는 디자인 패턴입니다. FastAPI에서는 이 패턴을 사용하여 다양한 작업(예: 사용자 인증, 데이터베이스 연결, 설정 로드)을 처리합니다. 다시 말해 반복적인 작업을 정의하고 그것을 의존성 주입을 이용하여 사용하는 것 입니다. Depends FastAPI의 의존성 주입은 Depends를 사용합니다. 예시 코드를 통해 살펴 보겠습니다. from typing import Uni..
FastAPI - 13 (JSON 호환 인코더 / 본문 업데이트) jsonable_encoder 출처: https://fastapi.tiangolo.com/tutorial/encoder/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. jsonable_encoder는 pydantic의 BaseModel을 JSON 호환으로 변환하는 함수 입니다. JSON 호환 가능 유형은 dict, list 등이 있습니다. 예시 코드 - jsonable_encoder 사용자가 입력된 값을 Item 모델의 인스턴스로 생성하고 jsonable_encoder를 이용 하여 dict 유형으로 변환 합니다. from datetime import datetime from typing import Union from fastapi import FastAPI fr..
FastAPI - 12 (파일 업로드 / 파일 다운로드) 업로드 된 파일 저장 예시 코드 from fastapi import FastAPI, UploadFile, File, Form from fastapi.responses import HTMLResponse import shutil import os app = FastAPI() os.makedirs("uploads", exist_ok=True) @app.get("/", response_class=HTMLResponse) async def get_upload_form(): return """ Upload File with Extra Fields """ @app.post("/uploadfile/") async def create_upload_file(file: UploadFile = File(...), item_..