24.0.0.3におけるデフォルトの冗長ガベージコレクションとOpenID Connectのバックチャネルログアウトのサポート
24.0.0.3から、Java実行がIBM JavaまたはIBM Semeru Runtimesの場合、冗長ガベージ・コレクションがデフォルトで有効になりました。また、このリリースでは、Open LibertyのOpenID Connectクライアントとサーバーがバックチャネル・ログアウトをサポートするようになりました。
In Open Liberty 24.0.0.3:
24.0.0.3で修正されたバグリストをご参照ください。
過去のセキュリティ脆弱性修正の一覧は、 以前のOpen Liberty GAリリースブログをご参照ください。
24.0.0.3を使用したアプリの開発と実行
Mavenを使うときは下記の設定をお使いください。 以下のコードを pom.xml
ファイルにインクルードしてください。
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.10.2</version>
</plugin>
Gradleの場合は、build.gradle
ファイルに以下をインクルードします。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'io.openliberty.tools:liberty-gradle-plugin:3.8.2'
}
}
apply plugin: 'liberty'
コンテナ・イメージの場合はこちらです。
FROM icr.io/appcafe/open-liberty
ダウンロード・ページをご参照ください。
IntelliJ IDEA, Visual Studio CodeまたはEclipse IDEをお使いの場合は、IDE内で効率的な開発、テスト、デバッグ、アプリケーション管理を行うためのオープンソースLiberty開発者ツールをお試しください。
IBM JavaおよびIBM Semeruランタイムのデフォルトの冗長ガベージ・コレクション
Javaランタイムの冗長ガベージ・コレクションを有効にすると、メモリ・リークやその他のパフォーマンス・ボトルネックのデバッグに役立ちます。24.0.0.3から、Java実装としてIBM JavaまたはIBM Semeru Runtimesを使用すると、冗長ガベージ・コレクション・ロギングがデフォルトで有効になります。最大10個の verbosegc.XXX.log
ローリングログファイルがログディレクトリに作成され、ファイルごとに1024GCサイクルが記録されます。
さらに詳細はログとトレースの設定をご参照ください。
OpenID Connectクライアントとサーバーのバックチャネル・ログアウトのサポート
Open LibertyのOpenID Connectクライアントとサーバーがバックチャネルログアウトに対応しました。バックチャネルログアウトは、OpenID ConnectサーバーがユーザーのログアウトをOpenID Connectクライアントに直接通知し、各OpenID Connectクライアントもローカルでユーザーをログアウトできるようにします。
以前は、OpenID Connectサーバーは、OpenID Connectクライアントのウェブページに埋め込まれたiframeを使用することによってのみ、ユーザーがログアウトしたことをOpenID Connectクライアントに通知することができました。ウェブページがアクティブでない場合、OpenID ConnectクライアントはOpenID Connectサーバーで発生したログアウトを通知されませんでした。バックチャネルログアウトは、OpenID Connectサーバーとクライアント間の直接通信によってこの問題を解決します。
OpenID Connectクライアントのバックチャネル・ログアウトのサポート
このリリースでは、OpenID Connect Client機能またはソーシャルメディアログイン機能が有効になっている場合、OpenID Connectクライアントのバックチャネルログアウトサポートがデフォルトで有効になります。これらの機能のいずれかが有効で、かつ server.xml
ファイルに openidConnectClient
要素または socialLogin
要素が定義されている場合、OpenID Connect クライアントのバックチャネルログアウトエンドポイントも自動的に有効になります。OpenID Connect サーバーはこれらのエンドポイントにバックチャネルログアウトリクエストを送信し、OpenID Connect クライアントでユーザをログアウトさせます。
OpenID Connectサーバーは、バックチャネルログアウト要求を送信するために、バックチャネルログアウトエンドポイントの絶対URIを必要とします。これらの機能では、以下のバックチャネル・ログアウト・エンドポイントが有効になっています。
-
OpenID Connect Client:
/oidcclient/backchannel_logout/{oidcClientId}
-
Social Media Login:
/ibm/api/social-login/backchannel_logout/{socialLoginId}
例えば、以下のOpenID Connectクライアント機能設定は、OpenID Connectクライアントの /oidcclient/backchannel_logout/oidcClientId
バックチャネルログアウトエンドポイントを有効にします。
<featureManager>
<feature>openidConnectClient-1.0</feature>
</featureManager>
...
<openidConnectClient id="oidcClientId" ... />
同様に、以下のソーシャルメディアログイン機能の設定は、OpenID Connectクライアント上で /ibm/api/social-login/backchannel_logout/socialLoginId
バックチャネルログアウトエンドポイントを有効にします。
<featureManager>
<feature>socialLogin-1.0</feature>
</featureManager>
...
<oidcLogin id="socialLoginId" ... />
OpenID Connectサーバーのバックチャネル・ログアウトのサポート
OpenID Connect サーバのバックチャネルログアウトを有効にするには、server.xml
ファイルの localStore
要素で定義されている OAuth クライアントに backchannelLogoutUri
属性を指定します。
また、OpenID Connectサーバはバックチャネルログアウトリクエストがタイムアウトするまで、デフォルトの180秒間待機します。openidConnectProvider
要素の backchannelLogoutRequestTimeout
属性を使用することで、カスタム期間を指定することができます。
次の server.xml
ファイルの例は、OpenID Connect サーバがバックチャネル・ログアウト・リクエストを行う際に使用するバックチャネル・ログアウト URI を、タイムアウト 60 秒で指定する方法を示しています。
<featureManager>
<feature>openidConnectServer-1.0</feature>
</featureManager>
...
<openidConnectProvider
id="OidcConfigSample"
backchannelLogoutRequestTimeout="60s"
oauthProviderRef="OAuthConfigSample" ... />
<oauthProvider id="OAuthConfigSample" ... >
<localStore>
<client
name="client01"
backchannelLogoutUri="http://localhost:9080/oidcclient/backchannel_logout/client01"
... />
</localStore>
</oauthProvider>
これで、OpenID Connect サーバの logout または end_session
エンドポイントが呼び出されると、OpenID Connect サーバもバックチャネルでログアウト要求を送信し、OpenID Connect クライアントでユーザをログアウトさせることができます。OpenID Connect サーバの logout エンドポイントは /oidc/endpoint/{oidcProviderId}/logout
で、end_session
エンドポイントは /oidc/endpoint/{oidcProviderId}/end_session
です。前の例では、サーバのログアウトエンドポイントは /oidc/endpoint/OidcConfigSample/logout
であり、 end_session
エンドポイントは /oidc/endpoint/OidcConfigSample/end_session
である。
あるいは、OpenID Connect プロバイダのクライアント登録エンドポイントを使用して OAuth クライアントを動的に登録する際に、OpenID Connect クライアントのバックチャネルログアウト URI を指定するために backchannel_logout_uri
メタデータ値を定義することで、OpenID Connect サーバのバックチャネルログアウトを有効にすることができます。
OpenID ConnectサーバーのSSO Cookieを使用しないバックチャネル・ログアウト
オプションで、ログアウトするユーザーを判断するためのクエリパラメータとして、その OpenID Connect サーバーが発行する ID Token を含む id_token_hint
クエリパラメータをエンドポイントリクエストに追加することができます。この設定は、ログアウトまたは end_session
リクエストがユーザの OpenID Connect サーバの SSO Cookie なしで行われる場合に便利です。
例えば、OpenID Connectサーバーが http://localhost:9081
でホストされていて、ユーザーのOpenID ConnectサーバーのSSO Cookieが利用可能な場合、以下のいずれかのエンドポイントを起動すると、OpenID Connectサーバーは設定されたバックチャネルログアウトURIにもバックチャネルログアウトリクエストを送信します。
-
Logout endpoint:
http://localhost:9081/oidc/endpoint/{oidcProviderId}/logout
-
End session endpoint:
http://localhost:9081/oidc/endpoint/{oidcProviderId}/end_session
curl コマンドでエンドポイントを呼び出す場合など、ユーザの OpenID Connect サーバの SSO クッキーが利用できない場合は、id_token_hint
クエリパラメータを使用して、ユーザに属する ID トークンをリクエストに追加する必要があります。
-
Logout endpoint with ID token hint:
http://localhost:9081/oidc/endpoint/{oidcProviderId}/logout?id_token_hint={id_token}
-
End session endpoint with ID token hint:
http://localhost:9081/oidc/endpoint/{oidcProviderId}/end_session?id_token_hint={id_token}
SAMLで構成されたOpenID Connectサーバのバックチャネルログアウト
バックチャネルログアウトは、SAML Web Single Sign-On機能を使用してSAML Identity Provider(IdP)と構成されているOpenID Connectサーバーでも有効です。IdP でのログアウトは、OpenID Connect サーバーが設定された OpenID Connect クライアントにバックチャネルのログアウト要求を送信するトリガーにもなります。
さらに詳しく
Open LibertyのOpenID Connectの設定については、以下のリソースを参照してください。
バックチャネル・ログアウト仕様の詳細については、OpenID Connect Back-Channel Logout 1.0を参照してください。
本リリースにおけるセキュリティ脆弱性 (CVE) の修正
CVE | CVSSスコア | 脆弱性アセスメント | 影響を受けるバージョン | ノート |
---|---|---|---|---|
5.3 |
Weaker security |
17.0.0.3 - 24.0.0.2 |
24.0.0.3 |
For a list of past security vulnerability fixes, reference the Security vulnerability (CVE) list. 過去のセキュリティ脆弱性修正リストについては、セキュリティ脆弱性(CVE)リストを参照してください。
今すぐOpen Liberty 24.0.0.3を入手する
Gradle, Docker,ダウンロード可能なアーカイブからも入手可能です。