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

はじめに

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

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

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

依存関係をインストール

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

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

Auth0 テナントに Auth0 アプリケーション (Regular Web Application) を作成し、ドメインクライアントIDクライアントシークレット をプロジェクトの環境変数に設定します。 CLI コマンドを実行して自動的に行うことも、Dashboard で手動で行うこともできます。
Auth0 アプリを作成し、.env ファイルを生成するには、プロジェクトのルートディレクトリで次のシェルコマンドを実行します。生成された .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 用のアクセストークンをリクエストする場合にのみ使用してください。
  • 認証固有のエラーを適切に処理できるよう、app.onErrorAuth0Error をキャッチしてください。