Djangoアプリケーションにログインを追加する

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です。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。

ログアウトURLを構成する

ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。

2

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

この統合では、さまざまなライブラリー依存関係(Authlibなど)を追加します。プロジェクトディレクトリにrequirements.txtファイルを作成し、以下を含めます:

authlib ~= 1.0
django ~= 4.0
python-dotenv ~= 0.19
requests ~= 2.27

Was this helpful?

/

シェルから以下のコマンドを実行し、依存関係が利用できるようにします:

pip install -r requirements.txt

3

.envファイルを構成する

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

AUTH0_CLIENT_ID={yourClientId}
AUTH0_CLIENT_SECRET={yourClientSecret}
AUTH0_DOMAIN={yourDomain}

Was this helpful?

/

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

Was this helpful?

/

アプリケーションは、http://localhost:3000でブラウザーから開けるようになっています。

checkpoint.header

http://localhost:3000を訪問して、確認します。ログインのためにAuth0へルートするログインボタンがあり、ログイン後アプリケーションに戻るとプロファイル情報を確認できます。

Next Steps

Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.

This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:

  • Auth0 Dashboard - Learn how to configure and manage your Auth0 tenant and applications
  • Auth0 Marketplace - Discover integrations you can enable to extend Auth0’s functionality

Did it work?

Any suggestion or typo?

Edit on GitHub
Sign Up

Sign up for an or to your existing account to integrate directly with your own tenant.