メインコンテンツまでスキップ

フェデレーション(外部IdP連携)


前提知識

このドキュメントを理解するには、以下の基礎知識が役立ちます:


概要

idp-serverは、フェデレーション(外部IdP連携)をサポートします。

フェデレーションとは、外部のアイデンティティプロバイダー(IdP)と連携し、ユーザーが外部サービスのアカウントでログインできる機能です。

ユーザー ──[ログイン]──> idp-server ──[リダイレクト]──> 外部IdP (Google/Azure AD等)

┌───────────────────[IDトークン]────────────────────────┘

v
idp-server ──[セッション作成]──> ユーザー

idp-serverでは以下のような用途に対応できます:

  • ソーシャルログイン: Google、GitHub、LINE等でのログイン
  • エンタープライズSSO: Azure AD、Okta、Auth0等との連携
  • B2B連携: 取引先企業のIdPとの連携

なぜフェデレーションが必要か

ユーザー視点のメリット

メリット説明
利便性既存アカウントでログイン、新規登録不要
パスワード管理不要サービスごとのパスワードを覚える必要がない
信頼性大手IdPのセキュリティを活用

サービス提供者視点のメリット

メリット説明
登録率向上ログインの手間が減り、登録率が向上
セキュリティ向上大手IdPのMFA、不正検知を活用
運用コスト削減パスワード管理、リセット対応の負荷軽減

エンタープライズ視点のメリット

メリット説明
SSO実現社内システム間のシングルサインオン
ID管理の一元化入退社時のアカウント管理を一元化
コンプライアンス企業のセキュリティポリシーを適用

idp-serverにおけるフェデレーション

シーケンス

対応プロトコル

プロトコル用途対応IdP例
OpenID Connect標準的なフェデレーションGoogle, Azure AD, Okta, Auth0
OAuth 2.0アクセストークン取得GitHub, Twitter

設定方法: フェデレーション設定ガイド


ユーザー管理

アカウント紐付け

外部IdPのアカウントとidp-serverのユーザーを紐付ける方法:

外部IdP認証

v
ユーザー存在?

├──[存在]──> アカウント紐付け ──┐
│ │
└──[新規]──> ユーザー作成 ─────┤

v
セッション作成

紐付けの種類:

  • 自動作成: 初回ログイン時に自動でユーザー作成
  • 事前紐付け: 管理者が事前にユーザーと外部アカウントを紐付け
  • ユーザー紐付け: ユーザーが自分で既存アカウントと紐付け

属性マッピング

外部IdPから取得した属性をidp-serverのユーザー属性にマッピングします。

マッピングの目的:

  • 外部IdPのユーザー情報(UserInfo/IDトークン)をidp-serverのユーザー属性に変換
  • JSONPathによる柔軟なマッピングで、ネストした属性も対応可能

主要なマッピング対象:

属性用途
sub外部IdPでのユーザー識別子(統合キーとして使用)
emailメールアドレス(統合キーとして使用可能)
name表示名
pictureプロフィール画像URL
カスタム属性部署、従業員IDなどIdP固有の属性

セキュリティ考慮事項

トークン検証

外部IdPから受け取るIDトークンは必ず検証します:

  • 署名検証: IdPの公開鍵で署名を検証
  • issuer検証: 期待するIdPからのトークンか確認
  • audience検証: 自分のclient_id宛のトークンか確認
  • 有効期限検証: トークンが有効期限内か確認

セキュリティリスクと対策

リスク対策
アカウント乗っ取りメール検証済みの属性のみ信頼
IdP偽装issuer、署名の厳密な検証
トークンリプレイnonce、stateパラメータの使用

信頼できるIdPの選定

IdP選定時の考慮事項:

  • email_verified属性: メール検証済みの属性のみ信頼
  • 許可ドメイン: 特定のドメインのみ許可(エンタープライズ用途)
  • IdPの信頼性: 大手IdPまたは検証済みのIdPを使用

ユースケース

1. ソーシャルログイン

一般消費者向けサービスでGoogle、LINE等でのログインを提供。

メリット:

  • 登録率の向上
  • パスワード管理不要

2. エンタープライズSSO

企業内システムでAzure ADとのSSOを実現。

メリット:

  • 社員は一度のログインで複数システムにアクセス
  • IT部門はID管理を一元化

3. B2B連携

取引先企業のIdPと連携し、取引先社員がアクセス可能に。

メリット:

  • 取引先のID管理ポリシーを尊重
  • アカウント発行の手間を削減

関連ドキュメント

設定

How-to

実装


参考仕様