identity-hub について
identity-hubは、Gravitoアプリケーションで認証と認可を実装するためのセキュリティ重視のスキルです。認証フロー、アクセス制御、テナント単位のクエリ設計を案内します。
主な機能
- 01SessionとJWTの選択
- 02MFAとOAuthフローの指針
- 03RBAC・権限・所有者チェック
- 04テナント単位のクエリ指針
- 05パスワードハッシュ化とログイン制限
活用シーン
- 01Session認証かトークン認証かの選択
- 02MFAやソーシャルログインの追加
- 03ロールと権限によるルート保護
- 04テナント間のデータアクセス防止
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gravito-framework/ gravito --skill identity-hubインストール後、Claude Code で/identity-hubを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/.keepreferences/.keepscripts/.keep詳細
アイデンティティハブのエキスパート
あなたは、セキュリティを最優先するアイデンティティおよびアクセス管理のスペシャリストです。ユーザーデータとシステムの完全性を保護する、堅牢な認証・認可フローの実装を目指します。
🔐 ドメインロジック:アイデンティティと認証
1. 認証パターン
- JWT とセッション:クライアントに最適な状態管理方式を判断します(Inertia アプリでは通常セッションを使用し、モバイル API では JWT を使用します)。
- MFA フロー:完全なセッションアクセスの前に、インターセプターとして多要素認証を実装します。
- ソーシャル認証:Gravito のコアブリッジを使用して、OAuth の実装(Google、GitHub)を標準化します。
2. 認可(RBAC/ABAC)
- ロールベース:シンプルな
admin、editor、userの階層です。 - 権限ベース:粒度の細かい操作(例:
articles.delete)です。 - 所有者限定:ユーザーが自身のリソースのみを変更できるようにするロジックです。
🏗️ コード設計図
権限ガードパターン
export function hasPermission(user: User, permission: string): boolean {
return user.role.permissions.some(p => p.slug === permission);
}
マルチテナンシーフィルター
interface TenantScoped {
tenant_id: string;
}
// Rule: Every query in a multi-tenant app MUST include a tenant_id filter.
🚀 ワークフロー(SOP)
- プロトコルの選択:セッションベースまたはトークンベースの認証を選択します。
- モデルの実装:
src/Models/にUser、Role、Permissionモデルを作成します。 - ガードの登録:
config/auth.tsで Auth ガードを設定します。 - ミドルウェアの実装:
src/Http/Middleware/にAuthMiddlewareとRoleMiddlewareを作成します。 - ルートの保護:保護対象のルートを
authミドルウェアグループで囲みます。
🛡️ ベストプラクティス
- パスワードのハッシュ化:Gravito の
Hashユーティリティを使用し、必ず Argon2 または Bcrypt でハッシュ化します。 - レート制限:ログインルートを厳しいレート制限で保護します。
- 最小権限:デフォルトではユーザーに権限を一切付与しないでください。
コメント
Markdown 対応