第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 コンポーネントに対する提案の更新により、ほとんどの重大な変更が解決可能です。
リソース:
- [Patternfly ドキュメント](https://www.patternfly.org)
重大な変更が含まれることがわかっているコンポーネント:
- アラート
-
action
の提案がactionClose
に変更 - Expandable
-
ExpandableSection
に名称変更 - Title
-
size 属性が
TitleSizes
を使用するようになりました - DataListContent
-
noPadding
がhasNoPadding
に変更 - Grid、Stack、Level、Gallery
-
gutter
属性がhasGutter
に変更 - Modal
-
サイジング制御が
isLarge
(例) からModalVariant
の使用に変更 (例:variant={ModalVariant.large}
) - Select
-
ariaLabelTypeAhead
がtypeAheadAriaLabel
に変更 -
isExpanded
がisOpen
に変更 -
ariaLabelledBy
がaria-labelledby
に変更 - DataListContent
-
noPadding
がhasNoPadding
に変更
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 で使用されているものと一致するより大きなタイムアウト値を持つ新しくリリースされたテンプレートに再調整して、プローブのタイムアウトを増やす必要があります。
2.1.11. アカウントコンソールバージョン 1 でステップアップ認証を使用することは推奨していません。
ステップアップ認証に関連して、アカウントコンソール V1 には制限があります。問題は、ユーザーがパスワードを使用してアカウントコンソールバージョン 1 に対して認証し、ユーザーに TOTP 認証情報を追加するか、既存の TOTP 認証情報を削除できることです。この状況は、ユーザーのパスワードを盗んだ人が別の TOTP を追加することで、ユーザーの 2 番目の認証をバイパスできることを意味します。この問題は、アカウントコンソールバージョン 2 では発生しません(Red Hat Single Sign-On 7.6.8 でサポート)。そのバージョンでは、ユーザーの追加または削除に関する、対応するレベルのクレデンシャルを使用して、ユーザーが常に認証されます。
最善の軽減策は、ステップアップ認証を使用するときにアカウントコンソールバージョン 1 を使用しないようにすることです。アカウントコンソールバージョン 1 は、アカウントテーマが明示的に keycloak
テーマに切り替わると機能します。
2.1.12. 管理者 send-verify-email API は、Red Hat Single Sign-On 7.6.10 へのアップグレード後に同じメール検証テンプレートを使用します。
PUT /admin/realms/{realm}/users/{id}/send-verify-email
このリリースでは、この API は executeActions.ftl
の代わりに email-verification.ftl
テンプレートを使用します。
アップグレード前
Perform the following action(s): Verify Email
アップグレード後
Confirm validity of e-mail address email@example.org.
この API を使用したユーザーのメールアドレスの検証方法を変更するために executeActions.ftl
テンプレートをカスタマイズした場合は、変更内容を新しいテンプレートに移してください。
デフォルトの有効期間の値 (12 時間) をオーバーライドできるように、lifespan
という新しいパラメーターが導入されます。
以前の動作を希望する場合は、次のように execute-actions-email
API を使用してください。
PUT /admin/realms/{realm}/users/{id}/execute-actions-email ["VERIFY_EMAIL"]