Flask JWT: 사용자 ID 토큰화, API 사용자 인증에 활용

Flask JWT를 활용하여 구성원 또는 사용자의 ID를 토큰화하고 이를 인증에 사용하십시오. 데이터 교환과 UX를 위한 것입니다.

이 장에서는 Flask JWT를 활용하여 회원 또는 사용자의 ID를 토큰화하고 인증에 사용하는 방법에 대해 설명합니다. 이는 데이터 상호 교환 및 사용자 경험 향상을 위한 매우 일반적이고 유용한 방법입니다. 디지털 마케팅, 전자상거래, SaaS, 미디어, 데이터 비즈니스 등 모든 분야에 적용할 수 있습니다.

목차: Flask JWT를 사용하여 사용자 ID 토큰화

API에 토큰 인증이 필요한 이유

개발자 또는 디지털 인벤토리 판매자로서 사용자 ID 인증이 원활하게 실행되도록 하는 것은 비즈니스 또는 애플리케이션을 보호하기 위한 가장 중요한 일상 작업 중 하나입니다. 또한 데이터 인벤토리 판매자는 제한 없이 또는 추적 시스템 하에서 API에 액세스할 수 있는 사람을 보고 싶지 않습니다. 보안 및 비즈니스 관점에서 API 토큰 인증이 필요한 이유입니다.

한편, 사용자 경험을 위해 API 사용자가 API 엔드포인트에 토큰을 추가하기만 하면 API 계정에 로그인할 수 있기를 바랍니다. 또는 API 토큰을 통해 분석된 관련 데이터에 액세스하고 애플리케이션과 연결하고 개인화된 사용자 경험을 즐길 수 있습니다. 원활하고 빠르고 안전한 방법입니다.

대체로 사용자 신원을 토큰화하는 것은 어떤 분야에서든 데이터 상호 교환 및 통신에서 중요하고 유용하며 효율적입니다. 특히 우리는 쿠키가 없고 더 큰 벽 정원 시대에 들어서고 있습니다.

플라스크 JWT란?

JWT에 대해 설명하기 전에 먼저 플라스크가 무엇인지 알아야 합니다. 기본적으로 Flask는 나머지 API를 빌드하는 데 사용되는 Python 기반 마이크로 프레임워크입니다. Flask 프레임워크의 핵심 아이디어는 단순하지만 확장 가능하도록 유지하는 것입니다. 이를 통해 개발자는 기본 설정에 따라 데이터베이스 통합, 인증, 세션 관리 및 기타 모든 백엔드 시스템을 위한 사용자 정의 확장을 추가할 수 있습니다.

이전에는 Shopify 봇 애플리케이션을 구축하기 위해 Flask에 대해 이야기했습니다. 관심있으신 분들은 이 부분을 참고해주시기 바랍니다.

https://www.easy2digital.com/automation/data/python-tutorial-26-create-a-shopify-bot-web-application-using-flask-and-heroku/

JSON 웹 토큰(JWT)은 JSON 객체의 도움을 받아 두 당사자 간에 데이터를 전송하는 안전하고 간단한 방법입니다. 따라서 기본적으로 Flask를 사용하여 애플리케이션을 빌드하는 경우 JWT는 token_required API 또는 사용자 액세스를 빌드하는 데 널리 사용되는 옵션입니다.

JSON은 데이터 전송을 위해 두 가지 다른 구조 유형을 사용합니다. 하나는 직렬화됩니다. 이 유형은 모든 요청 및 응답을 통해 네트워크로 정보를 전송할 때 사용됩니다. 여기에는 페이로드, 헤더 및 서명이 포함됩니다.

다른 하나는 역직렬화입니다. 이 유형은 토큰에 대한 정보를 읽거나 쓸 때 사용됩니다. 여기에는 페이로드와 헤더가 포함됩니다.

이전에 YAML과 비교하려고 했습니다. 더 자세히 알아보려면 이 부분을 확인하세요.

https://www.easy2digital.com/automation/data/python-knowledge-hub-json-vs-yaml-which-data-serialization-is-better/

토큰화 로드맵

언급한 바와 같이 JWT는 최초의 원래 목적으로 사용자 인증을 위한 것입니다. 따라서 기본적으로 전체 세대 로드맵에는 세 가지 기본 단계가 있습니다.

  • sqlalchemy를 사용하여 빌드된 사용자 데이터베이스에 토큰 열 만들기
  • 사용자 등록 작업에서 새 가입 사용자 토큰을 인코딩합니다.
  • 원하는 사용자 인증이 필요한 모든 Flask 경로에 적용할 수 있는 token_required 함수 빌드

토큰 열, 인코딩 및 디코딩

