Chuyển đến nội dung chính

レッスン 12: ID ブローカリングとソーシャル ログイン

ID プロバイダーの概念、ソーシャル ログイン構成 (Google、Facebook、GitHub、Apple、Microsoft)、OpenID Connect ID プロバイダー、SAML ID プロバイダー、OAuth v2 プロバイダー、Kubernetes ID プロバイダー。最初のログイン フロー、アカウント リンク、アイデンティティ プロバイダー マッパー、同期モード (インポート、強制、レガシー)、クライアント推奨 IdP (kc_idp_hint)、および IdP ログアウト フロー。

🔒 DevSecOps — レッスン 12 レッスン 12: ID ブローカリングとソーシャル ログイン

基本から上級までの Keycloak

パート 3: 認証、MFA、および ID ブローカリング

xdev.asia

1. ID ブローカリング — コンセプト

IDブローカリングによりKeycloakが役割を果たすことが可能になります認証仲介者アプリケーションと外部 ID プロバイダー (IdP) の間。各アプリケーションが独自の Google、Facebook、SAML IdP と統合されるのではなく、すべて Keycloak 経由で接続されます。

┌──────────┐     ┌──────────────┐     ┌──────────────────┐
│  My App  │ ──→ │   Keycloak   │ ──→ │  External IdP    │
│          │ ←── │  (Broker)    │ ←── │  (Google, SAML)  │
└──────────┘     └──────────────┘     └──────────────────┘

Flow:
1. User truy cập My App → redirect đến Keycloak
2. User chọn "Login with Google" trên Keycloak login page
3. Keycloak redirect đến Google OAuth2
4. User xác thực tại Google → redirect về Keycloak
5. Keycloak nhận identity, tạo/link user, issue token
6. User redirect về My App với Keycloak token

利点:

  • 集中化: KeycloakでIdPを一度設定すると、すべてのアプリで使用できるようになります
  • プロトコルブリッジング: アプリは OIDC を使用し、外部 IdP は SAML → Keycloak ブリッジを使用します
  • ユーザー管理: Keycloakは外部IdPのユーザーも含めて一元管理します
  • アカウントリンク: 複数の外部アイデンティティを 1 つの Keycloak アカウントにリンクします

2. ソーシャルログインを設定する

2.1 一般的なアイデンティティプロバイダーの設定

IdP を追加する場合、一般設定には次のものが含まれます。

設定説明する価値
エイリアスKeycloakのIdPの一意の識別子google.google.com, フェイスブック
表示名ログインページに表示される名前グーグル, Facebookでログイン
有効IdPの有効化/無効化の上
ログインページで非表示にするログイン ページから非表示にする (kc_idp_hint 経由でのみ使用)オフ
ストアトークン外部 IdP からのアクセス トークンを保存するオフ(外部 API 呼び出しが必要な場合にオンにします)
保存されたトークンの読み取り可能ユーザーは保存されたトークンを読み取ることができますオフ
電子メールを信頼するIdP からの電子メールを信頼します (再度確認する必要はありません)の上Google/マイクロソフト用
アカウントリンクのみアカウントをリンクするためにのみ使用され、新しいアカウントを作成することはできませんオフ
初回ログインの流れフローが最初のログインを処理しますブローカーへの最初のログイン
ログイン後のフローIdP 経由でログインするたびにフローが実行されますなし
同期モードユーザー属性を同期する輸入, 力。力、 または遺産

2.2 Google OAuth2

ステップ 1: Google で OAuth2 認証情報を作成する

  1. アクセスGoogle Cloud コンソール → API とサービス → 認証情報
  2. クリック「認証情報の作成 → OAuth クライアント ID」
  3. アプリケーションの種類:ウェブアプリケーション
  4. 名前:キークロークログイン
  5. 承認されたリダイレクト URI:https://keycloak.example.com/realms/myrealm/broker/google/endpoint
  6. コピークライアントIDそしてクライアントシークレット

ステップ2: Keycloakで設定する

  1. 入力ID プロバイダー → プロバイダーの追加 → Google
  2. 入力:
    • クライアントID: 123456789.apps.googleusercontent.com
    • クライアントシークレット: GOCSPX-xxxxxxxxxxxx
    • デフォルトのスコープ: openid プロフィールメール
    • 電子メールを信頼する: の上— Google がメールを確認しました
    • 同期モード: 輸入
  3. 保存

リダイレクト URI 形式:

https://{keycloak-host}/realms/{realm}/broker/{alias}/endpoint

