SSO アカウントの外部 ID プロバイダを使用した vCenter Server へのログインが機能しなくなる
search cancel

SSO アカウントの外部 ID プロバイダを使用した vCenter Server へのログインが機能しなくなる

book

Article ID: 432355

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

免責事項:これは英文の記事「Login to vCenter Server with External Identity Providers for SSO account stops working」の日本語訳です。
記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  •  vCenterでは、フェデレーション認証用の外部 ID プロバイダを構成できます。
    • vSphere 8.0 Update 1以降では Okta、vSphere 8.0 Update 2以降では Microsoft Entra ID (旧称 Azure AD)がサポートされています。vSphere 8.0 Update 3以降では PingFederate がサポートされています。

  • 外部SSOアカウントを使用して vCenter Server にログインしようとすると、以下のエラーが発生します:
    "Error: Workspace ONE Access encountered an error. Contact your admin and provide the information displayed below" 

  • vCenter Server サービスを再起動すると、一時的に問題は解決します。 

  • ログファイル"/var/log/vmware/vc-ws1a-broker/token-service.log"に下記と同様の記録があります
    YYYY-MM-DDTHH:MM:SS ERROR XXXXX.XXXXX.XXXXX:token (vert.x-eventloop-thread-1) [-;-;127.0.0.1;d6ef8ccf-c7cd-4798-83b5-8dbfc492b7e8;-] io.vertx.ext.web.RoutingContext - Unhandled exception in router java.lang.OutOfMemoryError: Java heap space
または /var/log/vmware/vc-ws1a-broker/accesscontrol-service.logに同様の記録があります:
YYYY-MM-DDTHH:MM:SS ERROR YYYYY.YYYYY.YYYYY:accesscontrol (ForkJoinPool-10-worker-7) [HWS;-;127.0.0.1;cda649a0-1002-4816-a3ee-ecc08f5b84b8;-;-;-] io.vertx.ext.web.RoutingContext - Unhandled exception in router java.lang.ClassCastException: class java.lang.OutOfMemoryError cannot be cast to class com.vmware.vidm.common.exception.MultiFormattableRuntimeException (java.lang.OutOfMemoryError is in module java.base of loader 'bootstrap'; com.vmware.vidm.common.exception.MultiFormattableRuntimeException is in unnamed module of loader 'app')

 

Environment

vCenter Server 8.0 

Cause

この問題はトークン失効スケジュール中に発生します。処理の実行時、デフォルトのページサイズでデータベースからエントリを取得しようとしますが、
これが原因で Out Of Memory (メモリ不足) が発生しています。
この問題は、外部SSOが設定されていない場合にも発生します。

Resolution

Broadcom エンジニアリングはこの問題を認識しており、将来のリリースでの修正に向けて取り組んでいます。修正版がリリースされるまでの間、以下の回避策を適用してください。

  1. vCenterのスナップショットを取得する
    Broadcomは、vCenter Serverへの変更を含む作業の前に、ELM(拡張リンクモード)内のすべてのノードのオフラインスナップショット(仮想マシンの電源をオフにした状態)を取得することを推奨しています。
    VMware vCenter in Enhanced Linked Mode pre-changes snapshot (online or offline) best practice を参照します。

  2. 対象となる token/config/application.properties ファイルを特定する
    # cd /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots
    # find -iname application.properties | grep token

    出力例:
    ./11/fs/opt/vmware/idm/initc/services/token/config/application.properties
    ./12/fs/opt/vmware/idm/initc/services/token/config/application.properties
    ./33/fs/opt/vmware/idm/initc/services/token/config/application.properties

  3. 上記で見つかった最も大きな数字のスナップショットのパスからファイルをバックアップします:
    ./XX/fs/opt/vmware/idm/initc/services/token/config/application.properties (上記の例では、XX は33になります。)

    # cp ./XX/fs/opt/vmware/idm/initc/services/token/config/application.properties /var/core/application.properties

  4. ./XX/fs/opt/vmware/idm/initc/services/token/config/application.properties を編集します。
    # vi ./XX/fs/opt/vmware/idm/initc/services/token/config/application.properties

  5. トークン設定の下に下記の太字の行を追加します。

    次のようになります:
    ## Token configuration
    token.revocation.check.source=local
    token.public.key.source=remote_crypto

    token.delete.expired.tokens.limit=100
    revocation.delete.old.tombstones.limit=100
    revoke.by.oauthclientid.batch.size=500

  6. 次のコマンドによりサービスを再起動します。
    # service-control --restart vc-ws1a-broker

注:
再起動実施後にステータスを確認する場合は、以下のコマンドを実行して HealthState ステータスを確認します。

# vmon-cli -s vc-ws1a-broker
--------
出力例)
[email protected] [ ~ ]# vmon-cli -s vc-ws1a-broker

Name: vc-ws1a-broker
Starttype: AUTOMATIC
RunState: STARTED
RunAsUser: root
CurrentRunStateDuration(ms): XXXXX
HealthState: HEALTHY
FailStop: N/A
MainProcessId: YYYY
--------



Additional Information

Login to vCenter Server with External Identity Providers for SSO account stops working