Skip to content
ciba logo

Ciba

ciba

CIBA(Client Initiated Backchannel Authentication)機能の開発・修正を行う際に使用。Poll/Push/Pingモード、Login Hint解決、FCM通知実装時に役立つ。

SKILL.md

Full skill instructions

CIBA(Client Initiated Backchannel Authentication)開発ガイド

ドキュメント

  • documentation/​docs/​content_06_developer-guide/​03-application-plane/​06-ciba-flow.md - CIBA実装ガイド
  • documentation/​docs/​content_03_concepts/​03-authentication-authorization/​concept-04-authorization.md - 認可概念(CIBA含む)
  • documentation/​docs/​content_10_ai_developer/​ai-31-extension-ciba.md - AI開発者向けCIBAガイド

機能概要

CIBAは、クライアントがバックチャネル経由でユーザー認証を要求するフロー。

  • 3つのモード: Poll(ポーリング)、Push(通知)、Ping(通知+ポーリング)
  • Login Hint解決: sub:, email:, phone: プレフィックスでユーザー特定
  • Binding Message: ユーザーへの確認メッセージ表示
  • ID Token Hint: 既存ID Tokenでユーザー特定
  • User Code: ユーザー入力コードによる認証
  • デバイス通知: FCM push通知

モジュール構成

libs/
├── idp-server-core-extension-ciba/          # CIBA拡張モジュール
│   └── .../​core/​extension/​ciba/
│       ├── handler/
│       │   └── CibaRequestHandler.java     # CIBA認証リクエスト処理
│       ├── CibaRequestContext.java         # CIBAリクエストコンテキスト
│       ├── grant/
│       │   ├── CibaGrant.java
│       │   ├── CibaGrantFactory.java
│       │   └── CibaGrantService.java       # CIBAグラント管理
│       ├── request/
│       │   └── BackchannelAuthenticationRequest.java
│       ├── response/
│       │   └── BackchannelAuthenticationResponse.java
│       └── repository/
│           └── CibaGrantRepository.java
│
├── idp-server-notification-fcm-adapter/      # FCM通知アダプター
│   └── .../​notification/​fcm/
│       └── FcmNotificationSender.java
│
└── idp-server-control-plane/                # 管理API
    └── .../​management/​ciba/
        └── CibaConfigManagementApi.java

CIBA認証リクエスト処理

idp-server-core-extension-ciba/​.../​core/​extension/​ciba/​handler/​CibaRequestHandler.java 内:

CibaRequestHandlerは、BackchannelAuthenticationRequestを処理し、 BackchannelAuthenticationResponseを生成します。

処理フロー(概念的):

  1. クライアント認証
  2. Login Hint解決(ユーザー特定)
  3. auth_req_id生成
  4. CibaGrant作成・保存
  5. デバイス通知(FCM)
  6. BackchannelAuthenticationResponse返却

CIBAグラント管理

idp-server-core-extension-ciba/​grant/ 内:

// CibaGrantは認証状態を管理
public class CibaGrant {
    AuthReqId authReqId;
    UserId userId;
    ClientId clientId;
    Scope scope;
    GrantStatus status;  // PENDING, AUTHENTICATED, EXPIRED

    public boolean isAuthenticated() {
        return status == GrantStatus.AUTHENTICATED;
    }
}

CibaGrantServiceとCibaGrantVerifierが、グラントのライフサイクルを管理します。

FCM通知

idp-server-notification-fcm-adapter/ モジュール内:

FCM (Firebase Cloud Messaging)を使用して、認証デバイスに通知を送信します。

E2Eテスト

e2e/​src/​tests/
├── spec/
│   ├── ciba_authentication_request.test.js   # CIBA認証リクエスト
│   ├── ciba_token_request.test.js            # CIBAトークンリクエスト
│   ├── ciba_push.test.js                     # Pushモード
│   ├── ciba_ping.test.js                     # Pingモード
│   └── ciba_discovery.test.js                # CIBA Discovery
│
├── scenario/​application/
│   └── scenario-04-ciba-mfa.test.js          # CIBA MFAシナリオ
│
├── usecase/​ciba/
│   ├── ciba-01-require-rar.test.js           # RAR必須
│   ├── ciba-02-multi-device-priority.test.js # マルチデバイス優先度
│   └── ciba-04-security-event-device-ids.test.js
│
└── monkey/
    └── ciba-monkey.test.js                   # CIBAファジングテスト

コマンド

# ビルド
./​gradlew :libs:idp-server-core-extension-ciba:compileJava
./​gradlew :libs:idp-server-notification-fcm-adapter:compileJava

# テスト
cd e2e && npm test -- spec/​ciba_authentication_request.test.js
cd e2e && npm test -- spec/​ciba_push.test.js
cd e2e && npm test -- usecase/​ciba/

トラブルシューティング

Login Hint解決失敗

  • プレフィックス(sub:, email:, phone:)が正しいか確認
  • ユーザーが存在するか確認

Pollモードでauthorization_pending

  • ユーザーがまだ認証を完了していない(正常動作)
  • interval秒待ってから再ポーリング

FCM通知が届かない

  • FCMトークンが登録されているか確認
  • Firebase設定(credentials.json)が正しいか確認
  • idp-server-notification-fcm-adapter モジュールが有効か確認

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View