파이썬을 사용한 JWT 토큰 발급과 저장 방법

소개

JWT (JSON Web Token)은 웹 애플리케이션에서 인증과 권한 부여를 위해 사용되는 오픈 표준입니다. 이 문서에서는 파이썬을 사용하여 JWT 토큰을 발급하고 저장하는 방법에 대해 알아보겠습니다.

JWT 토큰 발급하기

JWT 토큰을 발급하기 위해서는 다음 단계를 따르면 됩니다:

  1. PyJWT 패키지를 설치합니다:
pip install PyJWT
  1. 필요한 모듈을 임포트합니다:
import jwt
import datetime
  1. JWT 토큰을 발급하는 함수를 작성합니다:
def generate_jwt_token(data, secret_key, expiration_time):
    payload = {
        'data': data,
        'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=expiration_time)
    }
    token = jwt.encode(payload, secret_key, algorithm='HS256')
    return token.decode('utf-8')

data는 토큰에 포함될 데이터를 의미하며, secret_key는 암호화에 사용할 비밀 키입니다. expiration_time은 토큰의 만료 시간을 초 단위로 설정합니다.

  1. 토큰을 발급합니다:
secret_key = 'my_secret_key'
expiration_time = 3600  # 1시간
data = {'user_id': 123}

token = generate_jwt_token(data, secret_key, expiration_time)
print(token)

JWT 토큰 저장하기

발급된 JWT 토큰은 보안상의 이유로 안전한 곳에 저장해야 합니다. 일반적으로는 클라이언트 쿠키 또는 로컬 스토리지에 저장됩니다. 다음은 간단한 예입니다:

import flask

...

@app.route('/login', methods=['POST'])
def login():
    # 사용자 인증 후 토큰 발급
    token = generate_jwt_token(data, secret_key, expiration_time)

    # 토큰을 쿠키에 저장
    response = flask.make_response()
    response.set_cookie('jwt_token', token)
    return response

위 예제에서는 Flask를 사용하여 토큰을 쿠키에 저장하는 방법을 보여줍니다. 필요에 따라 쿠키 저장 대신 로컬 스토리지에 저장하는 방법을 사용할 수도 있습니다.

결론

이 문서에서는 파이썬을 사용하여 JWT 토큰을 발급하고 저장하는 방법에 대해 알아보았습니다. JWT 토큰은 웹 애플리케이션의 인증과 권한 부여에 유용하게 사용될 수 있으며, 위의 코드를 참고하여 실제 프로젝트에서 적용해 볼 수 있습니다.

#jwt #파이썬