第2章 リリース固有の変更

アップグレードする前に、これらの変更を慎重に確認してください。

2.1. RH SSO 7.6

Red Hat Single Sign-On 7.5 から Red Hat Single Sign-On 7.6 に以下の変更が加えられました。

2.1.1. 段階的な認証

段階的な認証は新しい機能です。この機能は、トークンに acr 要求を追加する必要があるプロトコルマッパーが含まれる acr クライアントスコープを提供します。acr 要求は、このバージョンよりも前のように自動的に追加されなくなりましたが、このクライアントスコープおよびプロトコルマッパーを使用して追加されます。

クライアントスコープはレルムのデフォルトクライアントスコープとして追加されるため、新規に作成されるすべてのクライアントに追加されます。パフォーマンス上の理由から、クライアントスコープは移行時に既存のすべてのクライアントに自動的に追加されません。移行後に、クライアントにはデフォルトで acr 要求がありません。以下のアクションの実行について検討してください。

  • 段階的な認証機能を使用する予定がなく、トークンの acr 要求に依存する場合は、Server Installation and Configuration Guide で説明されているように step_up_authentication 機能を無効にできます。要求は、通常の認証の場合は 1 の値で、SSO 認証の場合は 0 の値で、それぞれ追加されます。
  • 管理 REST API または管理コンソールにより、手動でクライアントに acr クライアントスコープを追加します。これは、特に段階的な認証を使用する場合は必要です。レルムに多数のクライアントがあり、それらすべてに acr 要求を使用する場合は、データベースに対してこれと同様の SQL をトリガーできます。ただし、Red Hat Single Sign-On がすでに起動している場合は、キャッシュをクリアするか、サーバーを再起動することを忘れないようにしてください。
insert into CLIENT_SCOPE_CLIENT (CLIENT_ID, SCOPE_ID, DEFAULT_SCOPE) select CLIENT.ID as CLIENT_ID, CLIENT_SCOPE.ID as SCOPE_ID, true as DEFAULT_SCOPE
from CLIENT_SCOPE, CLIENT where CLIENT_SCOPE.REALM_ID='test' and CLIENT_SCOPE.NAME='acr' and CLIENT.REALM_ID='test' and CLIENT.PROTOCOL='openid-connect';

2.1.2. OpenID Connect のログアウト

以前のバージョンの Red Hat Single Sign-On は、http(s)://example-host/auth/realms/my-realm-name/protocol/openid-connect/logout?redirect_uri=encodedRedirectUri などのログアウトエンドポイント URL を開いて、ユーザーの自動ログアウトおよびアプリケーションへのリダイレクトをサポートしていました。この実装は使い易かった一方、パフォーマンスおよびセキュリティーに悪影響を及ぼす可能性がありました。新しいバージョンでは、OpenID Connect RP-Initiated Logout 仕様に基づくログアウトへの対応が改善されました。パラメーター redirect_uri はサポートされなくなりました。また、新しいバージョンでは、ユーザーがログアウトを確認する必要があります。ログインに使用する ID トークンで id_token_hint パラメーターと共に post_logout_redirect_uri パラメーターを追加すると、確認を省略し、アプリケーションに自動的にリダイレクトすることができます。

