Flask JWT: ユーザー ID のトークン化、API ユーザーの認証に利用

Flask JWT を利用してメンバーまたはユーザーの ID をトークン化し、それを認証に使用します。データ交換とUXのためです

この章では、Flask JWT を活用してメンバーまたはユーザーの ID をトークン化し、それを認証に使用する方法について説明します。これは、データ交換とユーザー エクスペリエンスを向上させるための非常に一般的で役立つ方法です。デジタル マーケティング、e コマース、SaaS、メディア、データ ビジネスなど、あらゆる分野に適応できます。

目次: Flask JWT を使用してユーザー ID をトークン化する

API にトークン認証が必要な理由

開発者またはデジタル在庫販売者として、ユーザー ID 認証がシームレスに実行されることを確認することは、ビジネスやアプリケーションを保護するための最も重要な日常タスクの 1 つです。さらに、データ インベントリの販売者は、無制限に、または追跡システムの下で API にアクセスできる人を見たくないのです。セキュリティとビジネスの観点から API トークン認証が必要な理由はこれにすぎません。

一方、ユーザー エクスペリエンスについては、API ユーザーが API エンドポイントにトークンを追加するだけで API アカウントにログインできるようにしたいと考えています。または、API トークンを介して、関連する解析済みデータにアクセスし、それをアプリケーションに接続して、パーソナライズされたユーザー エクスペリエンスを楽しむことができます。これはシームレスで高速かつ安全な方法です。

全体として、ユーザー ID のトークン化は、どの分野で作業しているかに関係なく、データ交換と通信において非常に重要で、役立ち、効率的です。特に、Cookie のない、より大規模なウォール ガーデンの時代に足を踏み入れています。

Flask JWTとは

JWT について詳しく説明する前に、まず flask とは何かを知る必要があります。基本的に、Flask は REST 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 Web Token (JWT) は、JSON オブジェクトを利用して 2 者間でデータを送信する安全かつコンパクトな方法です。基本的に、アプリケーションが Flask を使用して構築されている場合、JWT は token_required API またはユーザー アクセスを構築するための一般的なオプションです。

JSON は、データの送信に 2 つの異なる構造タイプを使用します。 1つは連載中です。このタイプは、すべての要求と応答を介してネットワークに情報を転送するときに使用されます。これには、ペイロード、ヘッダー、署名が含まれます。

もう 1 つはデシリアライズ済みです。このタイプは、トークンに情報を読み書きするときに使用されます。ペイロードとヘッダーが含まれます。

以前に YAML と比較してみました。さらに詳しく知りたい場合は、この記事をチェックしてください。

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

トークン化ロードマップ

前述したように、JWT は最初の本来の目的としてユーザー認証を目的としています。基本的に、世代ロードマップ全体には 3 つの主要なステップがあります。

  • sqlalchemyを使用して構築されたユーザーデータベースにトークン列を作成します
  • ユーザー登録アクションからの新しいサインアップ ユーザー トークンをエンコードする
  • ユーザー認証を必要とする任意の Flask ルートに適用できる token_required 関数を構築します。

トークン列、エンコードとデコード

スクラルケミーを例に挙げます。まず最初に、すべてのユーザーが持つ一意のトークンを格納する列を追加する必要があります。ネーミングには、例えば「トークン」を設定します。しかし、それはあなたの好みによります。 Flask データベースの詳細については、別の記事で公開する予定です。

2 番目のステップは、新しいユーザーのサインアップ ルートに JWT エンコード メソッドを追加することです。これは、新規ユーザーが登録を完了したときに、そのユーザーに一意の API トークンを割り当てる必要があるためです。ここでは、サインアップのためにユーザーに送信する招待コードのみをトークン エンコード参照として選択します。別の参照点を使用することも、複数の参照点を使用してより複雑にすることもできます。

最後になりましたが、データベース ユーザー クラス メソッドを使用して、新しいトークンを新しいユーザーに追加します。それは彼女または彼に特有のものです。

トークンが必要 – ラップしてデコードします

これで、トークンが必要な関数を構築する準備が整いました。ユーザー認証が必要なルートに割り当てる必要があるため、これが必要になります。目的は、login_required と同じです。

この関数の重要なコンポーネントは、トークンをデコードし、その値が以前に新規サインアップしたときに作成されたものと一致するかどうかを確認することです。

デコードセクションに入る前に、関数ツールとラップを行うモジュールをインポートする必要があります。

Wraps 関数は、Python の functools モジュールの一部です。 _name__、__doc__、docstring などの属性をコピーすることで、デコレーターのラッパー関数をラップして更新します。

def token_required(f):

@wraps(f)

def decorate(*args, **kwargs):

