5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NRI OpenStandia (IAM編)Advent Calendar 2024

Day 23

Keycloakの最新機能について調査

Last updated at Posted at 2024-12-22

はじめに

Keycloakはオープンソースのアイデンティティ・アクセス管理(IAM)ソフトウェアです。

認証認可サービスのソリューションは世の中にいろいろありますが、オープンソースで実績が豊富なものとしてはKeycloakが代表的なソフトウェアの一つとして広く認識されつつあります1。実際、2023年4月にはCloud Native Computing FoundationのIncubatingプロジェクトとして承認されております2

本記事では、2024年12月時点での最新バージョンであるKeycloak 26でリリース内容の一部をご紹介したいと思います。

対象とする読者

以下の読者を想定しております。

  • Keycloakや他のIAMソフトウェアを利用したことがある人
  • Keycloakの最新動向を知りたい人

Keycloak 26のハイライト機能

以下の機能がリリースされました。

# リリース機能
1 Organizations supported
2 Client libraries updates
3 User sessions persisted by default
4 New default login theme
5 Highly available multi-site deployments
6 Admin Bootstrapping and Recovery
7 OpenTelemetry Tracing preview
8 OpenID for Verifiable Credential Issuance
9 DPoP improvements
10 Removal of GELF logging handler
11 Lightweight access tokens for Admin REST API
12 Keycloak JavaScript adapter now standalone
13 Hostname v1 feature removed
14 Automatic redirect from root to relative path
15 Persisting revoked access tokens across restarts
16 Client Attribute condition in Client Policies
17 Specify different log levels for log handlers
18 Proxy option removed
19 Option proxy-trusted-addresses added
20 Option proxy-protocol-enabled added
21 Option to reload trust and key material added
22 Options to configure cache max-count added
23 The https-trust-store-* options have been undeprecated
24 The java-keystore key provider supports more algorithms and vault secrets
25 Adding support for ECDH-ES encryption key management algorithms
26 Support for multiple instances of a social broker in a realm
27 New generalized event types for credentials
28 Customizable Footer in login Themes
29 Keycloak CR supports standard scheduling options
30 KeycloakRealmImport CR supports placeholder replacement
31 Configuring the LDAP Connection Pool
32 Infinispan marshalling changes to Infinispan Protostream
33 Removal of OSGi metadata
34 Group-related events no longer fired when removing a realm
35 Identity Providers no longer available from the realm representation
36 Securing Applications documentation converted into the guide format
37 Removal of legacy cookies
38 Property origin in the UserRepresentation is deprecated

今回は個人的に興味がある機能について深堀させていただきます。

Organizations supported

Keycloak 26よりOrganization機能が正式にサポートされます。

Organization機能は、顧客やビジネスパートナーといったサードパーティーのアイデンティティと自社のアイデンティティを別々に管理できるように以下のような中核となる機能を提供しております。

  • メンバー管理
  • 招待リンクを利用した組織メンバーのオンボーディング
  • アイデンティティブローカーを利用したフェデレーションによる組織メンバーのオンボーディング
  • 組織の範囲内で認証を行う場合の、アイデンティティ・ファースト・ログインと組織固有の手順
  • トークンを介しての組織固有なクレームのアプリケーション連携

認証機能の変更点

Organization機能が追加されたことにより、以下の認証フローに変更が加わりました。

  • browser
  • first broker login

browserフローについて、IDファーストログインをデフォルトにすることで認証情報の入力前にユーザを識別するようになりました。Organizationに関連付けられたIdPを通じて認証が実行されると、ユーザがOrganizationのメンバーとして自動的に追加されます。

  • browserフローのログインページ
    Identity-first login page
  • ユーザが存在しない場合
    Identity-first when user does not exist

Client libraries updates

