メインコンテンツへスキップ
Auth0を使用すると、アプリケーションに手軽に認証を追加して、ユーザープロファイル情報にアクセスすることができます。このガイドでは、Python DjangoアプリケーションにAuthlib SDKを使ってAuth0を統合する方法を説明します。
1

Auth0を構成する

Auth0のサービスを利用するには、Auth0 Dashboadに設定済みのアプリケーションがある必要があります。Auth0アプリケーションは、開発中のプロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。

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

対話型のセレクターを使ってAuth0アプリケーションを新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。

Callback URLを構成する

Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。
サンプルプロジェクトに沿って進めている場合は、http://localhost:3000``/callbackに設定してください。

ログアウトURLを構成する

ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。
サンプルプロジェクトに沿って進めている場合は、http://localhost:3000に設定してください。
2

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

この統合では、さまざまなライブラリー依存関係(Authlibなど)を追加します。プロジェクトディレクトリにrequirements.txtファイルを作成し、以下を含めます:
authlib ~= 1.0
django ~= 4.0
python-dotenv ~= 0.19
requests ~= 2.27
シェルから以下のコマンドを実行し、依存関係が利用できるようにします:
pip install -r requirements.txt
3

.envファイルを構成する

次に、プロジェクトのディレクトリに.envファイルを作成します。このファイルにはクライアントキーやその他の構成情報が含まれます。
AUTH0_CLIENT_ID={yourClientId}
AUTH0_CLIENT_SECRET={yourClientSecret}
AUTH0_DOMAIN={yourDomain}
4

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

セットアップ済みのDjangoアプリケーションがある場合は、次の手順へスキップしてください。新しいアプリケーションプロジェクトには、次のコマンドを実行します:
django-admin startproject webappexample
新しいプロジェクトフォルダに変更します:
cd webappexample
5

settings.pyを更新する

webappexample/settings.pyファイルを開いて.env値を確認します。ファイルの上部にosインポートとdotenvインポートを追加します。次に、BASE_DIR定義の下にTEMPLATE_DIR変数を追加します。次にTEMPLATES変数を見付けてDIRS値を更新し、当社のTEMPLATE_DIRストリングを追加します。これにより、後の手順で作成するテンプレートファイルのパスが定義されます。この配列のすべてのコンテンツは同じにしておいてください。ファイルの最後にAuth0の構成を読み込むコードを追加します。
6

アプリケーションをセットアップする

アプリケーションの作成を始めるには、IDEでwebappexample/views.pyファイルを開きます。アプリケーションに必要なすべてのライブラリーをインポートします。Auth0でアプリケーションの認証を処理するために、Authlibを構成できるようになりました。AuthlibのOAuthregister()メソッドで使用できる構成オプションの詳細については、Authlibのドキュメント
7

ルートハンドラーをセットアップする

この例では、アプリケーションにlogin、callback、logout、indexの4つのルートを追加します。
  • login - アプリへの訪問者は/loginルートを訪ねる時、Auth0に到達して認証フローを開始します。
  • callback - ユーザーはAuth0でログインを完了した後、/callbackルートでアプリケーションに戻ります。このルートはユーザーのためにセッションを保存し、戻ってきた時に再度ログインする必要性を回避します。
  • logout - /logoutルートは、ユーザーをアプリケーションからサインアウトさせます。アプリのユーザーセッションを消去し、Auth0ログアウトエンドポイントにリダイレクトして、セッションがもう保存されていないことを保証します。その後、アプリケーションは、ユーザーをホームルートにリダイレクトします。
  • index - ホームルートは認証されたユーザーの詳細を表示したり、訪問者のサインインを許可したりします。
8

ルートを登録する

webappexample/urls.pyファイルのコンテンツを右のコードに置き換えて、新規ルートに接続します。これにより/login/callback/logout/のルートが正しいハンドラーへルートされます。
9

テンプレートを追加する

次に、ホームページルートで使用するテンプレートファイルを作成します。templatesと名付けたwebappexampleフォルダー内に新しいサブディレクトリを作成し、index.htmlファイルを作成します。index.htmlファイルにはテンプレートコードが含まれており、ログインした際にユーザー情報を表示したり、ログアウトした際にログインボタンを表示したりします。
10

アプリケーションを実行する

アプリケーションを実行する準備ができました。プロジェクトディレクトリからシェルを開き、以下を使用します:
python3 manage.py migrate
python3 manage.py runserver 3000
アプリケーションは、http://localhost:3000でブラウザーから開けるようになっています。
チェックポイント
http://localhost:3000を訪問して、確認します。ログインのためにAuth0へルートするログインボタンがあり、ログイン後アプリケーションに戻るとプロファイル情報を確認できます。

次のステップ

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