Skip to main content
このQuickstartは現在ベータ版です。ぜひフィードバックをお寄せください!
前提条件:
  • Node.js 20 LTS 以降
  • npm 10+ または yarn 1.22+ または pnpm 8+
  • 任意: jq - Auth0 CLI のセットアップ用、および安全なシークレットを生成するための openssl
  • Hono プロジェクトでは Hono >= 3.x を使用してください (ピア依存関係)

はじめに

この Quickstart では、@auth0/auth0-hono を使って Hono アプリケーションを保護するための、最小限かつ推奨される方法を紹介します。内容は、リポジトリで推奨されているパターン、つまり環境変数ベースの設定、app.use(auth0(...)) ミドルウェア、そして必要なルートだけを保護するための requiresAuth() に沿っています。
1

新しいHonoアプリケーションを作成

create-hono ユーティリティを使って、新しい Hono アプリケーションを作成します。
nodejs テンプレートを選択
2

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

Auth0のミドルウェアをインストールします。
このクイックスタートでは、.env ファイルから環境変数を読み込むために dotenv パッケージを使用します。dotenv をローカルにインストールするには:
あるいは、依存関係を追加したくない場合は、node’s --env-file フラグを使ってプロセス起動時に env ファイルを読み込むこともできます。これにより、dotenv のインストールやインポートを省略できます。package.jsonstart スクリプトを次のように変更します。
3

Auth0 アプリケーションを作成する

Auth0 テナントに Auth0 アプリケーション (Regular Web Application) を作成し、DomainClient IDClient Secret をプロジェクトの環境変数として設定します。 CLI コマンドを実行して Auth0 アプリを自動的に設定することも、Auth0 Dashboard から手動で設定することもできます。
プロジェクトのルートディレクトリで次のシェルコマンドを実行し、Auth0 アプリを作成して .env ファイルを生成します。
このコマンドにより、次の処理が行われます。
  1. 認証済みかどうかを確認します (必要に応じてログインを求めます)
  2. http://localhost:3000 用に設定された Auth0 Regular Web Application を作成します
  3. AUTH0_DOMAINAUTH0_CLIENT_IDAUTH0_CLIENT_SECRETAUTH0_SESSION_ENCRYPTION_KEYBASE_URL を含む .env ファイルを生成します
4

Auth0 ミドルウェアで Hono Webサーバーをセットアップする

index.ts ファイル内の初期テンプレートを、次の例に置き換えてください。このコード例では、環境変数を自動的に読み込む設定不要の構成を示しており、デフォルトで公開ルートを持つ auth0() ミドルウェアと、requiresAuth() を使用する保護されたルートを作成します。
./src/index.ts
5

アプリを起動する

サーバーを起動し、http://localhost:3000を開きます。
チェックポイントHono アプリは http://localhost:3000 で実行されているはずです。/ ルートは公開されています。/profile にアクセスすると、ログイン (未認証の場合) にリダイレクトされ、認証に成功するとプロファイルデータが返されるはずです。

トラブルシューティング

高度な使い方

  • 選択的な保護: app.use(auth0({ authRequired: false })) を使うとルートはデフォルトで公開され、app.use('/private/*', requiresAuth()) を使うと特定のパスだけを保護できます。
  • サイレントログイン: attemptSilentLogin() ミドルウェアを使ってサイレント認証を試みることで、UX を向上させます。
  • カスタムのログインフロー: login({...}) を呼び出して、引き継ぐクエリパラメータ、redirectAfterLogin、またはサイレントログインのオプションをカスタマイズします。
  • トークン管理: ミドルウェアでは、セッション経由でアクセストークンと ID トークンを利用できます。スコープは最小権限の原則に従って設定し、リフレッシュトークンは安全にローテーションしてください。

ベストプラクティスとセキュリティ

  • 機密情報をソース管理に含めず、環境変数を使用してください。
  • 32文字以上の AUTH0_SESSION_ENCRYPTION_KEY を使用してください。
  • 本番環境では、cookie の securetrue に設定し、適切な sameSite ポリシーを指定してください。
  • トークンのスコープは必要最小限にし、API 用のアクセストークンをリクエストする場合にのみ audience を使用してください。
  • 認証固有のエラーを適切に処理できるよう、app.onErrorAuth0Error を捕捉してください。