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

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

例
前提条件
- 手順を進める前に、最新バージョンの 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 でアプリを設定する
- Dashboard > Applications > Applications に移動し、Create Application をクリックします。
- 新しいアプリに名前を付け、Regular Web Applications を選択して、Create をクリックします。
-
新しいアプリの Settings で、Allowed Callback URLs に
http:/localhost:3000/callbackを追加します。 -
Allowed Logout URLs に
http:/localhost:3000を追加します。 - Save Changes をクリックします。
- Dashboard > Authentication > Social に移動し、いくつかのソーシャル接続を設定します。Connections タブの Application オプションで、これらをアプリに対して有効にします。この例では、username/password データベース、Facebook、Google、X を使用します。
- Settings 画面で、上部に表示されているドメインとクライアントIDを控えておきます。
-
アプリケーションで設定する必要がある値が 2 つあります。
.envファイルを再度開き、これらの値を設定します。
アプリを実行する
- サーバーと環境の設定が完了したら、アプリケーションを開いているブラウザーウィンドウを確認します。ブラウザーを閉じてサーバーを停止している場合は、ターミナルで次のコマンドを実行してアプリケーションを再起動します。
npm run dev - ブラウザーで
http://localhost:3000を開きます。見た目はこれまでと変わりませんが、今回は Call API ボタンをクリックすると、ユーザーがログインしていないという警告が表示されます。また、API 呼び出しが拒否されているため、以前のように “Hello, World” メッセージは表示されません。 - Log in now をクリックしてログインします。認証が完了するとアプリに戻り、ログイン状態が反映された UI が表示されます。再度 Call API ボタンを押してサーバーへの API 呼び出しを実行すると、今度は正常に動作します。
- ページ上部の Profile リンクをクリックすると、IDトークンから取得したユーザー情報が表示されます。