2.3 フェイスブック

ステップ 1: Facebook アプリを作成する

  1. アクセス開発者向けメタ → マイアプリ → アプリの作成
  2. アプリの種類:消費者または仕事
  3. 製品を追加「フェイスブックログイン」
  4. 設定:
    • 有効な OAuth リダイレクト URI:https://keycloak.example.com/realms/myrealm/broker/facebook/endpoint
  5. コピーアプリIDそしてアプリの秘密

ステップ2: Keycloakで設定する

  1. 入力ID プロバイダー → プロバイダーの追加 → Facebook
  2. 入力:
    • クライアントID:アプリID
    • クライアントシークレット: アプリの秘密
    • デフォルトのスコープ: public_profile にメールを送信する
    • 電子メールを信頼する: オフ— Facebookは未確認の電子メールを許可します

2.4 GitHub

ステップ 1: GitHub OAuth アプリを作成する

  1. アクセスGitHub → 設定 → 開発者設定 → OAuth アプリ → 新規
  2. アプリケーション名:キークロークログイン
  3. ホームページURL:https://myapp.example.com
  4. 認可コールバック URL:https://keycloak.example.com/realms/myrealm/broker/github/endpoint
  5. コピークライアントIDそして生成するクライアントシークレット

ステップ2: Keycloakで設定する

  1. 入力ID プロバイダー → プロバイダーの追加 → GitHub
  2. 入力:
    • クライアントID: GitHub クライアント ID
    • クライアントシークレット: GitHub クライアント シークレット
    • デフォルトのスコープ: ユーザー:電子メール読み取り:組織(もっと読む:組織組織情報が必要な場合)

2.5 Apple サインイン

ステップ 1: Apple Developer で設定する

  1. アクセスApple 開発者 → 証明書、識別子、プロファイル
  2. 作成するアプリIDApple でサインイン機能を使用
  3. 作成するサービスID:
    • 識別子:com.example.keycloak.login
    • 戻り値の URL:https://keycloak.example.com/realms/myrealm/broker/apple/endpoint
  4. 作成する鍵Apple でサインインの場合 → ダウンロード.p8ファイル

ステップ2: Keycloakで設定する

  1. 入力ID プロバイダー → プロバイダーの追加 → Apple
  2. 入力:
    • クライアントID: サービス ID (com.example.keycloak.login)
    • クライアントシークレット: .p8 キーから生成された JWT
    • デフォルトのスコープ: 名前 メールアドレス
    • 電子メールを信頼する: の上

⚠️ ノートアップル: Apple では、クライアント シークレットが .p8 キーで署名された JWT であることを要求しており、この JWT は 6 か月後に期限切れになります。クライアント シークレットを定期的に更新するか、自動スクリプトを使用する必要があります。

2.6 Microsoft (Azure AD / Entra ID)

ステップ 1: Azure にアプリを登録する

  1. アクセスAzure ポータル → Microsoft Entra ID → アプリ登録 → 新規
  2. 名前:Keycloak SSO
  3. サポートされているアカウントの種類: 応じて選択してください
    • この組織ディレクトリ内のアカウントのみ— シングルテナント
    • 任意の組織ディレクトリ内のアカウント— マルチテナント
    • 組織ディレクトリ内のアカウントと個人のアカウント— @outlook.com を含む
  4. リダイレクト URI:ウェブ → https://keycloak.example.com/realms/myrealm/broker/microsoft/endpoint
  5. 入力証明書とシークレット → 新しいクライアント シークレット→ 値をコピー

ステップ2: Keycloakで設定する

  1. 入力ID プロバイダー → プロバイダーの追加 → Microsoft
  2. 入力:
    • クライアントID:アプリケーション(クライアント)ID
    • クライアントシークレット: クライアントシークレット値
    • デフォルトのスコープ: openid プロフィールメール
    • 電子メールを信頼する: の上
    • テナント: シングルテナントの場合はテナント ID を入力するか、一般。一般マルチテナント向け

3. OpenID Connect ID プロバイダー

利用可能なソーシャルプロバイダーに加えて、Keycloakはへの接続をサポートします任意の OIDC プロバイダーどれでも。

