Djangoアプリケーションにログインを追加する
Auth0を使用すると、アプリケーションに手軽に認証を追加して、ユーザープロファイル情報にアクセスすることができます。このガイドでは、Python DjangoアプリケーションにAuthlib SDKを使ってAuth0を統合する方法を説明します。
Auth0のサービスを利用するには、Auth0 Dashboadに設定済みのアプリケーションがある必要があります。Auth0アプリケーションは、開発中のプロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。
アプリケーションを構成する
対話型のセレクターを使ってAuth0アプリケーションを新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。
このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。
完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。
Callback URLを構成する
Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。
ログアウトURLを構成する
ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。
この統合では、さまざまなライブラリー依存関係(Authlibなど)を追加します。プロジェクトディレクトリにrequirements.txt
ファイルを作成し、以下を含めます:
authlib ~= 1.0
django ~= 4.0
python-dotenv ~= 0.19
requests ~= 2.27
Was this helpful?
シェルから以下のコマンドを実行し、依存関係が利用できるようにします:
pip install -r requirements.txt
次に、プロジェクトのディレクトリに.env
ファイルを作成します。このファイルにはクライアントキーやその他の構成情報が含まれます。
AUTH0_CLIENT_ID={yourClientId}
AUTH0_CLIENT_SECRET={yourClientSecret}
AUTH0_DOMAIN={yourDomain}
Was this helpful?
セットアップ済みのDjangoアプリケーションがある場合は、次の手順へスキップしてください。新しいアプリケーションプロジェクトには、次のコマンドを実行します:
django-admin startproject webappexample
新しいプロジェクトフォルダに変更します:
cd webappexample
webappexample/settings.py
ファイルを開いて.env
値を確認します。
ファイルの上部にos
インポートとdotenv
インポートを追加します。
次に、BASE_DIR
定義の下にTEMPLATE_DIR
変数を追加します。
次にTEMPLATES
変数を見付けてDIRS
値を更新し、当社のTEMPLATE_DIR
ストリングを追加します。これにより、後の手順で作成するテンプレートファイルのパスが定義されます。この配列のすべてのコンテンツは同じにしておいてください。
ファイルの最後にAuth0の構成を読み込むコードを追加します。
アプリケーションの作成を始めるには、IDEでwebappexample/views.py
ファイルを開きます。
アプリケーションに必要なすべてのライブラリーをインポートします。
Auth0でアプリケーションの認証を処理するために、Authlibを構成できるようになりました。
AuthlibのOAuthregister()
メソッドで使用できる構成オプションの詳細については、Authlibのドキュメント
この例では、アプリケーションにlogin、callback、logout、indexの4つのルートを追加します。
login
- アプリへの訪問者は/login
ルートを訪ねる時、Auth0に到達して認証フローを開始します。callback
- ユーザーはAuth0でログインを完了した後、/callback
ルートでアプリケーションに戻ります。このルートはユーザーのためにセッションを保存し、戻ってきた時に再度ログインする必要性を回避します。logout
-/logout
ルートは、ユーザーをアプリケーションからサインアウトさせます。アプリのユーザーセッションを消去し、Auth0ログアウトエンドポイントにリダイレクトして、セッションがもう保存されていないことを保証します。その後、アプリケーションは、ユーザーをホームルートにリダイレクトします。index
- ホームルートは認証されたユーザーの詳細を表示したり、訪問者のサインインを許可したりします。
webappexample/urls.py
ファイルのコンテンツを右のコードに置き換えて、新規ルートに接続します。
これにより/login
、/callback
、/logout
、/
のルートが正しいハンドラーへルートされます。
次に、ホームページルートで使用するテンプレートファイルを作成します。
templates
と名付けたwebappexample
フォルダー内に新しいサブディレクトリを作成し、index.html
ファイルを作成します。
index.html
ファイルにはテンプレートコードが含まれており、ログインした際にユーザー情報を表示したり、ログアウトした際にログインボタンを表示したりします。
アプリケーションを実行する準備ができました。プロジェクトディレクトリからシェルを開き、以下を使用します:
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
Sign up for an or to your existing account to integrate directly with your own tenant.