예를 들어 sqlalchemy를 사용합니다. 먼저 모든 사용자가 가지고 있는 고유한 토큰을 저장하기 위한 열을 추가해야 합니다. 이름 지정을 위해 예를 들어 "토큰"을 설정할 수 있습니다. 그러나 그것은 당신의 취향에 달려 있습니다. Flask 데이터베이스에 대한 자세한 내용은 다른 기사를 발표하겠습니다.

2단계는 새 사용자 가입 경로에 JWT 인코딩 방법을 추가하는 것입니다. 신규 사용자가 등록을 완료하면 고유한 API 토큰을 할당하기 때문입니다. 여기에서는 토큰 인코딩 참조로 등록하기 위해 사용자에게 보내는 초대 코드만 선택합니다. 다른 참조점을 사용하거나 다중 참조점을 사용하여 더 복잡하게 만들 수 있습니다.

마지막으로 데이터베이스 사용자 클래스 방법을 사용하여 새 사용자에게 새 토큰을 추가합니다. 그녀 또는 그에게 고유합니다.

토큰 필요 – 래핑 및 디코딩

이제 토큰이 필요한 함수를 빌드할 준비가 되었습니다. 사용자 인증이 필요한 모든 경로에 할당해야 하기 때문에 이것이 필요합니다. 목적은 login_required와 같습니다.

이 기능에서 핵심 구성 요소는 토큰을 해독하고 값이 이전에 새로 가입할 때 생성된 값과 일치하는지 확인하는 것입니다.

디코딩 섹션에 들어가기 전에 functools 및 래핑하는 모듈을 가져와야 합니다.

wraps 함수는 Python의 functools 모듈의 일부입니다. _name__, __doc__, docstring 등과 같은 속성을 복사하여 데코레이터의 래퍼 기능을 래핑하고 업데이트합니다.

def token_required(f):

@wraps(f)

def decorate(*args, **kwargs):

랩을 데코레이터로 사용하여 독스트링과 장식된 함수의 이름을 수정할 수 있습니다. 이것이 왜 중요한가요? 처음에는 이상하게 들릴 수 있지만 자신이 아닌 다른 사람이 사용할 API 또는 코드를 작성하는 경우 이것이 중요할 수 있습니다. 그 이유는 다른 사람의 코드를 알아내기 위해 파이썬의 인트로스펙션을 사용할 때 장식된 함수가 잘못된 정보를 반환하기 때문입니다.

두 가지 구성 요소

먼저 API 엔드포인트에 토큰 매개변수를 추가하고 토큰과 같은 이름을 지정해야 합니다. 사람들이 API를 호출하면 www.abe.com?token=12324343과 같이 이 매개변수에 고유한 토큰을 추가합니다.

token = request.args.get('token')

그런 다음 토큰이 누락되었거나 유효하지 않거나 올바른 경우 조건을 생성할 수 있습니다. 예를 들어 올바른 상태를 위해 디코딩된 토큰은 사용자가 가입할 때 생성된 public_id와 일치해야 합니다. 따라서 사용자 public_id를 필터링하여 데이터베이스를 쿼리할 수 있습니다.

ID가 디코딩된 토큰과 일치하지 않으면 응답 메시지가 유효하지 않습니다. 또는 API 엔드포인트에 토큰이 없으면 토큰이 누락되었다는 응답 메시지가 표시됩니다. 따라서 API를 사용하는 모든 사용자가 인증되었는지 확인합니다.

Flask JWT의 전체 Python 스크립트 샘플

54장 – 사용자 ID 토큰화 및 사용자 인증을 위한 Flask JWT 활용의 전체 Python 스크립트에 관심이 있는 경우, "Chapter 54"라는 메시지를 추가하여 뉴스레터를 구독 하십시오. . 귀하의 사서함으로 스크립트를 즉시 보내드립니다.

문의하기

54장 – Flask JWT를 활용하여 사용자 ID 토큰화 및 사용자 인증을 즐겁게 읽으시기 바랍니다. 그렇다면 아래 나열된 항목 중 하나를 수행하여 지원해 주세요. 항상 채널에 도움이 되기 때문입니다.

  • PayPal( paypal.me/Easy2digital )을 통해 채널을 지원하고 기부하세요.
  • 제 채널 구독하시고 알림벨을 켜주세요 Easy2Digital 유튜브 채널 .
  • 내 페이지 팔로우 및 좋아요 Easy2Digital Facebook 페이지
  • #easy2digital 해시태그를 사용하여 소셜 네트워크에 기사를 공유하세요.
  • Easy2Digital 10% 할인 코드로 제품 구매 ( Easy2DigitalNewBuyers2021)
  • Easy2Digital 최신 기사, 비디오 및 할인 코드를 받으려면 주간 뉴스레터에 가입하십시오.