このガイドは、Djangoを使ってビルドされた新規または既存のPython APIアプリケーションにAuth0を統合する方法を説明します。Auth0 DashboardでAPIをまだ作成していない場合は、対話型のセレクターを使ってAuth0 APIを新規作成します。そうでない場合は、統合したいプロジェクトを表す既存のAPIを選択することができます。または、Auth0 Dashboardを使って初めてAPIをセットアップする方法を使用の開始ガイドで確認することもできます。Auth0にあるAPIはそれぞれAPI識別子を使って構成され、アプリケーションのコードはAPI識別子をオーディエンスとしてアクセストークンを検証します。
Auth0を初めてご利用ですか? Auth0の仕組みと、OAuth 2.0フレームワークを用いたAPI認証と認可の実装について説明します。
1
アクセス許可を定義する
アクセス許可は、ユーザーの代わりに、提供されたアクセストークンを使ってどのようにしてリソースにアクセスできるのかを定義できるようにします。たとえば、ユーザーがマネージャーアクセスレベルを持つ場合には、![[Auth0 Dashboard]>[Applications(アプリケーション)]>[APIs]>[Specific API(特定のAPI]>[Permissions(権限)]タブ](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/ja-jp/cdy7uua7fh8z/1s3Yp5zqJiKiSWqbPSezNO/acef814282795bef6921535f044f96e9/Quickstarts_API.png)
messages
リソースに対して読み取りアクセスを付与し、管理者アクセスレベルを持つ場合には、書き込みアクセスを付与することができます。Auth0 Dashboardの[API]セクションにある**[Permissions(権限)]** ビューで使用可能なアクセス許可を定義することができます。以下の例ではread:messages
スコープを使用します。![[Auth0 Dashboard]>[Applications(アプリケーション)]>[APIs]>[Specific API(特定のAPI]>[Permissions(権限)]タブ](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/ja-jp/cdy7uua7fh8z/1s3Yp5zqJiKiSWqbPSezNO/acef814282795bef6921535f044f96e9/Quickstarts_API.png)
3
JWTバリデーターを作成する
Authlibという名前のライブラリーを使用して、ResourceProtectorを作成します。これはDjangoビューのデコレーターの一種で、該当するバリデーターを使ってリソース(APIビュー)を保護します。バリデーターは、リソースに渡すアクセストークンに有効な署名とクレームがあることを確認して検証します。AuthLibの
JWTBearerTokenValidator
バリデーターに多少の変更を加えて、アクセストークンの検証要件が満たされるようにします。Auth0JWTBearerTokenValidator
を作成するには、domain
とaudience
(API識別子)に渡すことが必要です。そうすると、トークンの署名を検証するのに必要な公開鍵が取得され、JWTBearerTokenValidator
クラスに渡されます。そして、クラスのclaims_options
をオーバーライドし、トークンのexpiry
、audience
、issue
クレームが要件を満たして有効であることを確認します。インタラクティブパネルからのコードを利用して、apiexample/validator.py
ファイルを作成します。4
APIビューを作成する
次に、
apiexample/views.py
に3つのAPIビューを作成します:/api/public
:認証を必要としないパブリックエンドポイントです。/api/private
:有効なJWTを必要とするプライベートエンドポイントです。/api/private-scoped
:与えられたscope
を含む有効なJWTを必要とするプライベートエンドポイントです。
require_auth
デコレーターがあり、これは、以前に作成したAuth0JWTBearerTokenValidator
を使用するResourceProtector
です。Auth0JWTBearerTokenValidator
を作成するには、テナントのドメインと以前に作成したAPIのAPI識別子に渡します。private_scoped
ルートのrequire_auth
デコレーターは、追加の引数である"read:messages"
を受け付けます。これは、以前に作成したアクセス許可(スコープ)について、アクセストークンをチェックします。5
URLマッピングを追加する
前の手順では、
要求の
views.py
ファイルにメソッドを追加しました。次に、DjangoのURL dispatcherを使用して、それらのメソッドをURLへマッピングします。URL dispatcherでは、URLパターンをビューにマッピングすることができます。apiexample/urls.py
ファイルにURLパターンを追加します。APIを呼び出す
APIを呼び出すにはアクセストークンが必要です。テスト用のアクセストークンは、APIの設定の**[Test(テスト)]** ビューから取得することができます。![[Auth0 Dashboard]>[Applications(アプリケーション)]>[API]>[Specific API(特定のAPI]>[Test(テスト)]タブ](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/ja-jp/cdy7uua7fh8z/6jeVBuypOGX5qMRXeJn5ow/dd20eb74e1e9079287762ce33dcf8e2d/Quickstart_Example_App_API.png)
Authorization
ヘッダーにアクセストークンを指定します。次のステップ
成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。- Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
- Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます