- 独自のバックエンド経由でクライアントに配信される。
- バックエンドと同じドメインを使用している。
- 認証が必要な API 呼び出しをバックエンドに対して行う。
仕組み

- ユーザーがブラウザーで保護されたルートにアクセスするか、認証ステップの開始が必要な操作を行います (たとえば Login ボタンをクリックするなど)
- ブラウザーのクライアントは、ユーザーが行った操作に応じて、バックエンド上の
/loginルート、または保護されたルートにリダイレクトされます - バックエンドは、認可サーバーの
/authorizeエンドポイントへのリクエストを作成し、ブラウザーのクライアントをそこへリダイレクトします - ユーザーは、認可サーバーが提示する方法で認証を求められます
- 認可サーバーは、URL エンコードされたフォーム POST として、トークンをリダイレクトURIに送信します。バックエンドは、ボディーデータを解析することでそれらのトークンを取得できます。

例
前提条件
- この手順を進めるには、最新バージョンの Node がインストールされていることを確認してください。
-
Node をインストールしたら、ソースコードをダウンロードまたはクローン して、ターミナルでプロジェクトフォルダを開いてください。
-
masterブランチは、認証を追加する前のアプリケーションの状態を表します。アプリケーションの最終版を参照したい場合は、with-oidcブランチをチェックアウトしてください。git checkout with-oidc
Node.jsアプリを初期化する
npm install を実行し、アプリケーションの依存関係をインストールします。アプリケーションを実行するには、npm run dev を実行します。これにより Express サーバーが起動します。ブラウザーで http://localhost:3000 にアクセスすると、アプリケーションを表示できます。
開発サーバーでは nodemon を使用しているため、ファイルの変更を検出すると自動的に再起動します。
アプリケーションを試す

環境を設定する
express-openid-connect にいくつかの環境変数が必要です。このアプリケーションでは、これらの変数を .env ファイルで指定できます。プロジェクトのルートディレクトリに .env ファイルを作成し、次の内容を設定します。
.env
Auth0 でアプリを設定する
- Auth0 Dashboard > アプリケーション > アプリケーション に移動し、Create Application をクリックします。
- 新しいアプリケーションに名前を付け、従来型Webアプリケーション を選択して、Create をクリックします。
-
新しいアプリの 設定 で、Allowed Callback URLs に
http:/localhost:3000/callbackを追加します。 -
Allowed Logout URLs に
http:/localhost:3000を追加します。 - 変更を保存 をクリックします。
- Auth0 Dashboard > Authentication > Social に移動し、いくつかのソーシャル接続を設定します。接続 タブの アプリケーション オプションで、それらをこのアプリで有効にします。この例では、ユーザー名/パスワードのデータベース接続、Facebook、Google、X を使用します。
- 設定 画面で、上部にあるドメインと Client ID を控えておきます。
-
アプリケーションで設定する必要がある値が 2 つあります。
.envファイルをもう一度開き、これらの値を設定します。
アプリを実行する
- サーバーと環境の設定が完了したら、アプリケーションを開いているブラウザーウィンドウを探します。ブラウザーを閉じてサーバーも停止している場合は、アプリケーションを再起動するためにターミナルで次を実行します。
npm run dev - ブラウザーで
http://localhost:3000を開きます。見た目はこれまでと同じですが、今回は Call API ボタンをクリックすると、ユーザーがログインしていないという警告が表示されます。また、API 呼び出しが拒否されるため、以前のように “Hello, World” メッセージは表示されません。 - Log in now をクリックしてログインします。認証が完了するとアプリに戻り、ログイン状態が反映された UI が表示されます。再度 Call API ボタンを押してサーバーに API 呼び出しを行うと、今度は正常に動作します。
- ページ上部の Profile リンクをクリックすると、ID トークンから取得したユーザー情報が表示されます。