実践 Keycloak


オライリー・ジャパン


著者:Stian Thorgersen、Pedro Igor Silva
訳者:和田広之、田村広平、乗松隆志、田畑義之


訳者まえがき
まえがき

第1部 Keycloakを始めよう
1章 Keycloakを始めよう
1.1 技術要件
1.2 Keycloakの概要
1.3 Keycloakのインストールと実行
1.3.1 KeycloakをDockerで動かす方法
1.3.2 OpenJDKでのKeycloakのインストールと実行
1.4 管理コンソールとアカウントコンソールの使用
1.4.1 管理コンソールを使ってみよう
1.4.2 アカウントコンソールを使ってみよう
1.5 まとめ
1.6 質問

2章 サンプルアプリケーションのセキュリティー保護
2.1 技術要件
2.2 サンプルアプリケーション
2.3 サンプルアプリケーションの実行
2.4 サンプルアプリケーションへのログイン方法
2.5 バックエンドREST APIの安全な呼び出し
2.6 まとめ
2.7 質問

第2部 Keycloakによるアプリケーションのセキュリティー保護
3章 標準仕様の簡単な紹介
3.1 OAuth 2.0によるアプリケーションのリソースアクセスの認可
3.2 OIDCによるユーザーの認証
3.3 アクセストークンへのJWTの活用
3.4 SAML 2.0が今でも重要な理由
3.5 まとめ
3.6 質問

4章 OpenID Connectによるユーザーの認証
4.1 技術要件
4.2 OIDCプレイグラウンドアプリケーションの実行
4.3 ディスカバリーエンドポイント
4.4 ユーザーの認証
4.5 IDトークン
4.5.1 ユーザープロフィールの更新
4.5.2 カスタム属性の追加
4.5.3 IDトークンにロールを追加する
4.6 UserInfoエンドポイントの呼び出し
4.7 ユーザーのログアウト
4.7.1 ログアウトの開始
4.7.2 IDトークンとアクセストークンの有効期間の活用
4.7.3 OIDC Session Managementの活用
4.7.4 OIDC Back-Channel Logoutの活用
4.7.5 OIDC Front-Channel Logoutに関する注意点
4.7.6 ログアウトにはどのように対応すればよいか?
4.8 まとめ
4.9 質問
4.10 参考資料

5章 OAuth 2.0によるアクセスの認可
5.1 技術要件
5.2 OAuth 2.0プレイグラウンドアプリケーションの実行
5.3 アクセストークンの取得
5.4 ユーザーの同意の要求
5.5 アクセストークンに付与されるアクセス権限の制限
5.5.1 Audienceを利用したアクセストークンのアクセス権限の制限
5.5.2 ロールを使用したアクセストークンのアクセス権限の制限
5.5.3 スコープを利用したアクセストークンのアクセス権限の制限
5.6 アクセストークンの検証
5.7 まとめ
5.8 質問
5.9 参考資料

6章 さまざまなタイプのアプリケーションのセキュリティー保護
6.1 技術要件
6.2 内部アプリケーションと外部アプリケーション
6.3 Webアプリケーションのセキュリティー保護
6.3.1 サーバーサイドWebアプリケーションのセキュリティー保護
6.3.2 専用REST APIを使用するSPAのセキュリティー保護
6.3.3 仲介REST APIを使用するSPAのセキュリティー保護
6.3.4 外部REST APIを使用するSPAのセキュリティー保護
6.4 ネイティブアプリケーションとモバイルアプリケーションのセキュリティー保護
6.5 REST APIとサービスのセキュリティー保護
6.6 まとめ
6.7 質問
6.8 参考資料

7章 アプリケーションとKeycloakの統合
7.1 技術要件
7.2 統合のアーキテクチャーの選択
7.3 統合方法の選択
7.4 Goアプリケーションとの統合
7.4.1 Goクライアントの設定
7.5 Javaアプリケーションとの統合
7.5.1 Quarkusの使用
7.5.2 Spring Bootの使用
7.5.3 Keycloakアダプターの使用
7.6 JavaScriptアプリケーションとの統合
7.7 Node.jsアプリケーションとの統合
7.7.1 Node.jsクライアントの作成
7.7.2 Node.jsリソースサーバーの作成
7.8 Pythonアプリケーションとの統合
7.8.1 Pythonクライアントの作成
7.8.2 Pythonリソースサーバーの作成
7.9 リバースプロキシーの利用
7.10 独自の統合を行わないようにする
7.11 まとめ
7.12 質問
7.13 参考資料

8章 認可の戦略
8.1 認可
8.2 RBACの使用
8.3 GBACの使用
8.3.1 グループメンバーシップのトークンへのマッピング
8.4 OAuth 2.0スコープの使用
8.5 ABACの使用
8.6 中央集権型認可サーバーとしてのKeycloakの使用
8.7 まとめ
8.8 質問
8.9 参考資料