3.1 OpenID Connect v1.0 プロバイダーの追加

  1. 入力ID プロバイダー → プロバイダーの追加 → OpenID Connect v1.0
  2. 構成:
    • エイリアス: 企業SSO
    • 表示名: 企業SSO
    • ディスカバリーエンドポイント: https://sso.corp.example.com/.well-known/openid-configuration
    • または、マニュアルを入力します:
      • 認可URL: https://sso.corp.example.com/authorize
      • トークンURL: https://sso.corp.example.com/token
      • ユーザー情報のURL: https://sso.corp.example.com/userinfo
      • JWKSのURL: https://sso.corp.example.com/jwks
    • クライアントID:外部IdPに登録されているID
    • クライアントシークレット:対応するシークレット
    • クライアント認証: クライアント シークレットがポストとして送信されるまたは基本認証として送信されるクライアント シークレット

ディスカバリーエンドポイントKeycloakが外部IdPのすべてのURLと機能を自動的に取得できるようにします。

3.2 Keycloak 間の ID ブローカリング

2 つの Keycloak インスタンスを接続します。

# Keycloak A (IdP) — Realm: company-a
Discovery: https://keycloak-a.example.com/realms/company-a/.well-known/openid-configuration

# Keycloak B (Broker) — Realm: main
# Thêm OIDC IdP với:
# - Discovery Endpoint: https://keycloak-a.example.com/realms/company-a/.well-known/openid-configuration
# - Client ID: registered in company-a realm
# - Client Secret: from company-a client

# Tại Keycloak A, tạo client cho Keycloak B:
# - Client ID: keycloak-b-broker
# - Valid Redirect URIs: https://keycloak-b.example.com/realms/main/broker/company-a/endpoint
# - Client Authentication: On
# - Standard Flow: Enabled

4. SAML 2.0 ID プロバイダー

4.1 SAML IdP の追加

  1. 入力ID プロバイダー → プロバイダーの追加 → SAML v2.0
  2. 構成:
    • エイリアス: 企業-saml
    • URLからインポート: 外部 SAML IdP のメタデータ URL を入力します。
      https://saml-idp.example.com/metadata
    • またはファイルからインポート: XMLメタデータファイルをアップロードします
    • または、マニュアルを入力します:
      • シングルサインオンサービスURL: https://saml-idp.example.com/sso
      • シングルログアウトサービスのURL: https://saml-idp.example.com/slo
      • NameID ポリシーの形式: 電子メールまたは持続的
      • AuthnRequest の署名が必要です: の上
      • アサーションの署名を求める: の上
      • アサーションを暗号化したい: オフ
      • 署名の検証: の上
      • X509 証明書の検証: IdP 署名証明書を貼り付けます

4.2 Keycloak SAML SP メタデータ

外部 SAML IdP には Keycloak メタデータが必要です (サービスプロバイダーとして機能):

# Keycloak SP Descriptor URL
https://keycloak.example.com/realms/myrealm/broker/corporate-saml/endpoint/descriptor

# Đây là XML metadata chứa:
# - EntityID
# - AssertionConsumerService URL
# - SingleLogoutService URL
# - Keycloak signing certificate

5. OAuth v2 ID プロバイダー

OAuth 2.0 のみをサポートする (OIDC なし) プロバイダーの場合:

  1. 入力ID プロバイダー → プロバイダーの追加 → OAuth v2.0
  2. 構成:
    • 認可URL: OAuth2 承認エンドポイント
    • トークンURL: OAuth2 トークンエンドポイント
    • ユーザー情報のURL: エンドポイントはユーザー情報 (存在する場合) を返します。
    • クライアントID/クライアントシークレット
    • ユーザー情報の JSON パス: ユーザー属性を抽出するための JSONPath
      # Ví dụ: nếu user info response là { "data": { "id": 123, "username": "john" } }
      # Username JSONPath: $.data.username
      # Email JSONPath: $.data.email

6. Kubernetes ID プロバイダー

Keycloak は Kubernetes の IdP として機能でき、逆に Kubernetes から ID を受け取ることもできます。

6.1 Kubernetes OpenID Connect プロバイダー

# Kubernetes API server config — sử dụng Keycloak làm IdP
apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://k8s-api.example.com
    certificate-authority: /etc/kubernetes/pki/ca.crt
  name: my-cluster
users:
- name: oidc-user
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      command: kubectl
      args:
        - oidc-login
        - get-token
        - --oidc-issuer-url=https://keycloak.example.com/realms/myrealm
        - --oidc-client-id=kubernetes
        - --oidc-extra-scope=groups
# kube-apiserver flags cho OIDC authentication
--oidc-issuer-url=https://keycloak.example.com/realms/myrealm
--oidc-client-id=kubernetes
--oidc-username-claim=preferred_username
--oidc-groups-claim=groups
--oidc-ca-file=/etc/kubernetes/pki/keycloak-ca.crt

