Auth0を使用すると、アプリケーションに手軽に認証を追加することができます。このガイドは、Node.js ExpressアプリケーションにExpress OpenID Connect
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/logout
に設定してください。2
ExpressのOpenID Connect SDKをインストールする
アプリケーションには、Auth0がメンテナンスするOIDC準拠のExpress向けSDKであるexpress-openid-connectパッケージが必要です。ターミナルで以下のコマンドを実行してExpress OpenID Connect SDKをインストールします:
ルーターを構成する
Express OpenID Connect SDKライブラリーは、認証ルートをアプリケーションに結びつけるために、auth
ルーターを提供します。以下の構成キーでルーターを構成する必要があります:authRequired
- すべてのルートに対して認証が必要かを制御します。auth0Logout
- Auth0ログアウト機能を使います。baseURL
- アプリケーションが作動するURLです。secret
- 長くて無作為な文字列です。issuerBaseURL
- 安全なURLとしてのドメインで、アプリケーションの設定で確認できます。clientID
- アプリケーションの設定で確認できるクライアントIDです。
LONG_RANDOM_STRING
に適した文字列は、コマンドラインのopenssl rand -hex 32
で生成できます。チェックポイント
ユーザーはライブラリーによって提供された/login
ルートを訪れることで、アプリケーションにログインできるようになりました。プロジェクトをlocalhost:3000
で実行している場合のリンクは、http://localhost:3000/loginです。3
ユーザープロファイルを表示する
ユーザーのプロファイルを表示するには、アプリケーションに保護されたルートがなければなりません。認証を必要とするルートに
requiresAuth
ミドルウェアを追加してください。このミドルウェアを使用するすべてのルートは有効なユーザーセッションをチェックし、ない場合にはユーザーをログインへリダイレクトします。チェックポイント
ユーザーはライブラリーによって提供された/logout
ルートを訪れることで、アプリケーションからログアウトできます。プロジェクトをlocalhost:3000
で実行している場合のリンクは、http://localhost:3000/logoutです。次のステップ
成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。- Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
- express-openid-connect SDK - このチュートリアルで使用されているSDKをより詳しく説明します
- Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます