auth0-express
Express.jsアプリケーションにログイン・ログアウト・保護ルートなどの認証機能を追加する際に使用します。`express-openid-connect`を統合し、セッションベースの認証を実装します。
description の原文を見る
Use when adding authentication (login, logout, protected routes) to Express.js web applications - integrates express-openid-connect for session-based auth.
SKILL.md 本文
Auth0 Express Integration
express-openid-connect を使用して Express.js ウェブアプリケーションに認証を追加します。
前提条件
- Express.js アプリケーション
- Auth0 アカウントと設定済みのアプリケーション
- Auth0 がまだセットアップされていない場合は、まず
auth0-quickstartスキルを使用してください
使用しない場合
- シングルページアプリケーション - クライアント側認証には
auth0-react、auth0-vue、またはauth0-angularを使用 - Next.js アプリケーション - クライアントとサーバーの両方を処理する
auth0-nextjsスキルを使用 - モバイルアプリケーション - React Native/Expo には
auth0-react-nativeを使用 - ステートレス API - セッションベース認証の代わりに JWT 検証ミドルウェアを使用
- マイクロサービス - サービス間認証には JWT 検証を使用
クイックスタートワークフロー
1. SDK をインストール
npm install express-openid-connect dotenv
2. 環境を設定
Auth0 CLI での自動セットアップは、完全なスクリプトについて Setup Guide を参照してください。
手動セットアップ:
.env を作成:
SECRET=<openssl-rand-hex-32>
BASE_URL=http://localhost:3000
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
ISSUER_BASE_URL=https://your-tenant.auth0.com
シークレットを生成: openssl rand -hex 32
3. 認証ミドルウェアを設定
Express アプリ (app.js または index.js) を更新:
require('dotenv').config();
const express = require('express');
const { auth, requiresAuth } = require('express-openid-connect');
const app = express();
// Auth0 ミドルウェアを設定
app.use(auth({
authRequired: false, // すべてのルートで認証を必須にしない
auth0Logout: true, // ログアウトエンドポイントを有効化
secret: process.env.SECRET,
baseURL: process.env.BASE_URL,
clientID: process.env.CLIENT_ID,
issuerBaseURL: process.env.ISSUER_BASE_URL,
clientSecret: process.env.CLIENT_SECRET
}));
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
これにより以下が自動的に作成されます:
/login- ログインエンドポイント/logout- ログアウトエンドポイント/callback- OAuth コールバック
4. ルートを追加
// 公開ルート
app.get('/', (req, res) => {
res.send(req.oidc.isAuthenticated() ? 'Logged in' : 'Logged out');
});
// 保護されたルート
app.get('/profile', requiresAuth(), (req, res) => {
res.send(`
<h1>Profile</h1>
<p>Name: ${req.oidc.user.name}</p>
<p>Email: ${req.oidc.user.email}</p>
<pre>${JSON.stringify(req.oidc.user, null, 2)}</pre>
<a href="/logout">Logout</a>
`);
});
// ログイン/ログアウトリンク
app.get('/', (req, res) => {
res.send(`
${req.oidc.isAuthenticated() ? `
<p>Welcome, ${req.oidc.user.name}!</p>
<a href="/profile">Profile</a>
<a href="/logout">Logout</a>
` : `
<a href="/login">Login</a>
`}
`);
});
5. 認証をテスト
サーバーを起動:
node app.js
http://localhost:3000 にアクセスしてログインフローをテストします。
詳細ドキュメント
Setup Guide- 自動セットアップスクリプト、環境設定、Auth0 CLI の使用方法Integration Guide- 保護されたルート、セッション、API 統合、エラー処理API Reference- 完全なミドルウェア API、設定オプション、リクエストプロパティ
よくある間違い
| 間違い | 修正方法 |
|---|---|
| Auth0 ダッシュボードでコールバック URL を追加し忘れた | Allowed Callback URLs に /callback パスを追加 (例: http://localhost:3000/callback) |
| SECRET がない、または弱い | openssl rand -hex 32 で安全なシークレットを生成し、.env に SECRET として保存 |
| authRequired: true をグローバルに設定 | false に設定し、特定のルートで requiresAuth() ミドルウェアを使用 |
| Auth0 で SPA タイプのアプリを作成した | サーバー側認証には Regular Web Application タイプである必要があります |
| セッションシークレットがコードに公開されている | 常に環境変数を使用し、シークレットをハードコードしないでください |
| 本番環境で baseURL が間違っている | BASE_URL を本番ドメインと合致するように更新 |
| ログアウト時に returnTo を処理していない | Auth0 ダッシュボードで Allowed Logout URLs にドメインを追加 |
関連スキル
auth0-quickstart- 基本的な Auth0 セットアップauth0-migration- 別の認証プロバイダーから移行auth0-mfa- 多要素認証を追加auth0-cli- ターミナルから Auth0 リソースを管理
クイックリファレンス
ミドルウェアオプション:
authRequired- すべてのルートで認証を必須 (デフォルト: false)auth0Logout- /logout エンドポイントを有効化 (デフォルト: false)secret- セッションシークレット (必須)baseURL- アプリケーション URL (必須)clientID- Auth0 クライアント ID (必須)issuerBaseURL- Auth0 テナント URL (必須)
リクエストプロパティ:
req.oidc.isAuthenticated()- ユーザーがログインしているか確認req.oidc.user- ユーザープロファイルオブジェクトreq.oidc.accessToken- API 呼び出し用のアクセストークンreq.oidc.idToken- ID トークンreq.oidc.refreshToken- リフレッシュトークン
よくあるユースケース:
- 保護されたルート →
requiresAuth()ミドルウェアを使用 (ステップ 4 を参照) - 認証ステータスを確認 →
req.oidc.isAuthenticated() - ユーザー情報を取得 →
req.oidc.user - API を呼び出す →
Integration Guide
参考資料
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- auth0
- リポジトリ
- auth0/agent-skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/auth0/agent-skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。