파이썬과 JWT를 이용한 사용자 인증 로그 저장과 분석 방법

개요

JWT 소개

사용자 인증 로그 저장 방법

1. JWT 토큰 생성

import jwt
import datetime

# 사용자 정보를 담은 페이로드 생성
payload = {
  'user_id': '12345',
  'email': 'johndoe@example.com',
  'exp': datetime.datetime.utcnow() + datetime.timedelta(days=1)
}

# JWT 토큰 생성
jwt_token = jwt.encode(payload, 'secret_key', algorithm='HS256')

2. 로그 저장

토큰 생성 후, 해당 토큰과 사용자 로그를 저장할 수 있는 로그 시스템을 구축해야 합니다. 로그 시스템은 주어진 요구사항에 맞게 설계하면 됩니다.

import logging

# JWT 토큰과 사용자 로그 저장
def save_log(jwt_token, user_log):
    logger = logging.getLogger('auth_logs')
    logger.setLevel(logging.DEBUG)
    
    # 파일 핸들러 설정
    file_handler = logging.FileHandler('auth_logs.log')
    file_handler.setLevel(logging.DEBUG)
    
    # 로그 포맷 설정
    formatter = logging.Formatter('%(asctime)s - %(message)s')
    file_handler.setFormatter(formatter)
    
    logger.addHandler(file_handler)
    
    # 토큰과 로그 저장
    logger.info(f'Token: {jwt_token}')
    logger.info(f'User Log: {user_log}')

사용자 인증 로그 분석 방법

1. 로그 파일 읽기

import re

# 로그 파일 읽기
def read_log_file():
    with open('auth_logs.log', 'r') as file:
        logs = file.readlines()
    return logs

2. JWT 토큰 추출 및 검증

import jwt

# JWT 토큰 추출 및 검증
def extract_and_verify_token(logs):
    jwt_tokens = []
    for log in logs:
        token_match = re.search(r'Token: ([^\s]+)', log)
        if token_match:
            jwt_token = token_match.group(1)
            # 토큰 검증
            try:
                decoded_token = jwt.decode(jwt_token, 'secret_key', algorithms='HS256')
                jwt_tokens.append(decoded_token)
            except jwt.exceptions.InvalidTokenError:
                pass
    return jwt_tokens

3. 토큰 정보 분석

분석된 토큰을 기반으로 필요한 정보를 추출할 수 있습니다.

# 토큰 정보 분석
def analyze_token_info(jwt_tokens):
    for token in jwt_tokens:
        user_id = token.get('user_id')
        email = token.get('email')
        expiration = token.get('exp')

        print(f'User ID: {user_id}')
        print(f'Email: {email}')
        print(f'Expiration: {expiration}')

결론

이 글에서는 파이썬과 JWT를 이용하여 사용자 인증 로그를 저장하고 분석하는 방법을 알아보았습니다. JWT를 통해 안전하게 사용자 정보를 전달할 수 있으며, 로그 시스템을 통해 로그를 저장하고 분석함으로써 유용한 정보를 추출할 수 있습니다. 이를 통해 시스템 보안과 사용자 편의를 증진시킬 수 있습니다.

#tech #JWT