このクイックスタートは現在ベータ版です。ぜひフィードバックをお寄せください。
前提条件:
- 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() に従います。
依存関係をインストール
Auth0 のミドルウェアをインストールします。このクイックスタートでは、また、依存関係を追加したくない場合は、Node.js の
.env ファイルから環境変数を読み込むために dotenv パッケージを使用します。dotenv をローカル環境にインストールするには:--env-file フラグを使用して、プロセスの起動時に env ファイルを読み込むこともできます。これにより、dotenv のインストールやインポートを省略できます。package.json の start スクリプトを次のように変更します。Auth0 アプリケーションを作成する
Auth0 テナントに Auth0 アプリケーション (Regular Web Application) を作成し、ドメイン、クライアントID、クライアントシークレット をプロジェクトの環境変数に設定します。
CLI コマンドを実行して自動的に行うことも、Dashboard で手動で行うこともできます。
- CLI
- Dashboard
Auth0 アプリを作成し、
.env ファイルを生成するには、プロジェクトのルートディレクトリで次のシェルコマンドを実行します。生成された .env を使用するか、必要に応じて値を手動で更新してください。Auth0 ミドルウェアを使用して Hono Webサーバーをセットアップする
index.ts ファイル内の初期テンプレートを、次の例に置き換えます。このコードは、環境変数を自動的に読み込むゼロコンフィグ設定を示しており、デフォルトで公開ルートを持つ auth0() ミドルウェアと、requiresAuth() を使用する保護されたルートを作成します。./src/index.ts
チェックポイント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 の
secureをtrueに設定し、適切なsameSiteポリシーを設定してください。 - トークンのスコープは最小限に抑え、オーディエンスは API 用のアクセストークンをリクエストする場合にのみ使用してください。
- 認証固有のエラーを適切に処理できるよう、
app.onErrorでAuth0Errorをキャッチしてください。