既存のデプロイメントは以下のように影響を受けます。

  • アプリケーションが redirect_uri パラメーターで直接リンクを使用してエンドポイントをログアウトする場合、上記のようにこれを変更する必要がある場合があります。redirect_uri パラメーターを完全に削除するか、id_token_hint パラメーターおよび post_logout_redirect_uri パラメーターに置き換えることを検討してください。
  • java アダプターを使用し、アプリケーションが httpServletRequest.logout() を呼び出してログアウトする場合、この呼び出しはログアウトエンドポイントのバックチャネル版を使用し、これは変更されないため、影響を受けません。
  • 最新の javascript アダプターを使用する場合も、影響を受けません。ただし、アプリケーションが古いバージョンの JavaScript アダプターを使用する場合、このアダプターは非推奨の redirect_uri パラメーターでログアウトエンドポイントのバリアントを使用するため、影響を受けます。この場合は、最新バージョンの JavaScript アダプターにアップグレードする必要がある場合があります。
  • Node.js アダプターでは、JavaScript アダプターと同じガイドラインが適用されます。アダプターの古いバージョンは非推奨の redirect_uri パラメーターを使用するため、最新バージョンに更新することが推奨されます。最新の Node.js アダプターでは、ドキュメントまたは Node.js アダプターのサンプルで説明されているように /logout URL に基づくログアウトを使用する限り、影響を受けません。ただし、アプリケーションがメソッド keycloak.logoutUrl を直接使用する場合は、このメソッドの 2 つ目の引数として idTokenHint を追加することを検討してください。このバージョンで、2 つ目の引数として idTokenHint を追加する可能性が新たに追加されました。idTokenHint は、ログイン時に取得した有効な ID トークンである必要があります。idTokenHint の追加はオプションですが、これを省略する場合は、ユーザーは前述のようにログアウト画面を確認する必要があります。また、ログアウト後はアプリケーションにリダイレクトされません。

アプリケーションが古い形式の redirect_uri パラメーターを使用できる後方互換性のオプションがあります。

standalone-*.xml ファイルに以下の設定を含めると、このパラメーターを有効にすることができます。

<spi name="login-protocol">
    <provider name="openid-connect" enabled="true">
        <properties>
            <property name="legacy-logout-redirect-uri" value="true"/>
        </properties>
    </provider>
</spi>

この設定では、redirect_uri パラメーターの形式を引き続き使用できます。id_token_hint が省略されている場合は、確認画面が必要なことに注意してください。

警告

後方互換性のスイッチは、今後のバージョンで削除される予定です。このスイッチを使用せずに、上述のとおりできるだけ早くクライアントを更新することが推奨されます。

2.1.3. upload-scripts 機能の削除

以前のバージョンの Red Hat Single Sign-On は、管理コンソールや REST API などの管理インターフェイスを介して JavaScript コードの管理をサポートしていました。このバージョン以降はこれは不可能になり、以下のプロバイダーを設定するためにスクリプトをサーバーにデプロイしなければならなくなりました。

  • OpenID Connect Script Mapper
  • Script Authenticator (認証の実行)
  • JavaScript Policies

サーバーにスクリプトをデプロイする方法は、ドキュメント を参照してください。スクリプトを使用するには、テクノロジープレビュー機能の scripts を有効にする必要がある点に注意してください。

./standalone.sh -Dkeycloak.profile=preview

スクリプトをデプロイする際に、サーバーは対応するプロバイダーを自動的に作成し、認証フロー、マッパー、および認可ポリシーの設定時に選択できるようにします。

通常、レルムを更新する手順は次のとおりです。

  • アップグレードする前に、使用しているスクリプトプロバイダーを削除します。
  • アップグレード後に、ドキュメント の手順に従ってスクリプトをデプロイします。
  • サーバーにデプロイされたスクリプトから作成されたプロバイダーを使用するように、認証フロー、マッパー、およびクライアント認可設定を更新します。

2.1.4. アカウントコンソールの Patternfly のアップグレード

Patternfly (PF) React ライブラリーが更新され、@patternfly/react-core が v3.153.3 から v4.147.0、@patternfly/react-icons が v3.15.16 から v 4.11.8 に、@patternfly/react-styles が v3.7.14 から v4.11.8 に更新されました。アカウントコンソールを PF 設計標準に合わせるために、マイナーな UI 更新が加えられました。

PF の重大な変更により、カスタム開発アカウント UI は、これらの更新と互換性がない場合があります。PF コンポーネントに対する提案の更新により、ほとんどの重大な変更が解決可能です。

リソース:

