Chapter 4-8(1) Flask 애플리케이션에서 HTTP 기본 인증 사용

2025. 4. 22. 20:45·Flask
목차
  1. 📌 개념 정리
  2. 🚦 동작 원리 및 구조
  3. 💻 코드 예시 및 흐름 분석
  4. 🧪 실전 사례
  5. 🧠 고급 팁 or 자주 하는 실수
  6. ✅ 마무리 요약 및 복습 포인트

📌 개념 정리

Flask는 파이썬 기반의 웹 프레임워크로, 간단한 웹 애플리케이션을 빠르게 구축할 수 있게 도와줍니다. Flask는 기본적으로 경량화된 구조를 제공하며, 필요한 라이브러리나 기능을 추가해가며 확장할 수 있습니다. 이번 예제에서는 Flask와 flask_httpauth 라이브러리를 사용하여 사용자 인증을 구현하고, 보호된 페이지를 구현하는 방법을 다루고 있습니다.

🚦 동작 원리 및 구조

이 Flask 애플리케이션은 기본적으로 두 가지 페이지를 제공합니다:

  1. 홈 페이지 (/ 경로) - 기본적으로 사용자가 접속할 수 있는 페이지입니다.
  2. 보호된 페이지 (/protected 경로) - 인증된 사용자만 접근할 수 있는 페이지입니다.

인증 흐름:

  • 사용자가 페이지에 접근하면, flask_httpauth 라이브러리의 verify_password 함수를 사용해 사용자 인증을 처리합니다.
  • 인증된 사용자만 protected 페이지에 접근할 수 있습니다.

구조:

  • app.py: 애플리케이션의 핵심 로직을 포함한 파일입니다. Flask 서버를 실행하고, 두 페이지(index, protected)를 제공합니다. 인증 기능도 여기에서 처리됩니다.
  • index.html: 홈 페이지로, 사용자가 접근할 수 있는 기본적인 페이지입니다.
  • secret.html: 보호된 페이지로, 인증된 사용자만 접근할 수 있습니다.

💻 코드 예시 및 흐름 분석

1. app.py

from flask import Flask, jsonify, render_template
from flask_httpauth import HTTPBasicAuth

app = Flask(__name__)
auth = HTTPBasicAuth()

# 사용자 정보
users = {
    "admin": "secret",  # 사용자명: 비밀번호
    "guest": "pw123"
}

# 인증 함수 정의
@auth.verify_password
def verify_password(username, password):
    if username in users and users[username] == password:
        return username  # 인증 성공 시 사용자명 반환

# 인증된 사용자만 접근 가능한 페이지
@app.route('/protected')
@auth.login_required  # 로그인된 사용자만 접근 가능
def protected():
    return render_template('secret.html')  # 보호된 콘텐츠를 렌더링

# 기본 홈 페이지
@app.route('/')
def index():
    return render_template('index.html')  # 홈 페이지

if __name__ == '__main__':
    app.run(debug=True)

2. index.html

<!DOCTYPE html>
<html>

  <head>
    <title>Home Page</title>
  </head>

  <body>
    <h1>Welcome to the Home Page</h1>
    <a href="/protected">Go to Protected Resource</a>
  </body>

</html>

3. secret.html

<!DOCTYPE html>
<html>

  <head>
    <title>Secret Page</title>
  </head>

  <body>
    <h1>Secret Page</h1>
    <p>Welcome to the secret page!</p>
    <a href="/">Home</a>
    <a href="/logout">Logout</a>
  </body>

</html>

🧪 실전 사례

이 애플리케이션은 간단한 사용자 인증을 구현한 예제입니다. flask_httpauth 라이브러리를 사용하여 로그인 기능을 구현하고, 인증된 사용자만 접근할 수 있는 보호된 페이지를 제공합니다. 예를 들어, 홈 페이지에서는 누구나 접근할 수 있지만, 보호된 페이지는 admin 또는 guest와 같은 사용자 이름과 비밀번호를 입력해야만 열 수 있습니다.

🧠 고급 팁 or 자주 하는 실수

  • 세션 관리: 기본적인 인증은 Basic Authentication을 사용하여 처리하지만, 실제 서비스에서는 session이나 JWT를 사용하여 사용자 상태를 관리하는 것이 일반적입니다.
  • 보안: 비밀번호를 평문으로 저장하는 것은 보안상 좋지 않습니다. hashlib 같은 라이브러리로 비밀번호를 해시화해서 저장하는 것이 안전합니다.
  • 로그인 실패 처리: 인증 실패 시 사용자에게 어떤 피드백을 제공할지 고민해보세요. 예를 들어, 실패 횟수를 추적하여 일정 횟수 이상 실패하면 계정을 잠그는 등의 추가 보안 조치를 고려할 수 있습니다.

✅ 마무리 요약 및 복습 포인트

  • Flask를 사용하여 간단한 웹 애플리케이션을 만들 수 있습니다.
  • flask_httpauth 라이브러리를 통해 기본 인증을 구현할 수 있습니다.
  • 인증이 필요한 페이지에 접근할 때 @auth.login_required 데코레이터를 사용하여 인증을 요구할 수 있습니다.
  • 실제 서비스에서는 세션 관리와 비밀번호 보안 등을 강화해야 합니다.

'Flask' 카테고리의 다른 글

Chapter 5-2 Flask Authentication / Flask-JWT-Extended  (0) 2025.04.23
Chapter 5-1 Flask Authentication / Flask-login  (0) 2025.04.22
Chapter 4-7(1) 로그인, 세션 관리 및 보안 페이지 Authentication/ Session  (0) 2025.04.22
Chapter 4-8 HTTP 기본 인증 Basic Authentication, Flask-HTTPAuth  (0) 2025.04.22
Chapter 4-7 Flask Authentication/ Session 인증 방식  (0) 2025.04.22
  1. 📌 개념 정리
  2. 🚦 동작 원리 및 구조
  3. 💻 코드 예시 및 흐름 분석
  4. 🧪 실전 사례
  5. 🧠 고급 팁 or 자주 하는 실수
  6. ✅ 마무리 요약 및 복습 포인트
'Flask' 카테고리의 다른 글
  • Chapter 5-2 Flask Authentication / Flask-JWT-Extended
  • Chapter 5-1 Flask Authentication / Flask-login
  • Chapter 4-7(1) 로그인, 세션 관리 및 보안 페이지 Authentication/ Session
  • Chapter 4-8 HTTP 기본 인증 Basic Authentication, Flask-HTTPAuth
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (612)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (31)
      • 기술블로그 (32)
      • 기술블로그-Fastapi편 (0)
      • 기술블로그-Django편 (143)
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (66)
      • Fastapi (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 4-8(1) Flask 애플리케이션에서 HTTP 기본 인증 사용

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.