Agent skill
onboarding
idp-serverプロジェクト初心者向けのオンボーディングガイド。プロジェクト全体像、学習ロードマップ、開発環境構築、最初のコントリビューションまでをサポート。
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/onboarding-hirokazu-kobayashi-k-idp-server
SKILL.md
idp-server オンボーディングガイド
クイックスタート
詳細なセットアップ手順は以下を参照:
documentation/docs/content_02_quickstart/quickstart-01-getting-started.md
このプロジェクトとは
idp-serverは、身元確認特化のエンタープライズ・アイデンティティプラットフォームです。
何ができるか
ユーザー認証
| 機能 | 説明 |
|---|---|
| パスワード認証 | 従来型のID/パスワード認証 |
| 多要素認証(MFA) | SMS OTP、Email OTP |
| パスワードレス認証 | FIDO2/WebAuthn、Passkey |
| FIDO-UAF | モバイルデバイス生体認証 |
| 外部IdP連携(SSO) | Google、Azure AD、カスタムOIDC |
認可・トークン
| 機能 | 説明 |
|---|---|
| OAuth 2.0 | Authorization Code、Client Credentials、Refresh Token |
| OpenID Connect | ID Token発行、UserInfo、Discovery |
| CIBA | バックチャネル認証(Poll/Push/Ping) |
| FAPI | 金融グレードAPI(Baseline/Advanced) |
身元確認(eKYC)
| 機能 | 説明 |
|---|---|
| 本人確認フロー | 外部eKYCサービス連携 |
| Verified Claims | OpenID Connect for IDA準拠 |
| 確認結果管理 | 身元確認結果の保存・参照 |
エンタープライズ機能
| 機能 | 説明 |
|---|---|
| マルチテナント | 組織・テナント単位の完全分離 |
| 管理API | テナント/クライアント/ユーザー管理 |
| セキュリティイベント | Slack/Email/Webhook通知、SSF対応 |
| 監査ログ | 全操作の記録・検索 |
| Verifiable Credentials | デジタル証明書発行 |
設定・カスタマイズ
| 機能 | 説明 |
|---|---|
| 認証ポリシー | クライアント/スコープ別の認証要件 |
| パスワードポリシー | 複雑性・有効期限・履歴管理 |
| セッション管理 | SSO、RP-Initiated Logout、Back-Channel Logout |
| カスタムクレーム | 任意の属性をトークンに追加 |
技術スタック
- Java 21+ / Spring Boot 3.x
- Gradle / PostgreSQL & MySQL
- Hexagonal Architecture + DDD
┌─────────────────────────────────────────────────────────────┐
│ idp-server │
├─────────────────────────────────────────────────────────────┤
│ OAuth 2.0 / OpenID Connect / CIBA / FAPI 準拠 │
│ マルチテナント対応 / eKYC連携 / Enterprise Ready │
└─────────────────────────────────────────────────────────────┘
学習ロードマップ
Phase 1: 基礎理解(1-2日)
Step 1.1: プロジェクト概要を読む
CLAUDE.md # 必読: プロジェクト概要
documentation/docs/content_01_intro/ # イントロダクション
Step 1.2: コンセプトを理解する
documentation/docs/content_03_concepts/
├── 01-foundation/ # 基盤
│ ├── concept-01-multi-tenant.md # マルチテナント
│ ├── concept-02-control-plane.md # 管理API
│ └── concept-03-client.md # クライアント
├── 02-identity-management/ # ID管理
├── 03-authentication-authorization/ # 認証・認可
│ ├── concept-01-authentication-policy.md
│ └── concept-04-authorization.md
└── 04-tokens-claims/ # トークン・クレーム
Step 1.3: OAuth 2.0/OIDC基礎(未経験の場合)
documentation/docs/content_04_protocols/
├── protocol-01-authorization-code-flow.md # 認可コードフロー
├── protocol-02-ciba-flow.md # CIBAフロー
├── protocol-03-introspection.md # トークンイントロスペクション
└── protocol-06-client-authentication.md # クライアント認証
Phase 2: アーキテクチャ理解(2-3日)
Step 2.1: レイヤー構造を理解する
┌─────────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ idp-server-springboot-adapter (Controller, Filter) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Application Layer │
│ idp-server-use-cases (EntryService) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Domain Layer │
│ idp-server-core (Handler, Service, Repository IF) │
│ idp-server-core-extension-* (CIBA, FAPI, IDA等) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Infrastructure Layer │
│ idp-server-core-adapter (Repository実装, SQL) │
│ idp-server-platform (共通基盤) │
└─────────────────────────────────────────────────────────────┘
Step 2.2: モジュール一覧
| モジュール | 役割 | 依存関係 |
|---|---|---|
idp-server-core |
OIDCコアエンジン | platform |
idp-server-platform |
共通基盤(JSON, HTTP, Mapper等) | なし |
idp-server-use-cases |
EntryService(ユースケース実装) | core, control-plane |
idp-server-control-plane |
管理API契約定義 | core |
idp-server-core-adapter |
永続化実装(PostgreSQL/MySQL) | core |
idp-server-springboot-adapter |
Spring Boot統合 | use-cases |
idp-server-core-extension-ciba |
CIBA拡張 | core |
idp-server-core-extension-fapi |
FAPI拡張 | core |
idp-server-core-extension-ida |
身元確認拡張 | core |
idp-server-authentication-interactors |
認証方式実装 | core |
idp-server-federation-oidc |
外部IdP連携 | core |
Step 2.3: 開発者ガイドを読む
documentation/docs/content_06_developer-guide/
├── 01-getting-started/ # 入門(サービス概要、アーキテクチャ、設計原則)
├── 02-control-plane/ # 管理API
├── 03-application-plane/ # OAuth/OIDCエンドポイント
├── 04-implementation-guides/ # 実装ガイド
├── 05-configuration/ # 設定
├── 06-patterns/ # 共通パターン
├── 07-troubleshooting/ # トラブルシューティング
└── 08-reference/ # リファレンス
Phase 3: 開発環境構築(半日)
詳細ガイド: documentation/docs/content_02_quickstart/quickstart-01-getting-started.md
Step 3.1: 必要なツール
bash
# Java 21+
java -version
# Gradle
./gradlew --version
# Node.js (E2Eテスト用)
node --version
npm --version
# Docker (DB用)
docker --version
Step 3.2: ビルド確認
bash
# フォーマット適用
./gradlew spotlessApply
# ビルド
./gradlew build
# 単体テスト
./gradlew test
Step 3.3: ローカル起動
bash
# Docker Compose でDB起動
docker-compose up -d
# アプリケーション起動
./gradlew :app:bootRun
Step 3.4: E2Eテスト実行
bash
cd e2e
npm install
npm test
Phase 4: コードリーディング(3-5日)
Step 4.1: 認可フローを追う(推奨開始点)
- エントリーポイント:
OAuthV1Api - EntryService:
OAuthFlowEntryService.authorize() - Handler:
AuthorizationRequestHandler - レスポンス生成:
AuthorizationResponse
libs/idp-server-springboot-adapter/
└── .../restapi/oauth/OAuthV1Api.java
libs/idp-server-use-cases/
└── .../application/enduser/OAuthFlowEntryService.java
libs/idp-server-core/
└── .../openid/authorization/handler/AuthorizationRequestHandler.java
Step 4.2: トークン発行フローを追う
TokenV1Api→TokenEndpointEntryServiceTokenRequestHandler→ 各GrantServiceOAuthTokenCreationServices→ トークン生成
Step 4.3: 管理APIパターンを理解
ManagementApi (契約IF)
↓
ManagementEntryService (ユースケース)
↓
ManagementHandler (ドメインロジック)
↓
Repository (永続化)
Phase 5: 最初のコントリビューション(1-2日)
Step 5.1: Good First Issue を探す
bash
gh issue list --label "good first issue" --state open
Step 5.2: 開発フロー
bash
# 1. ブランチ作成
git checkout -b feature/issue-番号-説明
# 2. 実装
# 3. フォーマット
./gradlew spotlessApply
# 4. テスト
./gradlew test
cd e2e && npm test -- --grep "関連テスト"
# 5. コミット
git add -A
git commit -m "feat: 説明"
# 6. PR作成
gh pr create
Step 5.3: コーディング規約
| ルール | 説明 |
|---|---|
| Tenant第一引数 | Repository操作は常にTenantを第一引数に |
| 値オブジェクト優先 | String/Map濫用禁止 |
| Validator/Verifier | void + throw パターン |
| 両DB対応 | PostgreSQL + MySQL両方実装 |
よく使うスキル
開発時に以下のスキルを活用してください:
| スキル | 用途 |
|---|---|
/architecture |
アーキテクチャ・レイヤー構造 |
/authentication |
認証機能実装 |
/authorization-endpoint |
認可エンドポイント |
/token-management |
トークン発行・管理 |
/control-plane |
管理API開発 |
/federation |
外部IdP連携 |
/ciba |
CIBA実装 |
/identity-verification |
身元確認機能 |
困ったときは
ドキュメント検索
bash
# キーワードでドキュメント検索
grep -r "キーワード" documentation/docs/
コード検索
bash
# クラス名・メソッド名で検索
grep -r "クラス名" libs/
E2Eテストから学ぶ
e2e/src/tests/
├── spec/ # RFC/OIDC仕様テスト(プロトコル動作確認)
├── scenario/ # シナリオテスト(ユースケース確認)
├── usecase/ # ユースケーステスト(機能確認)
└── monkey/ # ファジングテスト(異常系確認)
Issue一覧確認
bash
gh issue list --state open
次のステップ
- Phase 1-3 を完了したら、実際にローカルで動かしてみる
- Phase 4 でコードを読みながら、デバッガで処理を追う
- Phase 5 で小さなIssueから始める
- わからないことがあれば、関連するスキルを参照する
目標: 2週間で「認可フロー全体を説明できる」レベルに到達
関連ドキュメント
CLAUDE.md- プロジェクト概要documentation/docs/content_06_developer-guide/- 開発者ガイドdocumentation/docs/content_02_quickstart/- クイックスタート.claude/skills/- 各機能のスキル
Didn't find tool you were looking for?