重大な変更が含まれることがわかっているコンポーネント:

  • アラート
  • action の提案が actionClose に変更
  • Expandable
  • ExpandableSection に名称変更
  • Title
  • size 属性が TitleSizes を使用するようになりました
  • DataListContent
  • noPaddinghasNoPadding に変更
  • Grid、Stack、Level、Gallery
  • gutter 属性が hasGutter に変更
  • Modal
  • サイジング制御が isLarge (例) から ModalVariant の使用に変更 (例:variant={ModalVariant.large})
  • Select
  • ariaLabelTypeAheadtypeAheadAriaLabel に変更
  • isExpandedisOpen に変更
  • ariaLabelledByaria-labelledby に変更
  • DataListContent
  • noPaddinghasNoPadding に変更

2.1.5. クライアントポリシーの移行:client-scopes

client-scopes 条件を含むポリシーを使用し、JSON ドキュメントを直接編集した場合は、JSON ドキュメントの scope フィールド名を scopes に変更する必要があります。

2.1.6. Liquibase をバージョン 4.6.2 にアップグレード

Liquibase はバージョン 3.5.5 から 4.6.2 に更新されました。これには、いくつかのバグ修正や、ServiceLoader を使用してカスタム拡張機能を登録する新しい方法などが含まれます。

アップグレードガイド (特に、アップグレード前の既存データベースのバックアップ) に厳密に従います。最善の努力で Liquibase のアップグレードの結果をテストしましたが、一部のインストールで不明な特定のセットアップを使用している可能性があります。

2.1.7. Red Hat Single Sign-On Operator の非推奨の機能

今回のリリースにより、Red Hat Single Sign-On Operator の Keycloak CR で podDisruptionBudget フィールドが非推奨になりました。このオプションフィールドは、Operator が OCP 4.12 以降のバージョンにデプロイされると無視されます。

回避策として、以下のようにクラスターで Pod Disruption Budget を手動で作成できます。

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  labels:
    app: keycloak
  name: keycloak
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      component: keycloak

Kubernetes のドキュメント も参照してください。

2.1.8. Red Hat Single Sign-On Operator の重要なバグ修正

以前のバージョンの Operator で発生した 重要なバグ が原因で、RH-SSO StatefulSet の Selector フィールドが誤設定されていました。設定が間違っていると、7.5 から 7.6 のアップグレードプロセスで問題が発生し、RH-SSO デプロイメントが正常に実行されない可能性があります。

Operator パッチリリースでは修正が導入されました。修正の一環として、Operator は 7.5 から 7.6 へのアップグレード時に RH-SSO StatefulSet を削除および再作成 する可能性があることに注意してください。修正を適切に機能させるには、recreate アップグレードストラテジーを使用するようにしてください。サーバーのインストールおよび設定ガイド の関連の章を参照してください。

2.1.9. Red Hat Single Sign-On Operator 7.6.2 使用時のプローブの変更

7.6.2 で導入された Red Hat Single Sign-On OpenShift イメージの変更に合わせて、Operator はカスタムプローブを使用する代わりに、イメージに存在するデフォルトの liveness および readiness プローブを利用するようになりました。既存の Red Hat Single Sign-On デプロイメントの場合、Operator はアップグレード中にプローブを自動的に更新しようとします。ただし、keycloak-probes ConfigMap を手動で変更してプローブをカスタマイズした場合、Operator はユーザーの変更を上書きしないようにプローブを更新しません。この状況では、プローブを手動で更新する (または Operator が再作成するために ConfigMap を削除する) 必要があります。そうしないと、アップグレードされた Red Hat Single Sign-On 7.6.2 デプロイメントは準備ができていないと表示されます。

2.1.10. Red Hat Single Sign-On Operator 7.6.5 使用時のプローブの変更

FIPS が有効な環境での実行を許可するために、プローブ認証ハッシュアルゴリズムが変更されました。プローブのデフォルトタイムアウトが 1 秒で、CPU 制限も 1 未満に指定されているテンプレートベースのインストールでは、プローブが継続的に失敗する可能性があります。これらの失敗により再起動が行われた場合は、DeploymentConfig を変更するか、Operator で使用されているものと一致するより大きなタイムアウト値を持つ新しくリリースされたテンプレートに再調整して、プローブのタイムアウトを増やす必要があります。