Keycloak 26以降では、Keycloakのサーバ部分とクライアント部分でリリースサイクルを分離するようになりました。
具体的には、以下のライブラリをKeycloakのサーバリリースから独立させます(将来的には増える可能性あり)。

  • Java admin client - Maven artifact org.keycloak:keycloak-admin-client
  • Java authorization client - Maven artifact org.keycloak:keycloak-authz-client
  • Java policy enforcer - Maven artifact org.keycloak:keycloak-policy-enforcer

さらに、互換性を保つため、同じサーババージョンと以前のいくつかの主要なサーババージョンでクライアントライブラリをテストしサポートするようになります。

User sessions persisted by default

ユーザセッション永続化機能がデフォルトになりました。
ユーザセッション永続化の機能はKeycloak 25で初めて導入され、この機能を用いるとKeycloakが再起動されてもユーザセッションが保持されるようになります。

詳細については、Keycloak 25の機能紹介のページをご参照ください。

Highly available multi-site deployments

高可用性を担保されたマルチサイトアーキテクチャに関してKeycloak 26で機能改善がありました。

Keycloakではバージョン23からロードバランサーを利用した複数インスタンスの展開によるマルチサイトアーキテクチャが採用されております。

マルチサイトアーキテクチャ図

具体的には以下のような機能が改善されています。

  • 両方のサイトで同時にユーザリクエストを処理可能になりました
  • ロードバランサーのブループリントが更新され、AWS Global Acceleratorを使用するようになりました(目的:クライアント側のDNSキャッシュによって引き起こされるフェイルオーバー長期化を避けるため)

  • ユーザセッション永続化はマルチサイトを実現するうえでの要件となりました。その結果、ユーザセッションはKeycloakまたはInfinispanのアップグレード時に保持されるようになります。

Keycloakでマルチサイトを実現する際、レイテンシの増大を回避するために両サイトを互いの近傍に構築する必要があります。公式ドキュメントでも、AWSでサービスを構築する際は同一リージョン内にサイトを構築することが求められています。

マルチサイト構成についてはまだコミュニティでも議論が行われているため、今後の動向にも要注目です。

OpenTelemetry Tracing preview

OpenTelemetry TracingのサポートがKeycloakに公開され、オブザーバビリティを担保するためにアプリケーションのトレースを取得できるようになりました。パフォーマンスのボトルネックの発見、アプリケーション障害の原因の特定、分散システムを介したリクエストのトレースなど、様々なことに役立ちます。さらに、ログ追跡の設定は柔軟に変更可能で、例えばコンソールログをログ追跡から除外するといったことも可能です。

KeycloakではQuarkusのOpenTelemetry拡張機能を用いてログ追跡機能を実現しており、より詳細な属性値の情報を知りたい方はQuarkusの公式ドキュメントを参照しましょう。

詳細はログ追跡機能の紹介ページにてご覧ください。

Infinispan marshalling changes to Infinispan Protostream

Keycloak 26でマーシャリングのフォーマットがJBossマーシャリングからInfinispanプロトストリーム(proto3)に変更されました。

マーシャリングとは、Javaオブジェクトをバイトに変換し、Keycloakサーバ間のネットワークを介して送信するプロセスのことです。

なお、両者の間で互換性はないため、バージョンアップ時にキャッシュが削除されます。
ユーザセッションが失われないようにするには、まずKeycloak 25にアップグレードしてセッション永続化機能を有効にして下さい。

終わりに

今回のリリースはマルチサイト機能の改善やOpenTelemetryの採用などクラウドネイティブな環境での利用を想定した機能が多い印象です。

注目度が高い機能である「Organizations機能」の導入により、レルム管理者はOrganization単位でメンバーのライフサイクルや認証認可の設定をできるようになりました。エンタープライズ向けに機能を提供する場面で顧客ニーズにより柔軟に対応できるようになるので、ぜひ使っていきたいですね。

  1. https://permify.co/post/open-source-identity-access-management-iam-solutions-for-enterprises/

  2. https://www.cncf.io/projects/keycloak/

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?