第3部 Keycloakの設定と管理
9章 本番環境用のKeycloakの設定
9.1 技術要件
9.2 サーバーオプション
9.3 Keycloakのホスト名の設定
9.3.1 フロントエンドURLの設定
9.3.2 バックエンドURLの設定
9.3.3 管理用URLの保護
9.4 TLSの有効化
9.5 データベースの設定
9.6 クラスタリングの有効化
9.7 リバースプロキシーの設定
9.7.1 ノードへの負荷分散
9.7.2 クライアント情報の転送
9.7.3 セッションアフィニティーの維持
9.8 環境のテスト
9.8.1 ロードバランシングとフェイルオーバーのテスト
9.8.2 フロントエンドURLとバックエンドURLのテスト
9.9 まとめ
9.10 質問
9.11 参考資料

10章 ユーザーの管理
10.1 ローカルユーザーの管理
10.1.1 ローカルユーザーの作成
10.1.2 ユーザークレデンシャルの管理
10.1.3 ユーザー情報の収集と検証
10.1.4 セルフ登録の有効化
10.1.5 ユーザー属性の管理
10.2 LDAPやActive Directoryとの連携
10.2.1 LDAPマッパー
10.2.2 グループの同期
10.2.3 ロールの同期
10.3 サードパーティーのIdPとの統合
10.3.1 OIDC IdPの作成
10.4 ソーシャルIdPとの統合
10.5 ユーザーによる自身のデータの管理
10.6 まとめ
10.7 質問
10.8 参考資料

11章 ユーザーの認証
11.1 技術要件
11.2 認証フロー
11.2.1 認証フローの設定
11.3 パスワードの使用
11.3.1 パスワードポリシーの変更
11.3.2 ユーザーパスワードのリセット
11.4 OTPの使用
11.4.1 OTPポリシーの変更
11.4.2 ユーザーによるOTP使用有無の選択
11.4.3 OTPの使用の強制
11.5 Web Authentication(WebAuthn)の使用
11.5.1 認証フローでのWebAuthnの有効化
11.5.2 セキュリティーデバイスの登録と認証
11.6 強力な認証の使用
11.7 まとめ
11.8 質問
11.9 参考資料

12章 トークンとセッションの管理
12.1 技術要件
12.2 セッションの管理
12.2.1 セッションの有効期間の管理
12.2.2 アクティブなセッションの管理
12.2.3 ユーザーセッションの早期無効化
12.2.4 Cookieの理解とセッションとの関係
12.3 トークンの管理
12.3.1 IDトークンとアクセストークンの有効期間の管理
12.3.2 リフレッシュトークンの有効期間の管理
12.3.3 リフレッシュトークンローテーションの有効化
12.3.4 トークンの無効化
12.4 まとめ
12.5 質問
12.6 参考資料

13章 Keycloakの拡張
13.1 技術要件
13.2 サービスプロバイダーインターフェース(SPI)
13.2.1 カスタムプロバイダーのパッケージ化
13.2.2 カスタムプロバイダーのインストール
13.2.3 KeycloakSessionFactoryとKeycloakSessionコンポーネントの理解
13.2.4 プロバイダーのライフサイクルの理解
13.2.5 プロバイダーの設定
13.3 見た目の変更
13.3.1 テーマ
13.3.2 新しいテーマの作成とデプロイ
13.3.3 テンプレートの拡張
13.3.4 テーマ関連SPIの拡張
13.4 認証フローのカスタマイズ
13.5 その他のカスタマイズポイント
13.6 まとめ
13.7 質問
13.8 参考資料

第4部 セキュリティーについての考慮事項
14章 Keycloakとアプリケーションのセキュリティー保護
14.1 Keycloakのセキュリティー保護
14.1.1 Keycloakへの通信の暗号化
14.1.2 Keycloakのホスト名の設定
14.1.3 Keycloakで使用する署名鍵のローテーション
14.1.4 Keycloakの定期的なアップデート
14.1.5 外部VaultからKeycloakへのシークレットの読み込み
14.1.6 ファイアーウォールと侵入防止システムによるKeycloakの保護
14.2 データベースのセキュリティー保護
14.2.1 ファイアーウォールによるデータベースの保護
14.2.2 データベースの認証とアクセス制御の有効化
14.2.3 データベースの暗号化
14.3 クラスター通信のセキュリティー保護
14.3.1 クラスター通信の暗号化
14.4 ユーザーアカウントのセキュリティー保護
14.5 アプリケーションのセキュリティー保護
14.5.1 Webアプリケーションのセキュリティー
14.5.2 OAuth 2.0とOIDCのベストプラクティス
14.5.3 Keycloakクライアントの設定
14.6 まとめ
14.7 質問
14.8 参考資料

日本語版補章 クライアントポリシーによるセキュリティー保護
15.1 クライアントポリシー
15.2 セキュリティープロファイル
15.3 クライアントポリシーによるセキュリティープロファイルの適用
15.3.1 準備
15.3.2 セキュリティープロファイルの適用
15.3.3 セキュリティープロファイルに従っていない認可リクエストの送信
15.3.4 セキュリティープロファイルに従っている認可リクエストの送信
15.3.5 セキュリティープロファイルの適用解除
15.4 まとめ
15.5 質問
15.6 参考資料

解答
索引

書籍目次技術書籍

Posted by shi-n