7. 初回ログインの流れ

最初のログインフローの処理初めてユーザーは外部 IdP 経由でログインします。このフローでは次のことが決定されます。

  • Keycloakで新しいユーザーを作成できますか?
  • 現在のユーザーへのリンクはありますか?
  • プロフィールの確認/更新のリクエストはありますか?

7.1 デフォルトの最初のブローカーのログインフロー

First Broker Login Flow (mặc định)
├── Review Profile (Required)                    → Hiển thị profile để user review
│   └── Config: Update Profile on First Login = missing
└── User Creation or Linking (Required)           → Sub-flow
    ├── Create User If Unique (Alternative)       → Tạo user nếu email/username chưa tồn tại
    └── Handle Existing Account (Alternative)     → Sub-flow xử lý account đã tồn tại
        ├── Confirm Link Existing Account (Required) → Hỏi user có muốn link?
        └── Verification (Alternative)            → Sub-flow verify ownership
            ├── Verify Existing Account by Email (Alternative) → Gửi email verify
            └── Verify Existing Account by Re-authentication (Alternative) → Nhập password

7.2 詳しい仕組み

シナリオ 1: まったくの新規ユーザー

  1. ユーザーが初めて Google 経由でログインする
  2. プロフィールを確認する: ユーザーが確認できるように Google からのプロフィール (メールアドレス、名前) を表示します。
  3. 一意の場合はユーザーを作成: 電子メールが存在しません → 新しい Keycloak ユーザーを作成します
  4. Google ID を Keycloak ユーザーにリンクする
  5. ログインに成功しました

シナリオ 2: 電子メールがすでに Keycloak に存在する

  1. ユーザーは GitHub、電子メール経由でログインします[email protected]
  2. 一意の場合はユーザーを作成: 電子メールはすでに存在します → 失敗 → 代替に切り替えます
  3. 既存のアカウントのリンクを確認: 「アカウント [email protected] はすでに存在します。リンクを希望しますか?」と尋ねます。
  4. 所有権の確認: ユーザーは電子メールで確認するか、Keycloak パスワードを入力します
  5. GitHub ID を既存の Keycloak ユーザーにリンクする

7.3 カスタム初回ログインフロー

例: 電子メールによるアカウントの自動リンク確認する必要はありません(外部 IdP を信頼する場合にのみ使用されます):

Auto-link First Login Flow
├── Create User If Unique (Alternative)
└── Automatically Set Existing User (Alternative)   ← Tự link, không hỏi user

⚠️ セキュリティ警告: 既存ユーザーを自動設定次の場合にのみ使用してください。完全に信頼する外部IdP。 IdP でフリーメールの設定が許可されている場合、攻撃者は他人のメールを登録することでアカウントを乗っ取ることができます。

8. アカウントのリンク

アカウントリンクを使用すると、ユーザーは複数の外部アイデンティティを 1 つの Keycloak アカウントにリンクできます。

8.1 アカウントコンソール経由のリンク

ユーザーはアカウント コンソールで自分自身をリンク/リンク解除できます。

https://keycloak.example.com/realms/myrealm/account/#/security/linked-accounts

8.2 Application Initiated Action (AIA) によるリンク

# Trigger account linking từ application
GET /realms/myrealm/protocol/openid-connect/auth?
  client_id=my-app&
  redirect_uri=https://myapp.example.com/callback&
  response_type=code&
  scope=openid&
  kc_action=oidc-link&
  kc_action_parameter=google

8.3 管理REST API経由のリンク

# Xem federated identities của user
curl -s -X GET \
  "https://keycloak.example.com/admin/realms/myrealm/users/$USER_ID/federated-identity" \
  -H "Authorization: Bearer $ADMIN_TOKEN" | jq

# Response
[
  {
    "identityProvider": "google",
    "userId": "google-user-id-123",
    "userName": "[email protected]"
  }
]

# Thêm federated identity cho user
curl -X POST \
  "https://keycloak.example.com/admin/realms/myrealm/users/$USER_ID/federated-identity/github" \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "identityProvider": "github",
    "userId": "github-user-id-456",
    "userName": "johndoe"
  }'

# Xóa federated identity
curl -X DELETE \
  "https://keycloak.example.com/admin/realms/myrealm/users/$USER_ID/federated-identity/github" \
  -H "Authorization: Bearer $ADMIN_TOKEN"

