メインコンテンツへスキップ
このガイドは、Flaskを使ってビルドされた新規または既存のPython APIにAuth0を統合する方法を説明します。Auth0 DashboardでAPIをまだ作成していない場合は、対話型のセレクターを使ってAuth0 APIを新規作成します。そうでない場合は、統合したいプロジェクトを表す既存のAPIを選択することができます。または、Auth0 Dashboardを使って初めてAPIをセットアップする方法を使用の開始ガイドで確認することもできます。Auth0にあるAPIはそれぞれAPI識別子を使って構成され、アプリケーションのコードはAPI識別子をオーディエンスとしてアクセストークンを検証します。
Auth0を初めてご利用ですか? Auth0の仕組みと、OAuth 2.0フレームワークを用いたAPI認証と認可の実装について説明します。
1

アクセス許可を定義する

アクセス許可は、ユーザーの代わりに、提供されたアクセストークンを使ってどのようにしてリソースにアクセスできるのかを定義できるようにします。たとえば、ユーザーがマネージャーアクセスレベルを持つ場合には、messagesリソースに対して読み出しアクセスを付与し、管理者アクセスレベルを持つ場合には、書き込みアクセスを付与することができます。Auth0 Dashboardの[APIs]セクションにある**[Permissions(権限)]** ビューで使用可能なアクセス許可を定義することができます。
[Auth0 Dashboard]>[Applications(アプリケーション)]>[APIs]>[Specific API(特定のAPI]>[Permissions(権限)]タブ
以下の例ではread:messagesスコープを使用します。
2

依存関係をインストールする

requirements.txtに次の依存関係を追加します:
# /requirements.txt
flask

Authlib
3

JWTバリデーターを作成する

Authlibという名前のライブラリーを使用して、ResourceProtectorを作成します。これはFlaskデコレーターの一種で、該当するバリデーターを使ってリソース(APIルート)を保護します。バリデーターは、リソースに渡すアクセストークンに有効な署名とクレームがあることを検証します。AuthLibのJWTBearerTokenValidatorバリデーターに多少の変更を加えて、アクセストークンの検証要件が満たされるようにします。Auth0JWTBearerTokenValidatorを作成するには、domainaudience(API識別子)に渡すことが必要です。そうすると、トークンの署名を検証するのに必要な公開鍵が取得され、JWTBearerTokenValidatorクラスに渡されます。そして、クラスのclaims_optionsをオーバーライドし、トークンのexpiry、audience、issueクレームが要件を満たして有効であることを確認します。
4

Flaskアプリケーションを作成する

次に、3つのAPIルートを使ってFlaskアプリケーションを作成します。
  • /api/public:認証を必要としないパブリックエンドポイントです。
  • /api/private:有効なJWTアクセストークンを必要とするプライベートエンドポイントです。
  • /api/private-scoped:与えられたscopeを含む有効なJWTアクセストークンを必要とするプライベートエンドポイントです。
保護されたルートにはrequire_authデコレーターがあり、これは、以前に作成したAuth0JWTBearerTokenValidatorを使用するResourceProtectorです。Auth0JWTBearerTokenValidatorを作成するには、テナントのドメインと以前に作成したAPIのAPI識別子に渡します。private_scopedルートのrequire_authデコレーターは、追加の引数である"read:messages"を受け付けます。これは、以前に作成したアクセス許可(スコープ)について、アクセストークンをチェックします。

APIを呼び出す

APIを呼び出すにはアクセストークンが必要です。テスト用のアクセストークンは、API設定の**[Test(テスト)]** ビューから取得することができます。
[Auth0 Dashboard]>[Applications(アプリケーション)]>[API]>[Specific API(特定のAPI]>[Test(テスト)]タブ
要求のAuthorizationヘッダーにアクセストークンを指定します。
curl --request get \
--url 'http:///%7ByourDomain%7D/api_path' \
--header 'authorization: Bearer YOUR_ACCESS_TOKEN_HERE'

次のステップ

成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。
  • Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
  • auth0-python SDK - このチュートリアルで使用されているSDKをより詳しく説明します
  • Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます
I