装飾された関数の docstring と名前を修正するデコレーターとしてラップを使用できます。なぜこれが重要なのでしょうか?これは最初は奇妙な特殊なケースのように聞こえますが、自分以外の誰かが使用する API またはコードを作成している場合、これは重要になる可能性があります。その理由は、Python のイントロスペクションを使用して他人のコードを理解すると、装飾された関数が間違った情報を返すためです。

2 つのコンポーネント

まず最初に、API エンドポイントにトークン パラメーターを追加し、トークンなどの名前を付ける必要があります。ユーザーが API を呼び出すときは、www.abe.com?token=12324343 のように、このパラメーターに一意のトークンを追加します。

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

次に、トークンが欠落しているか無効であるか、または正しいかどうかの条件を作成できます。たとえば、正しいステータスを取得するには、デコードされたトークンがユーザーのサインアップ時に作成された public_id と一致する必要があります。したがって、ユーザー public_id をフィルタリングして除外することでデータベースにクエリを実行できます。

ID がデコードされたトークンと一致しない場合、応答メッセージは無効です。または、API エンドポイントにトークンが欠落している場合、応答メッセージはトークンが欠落していることを示します。したがって、API を使用するすべてのユーザーが認証されていることを保証します。

Flask JWT の完全な Python スクリプト サンプル

第 54 章 – Flask JWT を利用してユーザー ID をトークン化し、ユーザーを認証するの完全な Python スクリプトに興味がある場合は、 「第 54 章」というメッセージを追加してニュースレターを購読してください。 。スクリプトはすぐにあなたのメールボックスに送信されます。

お問い合わせ

第 54 章 – Flask JWT を利用してユーザー ID をトークン化し、ユーザーを認証するを楽しんで読んでいただければ幸いです。もしそうなら、以下にリストされているいずれかの方法で私たちをサポートしてください。それは常に私たちのチャンネルに役立ちます。

  • PayPal ( paypal.me/Easy2digital ) を通じて私たちのチャンネルをサポートし、寄付してください。
  • 私のチャンネルを購読し、 Easy2Digital Youtube チャンネルの通知ベルをオンにしてください。
  • Easy2Digital Facebook ページをフォローして「いいね!」してください
  • ハッシュタグ #easy2digital を付けて記事をソーシャル ネットワークで共有してください
  • Easy2Digital 10% OFF 割引コード ( Easy2DigitalNewBuyers2021)を使用して製品を購入します
  • Easy2Digital の最新記事、ビデオ、割引コードを受け取るには、毎週のニュースレターに登録してください。

よくある質問:

Q1: Flaskとは何ですか?

A: FlaskはPythonで書かれた軽量なWebフレームワークです。

Q2: Flaskの主な特徴は何ですか?

A: Flaskはシンプルで使いやすく、柔軟性があります。また、拡張性が高く、自分のニーズに合わせてカスタマイズすることができます。

Q3: Flaskを使用するために必要なものは何ですか?

A: Flaskを使用するためにはPythonのインストールが必要です。また、必要に応じて追加のパッケージもインストールする必要があります。

Q4: Flaskの使い方を教えてください。

A: Flaskを使用するには、まずアプリケーションを作成し、ルートURLとビュー関数を定義します。その後、アプリケーションを実行してウェブサーバーを起動します。

Q5: Flaskでテンプレートを使用する方法はありますか?

A: はい、FlaskではJinja2というテンプレートエンジンを使用することができます。テンプレートを作成し、ビュー関数からテンプレートにデータを渡すことができます。

Q6: Flaskでデータベースを使用する方法はありますか?

A: はい、FlaskではSQLAlchemyなどの拡張機能を使用してデータベースを操作することができます。データベースの接続やクエリの実行などを簡単に行うことができます。

Q7: Flaskでセッション管理をする方法はありますか?

A: はい、Flaskではセッションを管理するための拡張機能が提供されています。セッションデータの保存や取得、削除などを簡単に行うことができます。

Q8: FlaskでAPIを作成する方法はありますか?

A: はい、FlaskではFlask-RESTfulなどの拡張機能を使用してAPIを作成することができます。APIのエンドポイントやHTTPメソッド、レスポンスの形式などを定義してAPIを構築することができます。

Q9: Flaskで認証機能を実装する方法はありますか?

A: はい、FlaskではFlask-Loginなどの拡張機能を使用して認証機能を実装することができます。ユーザーのログイン、ログアウト、アクセス制限などを簡単に行うことができます。

Q10: Flaskのコミュニティサポートはどのようなものですか?

A: Flaskは非常にアクティブなコミュニティを持っており、公式ドキュメントやオンラインフォーラム、チャットグループなどでサポートが提供されています。質問や問題があれば、コミュニティのメンバーから助けを得ることができます。