9. ID プロバイダー マッパー

許可される IdP マッパー変換してマップする外部 IdP から Keycloak ユーザー属性、ロール、またはグループへの属性。

9.1 マッパーのタイプ

マッパー説明する例えば
属性インポーターIdP クレームから Keycloak ユーザー属性に属性をインポートしますIdP写真→ キークロークアバター_url
ハードコーディングされた役割IdP からすべてのユーザーに固定ロールを割り当てるすべての Google ユーザー → 役割外部ユーザー
ハードコードされたグループ固定グループを割り当てるすべての GitHub ユーザー → グループ/外部/github
ユーザー名テンプレート インポーターテンプレートからユーザー名を作成する${エイリアス}.${CLAIM.preferred_username}
外部ロールからロールへ外部 IdP ロールを Keycloak ロールにマッピングするSAML の役割管理者。管理者→ キークロークの役割レルム管理者
ハードコードされた属性IdPからユーザーの固定属性を設定する出典=グーグルすべての Google ユーザー向け
ロールに対する SAML 属性SAML アサーション属性を Keycloak ロールにマップするSAML部門=IT→役割ITチーム
役割に対する高度な要求複雑なクレーム (JSON パス、正規表現) をロールにマッピングする請求グループ。グループが含まれています。含まれています「管理者」→役割管理者。管理者

9.2 マッパーの構成

例 1: 属性インポーター — Google からアバターをインポート

  1. 入力ID プロバイダー → Google → マッパー → マッパーの追加
  2. 構成:
    • 名前: アバター URL をインポート
    • マッパータイプ: 属性インポーター
    • 請求: 写真(Google から名前を要求)
    • ユーザー属性名: アバター_url(Keycloakユーザー属性)
    • 同期モードのオーバーライド: 継承する

例 2: ハードコードされたロール - 外部ユーザーにロールを割り当てる

  1. 入力ID プロバイダー → GitHub → マッパー → マッパーの追加
  2. 構成:
    • 名前: 外部ユーザー役割の割り当て
    • マッパータイプ: ハードコーディングされた役割
    • 役割: 外部ユーザー

例 3: ユーザー名テンプレート — ユーザー名の前に IdP エイリアスを付ける

  1. 構成:
    • マッパータイプ: ユーザー名テンプレート インポーター
    • テンプレート: ${エイリアス}.${CLAIM.preferred_username}
    • ターゲット: 地元
  2. 結果: Google のユーザーのユーザー名は = になります。グーグル・ジョン・ドー

例 4: 外部ロールからロールへ - SAML ロールをマッピングする

  1. 構成:
    • マッパータイプ: 外部ロールからロールへ
    • 外部の役割: 管理者。管理者(外部 SAML IdP からのロール名)
    • 役割: レルム管理者(キークロークの役割)

10. 同期モード

同期モード制御Keycloakが情報を同期する方法ユーザーがログインするたびに外部 IdP から送信されます。

モード初回ログイン以降のログインユースケース
輸入IdP から属性をインポートする更新なし - Keycloak データをそのまま維持しますユーザーはKeycloakでプロファイルを編集できます
力。力IdP から属性をインポートするIdP からの新しいデータで常に上書きしますIdP は絶対的な真実の源です
遺産IdP から属性をインポートする属性が空の場合は更新し、存在する場合はそのまま保持します下位互換性、データのマージ

同期モードの設定:

  • IdPレベルで: その IdP のすべてのマッパーに適用されます
  • マッパーレベルで(同期モードオーバーライド): 特定のマッパーの同期モードをオーバーライドします。
# Ví dụ: Google IdP với sync mode = import
# Mapper "Import Avatar" với Sync Mode Override = force

# Kết quả:
# - Email, name: import 1 lần, user có thể sửa trong Keycloak
# - Avatar URL: luôn cập nhật từ Google (force)

11. クライアントが提案する IdP (kc_idp_hint)

kc_idp_hintアプリの権限自動的にリダイレクトユーザーを特定の外部 IdP に接続し、Keycloak ログインページをバイパスします。

11.1 kc_idp_hint の使用

# Redirect trực tiếp đến Google login
GET /realms/myrealm/protocol/openid-connect/auth?
  client_id=my-app&
  redirect_uri=https://myapp.example.com/callback&
  response_type=code&
  scope=openid&
  kc_idp_hint=google

