[python] Flask에서 HTTP Basic 인증 구현하기

Flask 애플리케이션에서 HTTP Basic 인증을 구현하는 방법에 대해 알아보겠습니다.

HTTP Basic 인증이란?

HTTP Basic 인증은 웹 서버가 클라이언트로부터 요청을 받을 때, 클라이언트에게 사용자 이름과 비밀번호를 요구하는 인증 메커니즘입니다. 이는 요청을 전송하는 클라이언트가 신원을 확인하는 데 사용됩니다.

Flask에서 HTTP Basic 인증 구현

from functools import wraps
from flask import request, Response

def check_auth(username, password):
    """인증을 확인하는 함수"""
    return username == 'username' and password == 'password'

def authenticate():
    """401 오류를 반환하는 함수"""
    return Response(
    '인증이 필요합니다', 401,
    {'WWW-Authenticate': 'Basic realm="Login Required"'})

def requires_auth(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        auth = request.authorization
        if not auth or not check_auth(auth.username, auth.password):
            return authenticate()
        return f(*args, **kwargs)
    return decorated

위의 코드는 Flask 애플리케이션에서 HTTP Basic 인증을 구현하는 방법을 보여주는 간단한 예제입니다. check_auth 함수는 사용자 이름과 비밀번호를 확인하고, authenticate 함수는 401 오류를 반환합니다. requires_auth 데코레이터는 요청에 대한 인증을 확인하는 역할을 합니다.

이제 이 예제를 통해 Flask 애플리케이션에서 HTTP Basic 인증을 구현하는 방법을 알아보았습니다. 이를 통해 웹 애플리케이션에 보안을 강화할 수 있습니다.

더 많은 내용을 학습하고 싶다면, Flask 공식 문서(Flask Documentation)를 참고하세요.