identity-access について
アイデンティティおよびアクセス管理のリファレンススキルです。認証、認可、OAuth 2.0、OIDC、JWT、RBACに加え、パスワード、セッション、トークン、MFAの実践項目を扱います。
主な機能
- 01認証と認可の概念
- 02OAuth 2.0 フローのリファレンス
- 03OIDC と JWT の構造
- 04RBAC のロールと権限の例
- 05パスワードとセッションのセキュリティ指針
- 06トークンと MFA の実践項目
活用シーン
- 01Web、モバイル、マシン間で認証フローを選ぶ
- 02アプリケーションのロールとリソース権限を計画
- 03パスワード、セッション、トークンの安全性を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dralgorhythm/ claude-agentic-framework --skill identity-accessインストール後、Claude Code で/identity-accessを入力して読み込まれたか確認します。
詳細
アイデンティティとアクセス管理
認証と認可
- 認証(AuthN):あなたは誰ですか?
- 認可(AuthZ):何ができますか?
OAuth 2.0 フロー
認可コード(Web アプリ)
User -> App -> Auth Server -> User Login
User -> Auth Server -> App (code)
App -> Auth Server (code + secret) -> tokens
PKCE(モバイル/SPA)
認可コードと同様ですが、シークレットの代わりにコードベリファイア/チャレンジを使用します。
クライアントクレデンシャル(マシン間)
App -> Auth Server (client_id + secret) -> token
OpenID Connect(OIDC)
OAuth 2.0 にアイデンティティレイヤーを追加したものです。
主な追加要素:
- ID トークン(ユーザー情報を含む JWT)
- UserInfo エンドポイント
- 標準クレーム(sub、email、name)
JWT の構造
header.payload.signature
Header: {"alg": "RS256", "typ": "JWT"}
Payload: {"sub": "123", "exp": 1234567890}
Signature: RSASHA256(header + payload, privateKey)
ロールベースアクセス制御(RBAC)
interface Role {
name: string;
permissions: Permission[];
}
interface Permission {
resource: string;
action: 'read' | 'write' | 'delete';
}
function hasPermission(user: User, resource: string, action: string): boolean {
return user.roles.some(role =>
role.permissions.some(p =>
p.resource === resource && p.action === action
)
);
}
ベストプラクティス
パスワード
- 12 文字以上にする
- Argon2id または bcrypt でハッシュ化する
- 平文で保存しない
- レート制限を実装する
セッション
- Secure 属性と HttpOnly 属性を設定した Cookie を使用する
- CSRF 対策を実装する
- 適切な有効期限を設定する
- ログアウト時に無効化する
トークン
- 有効期間の短いアクセストークン(15 分)
- 有効期間の長いリフレッシュトークン(数日)
- リフレッシュトークンをローテーションする
- 安全に保存する(localStorage は使用しない)
MFA
- TOTP(Google Authenticator)をサポートする
- WebAuthn/パスキーを検討する
- 復旧用のバックアップコードを用意する
コメント
Markdown 対応