# Redirect trực tiếp đến SAML IdP
GET /realms/myrealm/protocol/openid-connect/auth?
  client_id=my-app&
  redirect_uri=https://myapp.example.com/callback&
  response_type=code&
  scope=openid&
  kc_idp_hint=corporate-saml

JavaScript の統合:

// keycloak-js adapter
const keycloak = new Keycloak({
  url: 'https://keycloak.example.com',
  realm: 'myrealm',
  clientId: 'my-app'
});

// Đăng nhập qua Google
function loginWithGoogle() {
  keycloak.login({
    idpHint: 'google'
  });
}

// Đăng nhập qua corporate SAML
function loginWithCorporate() {
  keycloak.login({
    idpHint: 'corporate-saml'
  });
}

11.2 ブラウザフローにおけるアイデンティティプロバイダリダイレクタ

アイデンティティプロバイダリダイレクタdalam ブラウザ フローが自動的に処理しますkc_idp_hint:

  • リクエストがあった場合kc_idp_hint=google→ すぐに Google にリダイレクトされます
  • ヒントがない場合 → 通常の流れを継続(ログインページを表示)

デフォルトの IdP: ID プロバイダー リダイレクターのデフォルト IdP を設定できます。ヒントがない場合は、デフォルト IdP に自動的にリダイレクトされます。

  1. 横にある⚙️をクリックしてくださいアイデンティティプロバイダリダイレクタ
  2. 入力デフォルトのアイデンティティプロバイダー: google.google.com

12. ID ブローカーのログアウト

ユーザーがKeycloakからログアウトすると、それを構成できますログアウトを伝播する外部 IdP に送信します。

12.1 バックチャネルのログアウト

キークロークのサポートバックチャネルログアウト外部 OIDC IdP を使用する場合:

  1. OIDC IdP 構成で、有効にします。バックチャネルログアウト
  2. 外部 IdP はバックチャネル ログアウト エンドポイントをサポートする必要があります
  3. ユーザーがKeycloakからログアウトすると → Keycloakが外部IdPにログアウトリクエストを送信します

SAML IdP の場合、ログアウト伝播が処理されますSAML シングル ログアウト (SLO)プロトコルを自動的に実行します。

13. 同じソーシャル ブローカーの複数のインスタンス

Keycloak ではさらに多くのことが可能になります多くの例同じソーシャルプロバイダーであり、それぞれに異なるエイリアスが付いています。

# Ví dụ: 2 Google IdPs cho 2 Google Workspace domains
Identity Providers:
  - Alias: google-corp        → Google Workspace domain corp.example.com
  - Alias: google-partner     → Google Workspace domain partner.example.com

# Mỗi instance có Client ID / Client Secret riêng
# registered tại Google Cloud Console khác nhau

追加方法:

  1. OIDC v1.0 プロバイダーを追加します (2 番目のインスタンスには組み込みの Google プロバイダーを使用しないでください)
  2. エイリアス:グーグルパートナー
  3. 検出エンドポイント:https://accounts.google.com/.well-known/openid-configuration
  4. クライアント ID / シークレット: 2 番目のインスタンスの別の認証情報

14. アカウントコンソールでの IdP の表示/非表示

アカウント コンソールでどのユーザーが IdP を表示およびリンク/リンク解除できるかを制御します。

  • ログインページに表示されます:ダニなしログインページで非表示にする
  • ログインページから非表示にする:チェックマークログインページで非表示にする— まだ使用できますkc_idp_hint
  • アカウントコンソールに表示される: デフォルトの IdP がリンクされたアカウントに表示されます
  • アカウントリンクのみ: IdP はアカウント コンソールにのみ表示され、ログイン ページには表示されません。

15. まとめ

コンセプト説明する
ID ブローカーリングKeycloakはアプリと外部IdPの間を仲介します
ソーシャルログイングーグル、フェイスブック、ギットハブ、アップル、マイクロソフト
OIDC/SAML/OAuth2 IdPプロトコル標準に従って任意の IdP に接続します
初回ログインの流れ最初の処理: 新しいユーザーまたは既存のリンクを作成します
アカウントリンク複数の外部アイデンティティを 1 つの Keycloak アカウントにリンクする
IdP マッパー変換属性: 属性インポーター、ハードコードされたロール/グループ、ユーザー名テンプレート
同期モードインポート (1 回)、強制 (常に上書き)、レガシー (マージ)
kc_idp_hintログイン ページをスキップし、特定の IdP に直接リダイレクトします
ブローカーのログアウトログアウトを外部 IdP に伝播する (バックチャネル/SLO)