vCenter Server のドメイン/管理者ユーザーのスケジュール設定タスクが「タスク操作について NotAuthenticated です」エラーで失敗する
search cancel

vCenter Server のドメイン/管理者ユーザーのスケジュール設定タスクが「タスク操作について NotAuthenticated です」エラーで失敗する

book

Article ID: 446841

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

免責事項:これは英文の記事「Domain/Admin user based Scheduled Tasks failing to run on vCenter with error "NotAuthenticated for the task operation" (385375)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。


vCenter Server 8.0 へのアップグレード後、一部の環境において、ドメインユーザーによって作成されたスケジュール設定タスクの実行が失敗する場合があります。

  • /var/log/vmware/vpxd/vpxd.log ファイルに、以下のようなエラーが出力されます。

    [yyyy-mm-ddThh:mm:ss] error vpxd[06802] [Originator@6876 sub=MoScheduledTask opID=ProcessScheduledTaskFiring-##ID####] [AcquireToken] Failed to get token. Error:
    --> Error:
    -->    com.vmware.oauth2.errors.invalid_grant
    --> No messages!
    -->
    [yyyy-mm-ddThh:mm:ss] error vpxd[06802] [Originator@6876 sub=MoScheduledTask opID=ProcessScheduledTaskFiring-##ID####] BadVapiConfiguration / NotAuthenticated Exception while running the task: Error:
    -->    com.vmware.oauth2.errors.invalid_grant
    --> No messages!
    -->
  • /var/log/vmware/sso/tokenservice.log ファイルに、以下のようなエラーが出力されます。

    [yyyy-mm-ddThh:mm:ss] ERROR tokenservice[79:tomcat-http--41] [CorId=#######-#####-####-####-###########OpId=] [com.vmware.vcenter.tokenservice.vapi.TokenProviderImpl] Exchange failed due to invalid grant:
    com.vmware.vcenter.tokenservice.exceptions.InvalidGrant: JWT token failed signature verification. Token:{"sub":"ExampleUser@domain","aud":"vmware-tes:vc:persistabletoken","act":{"sub":"vpxd-#######-#####-####-####-###########@vsphere.local"},"scope":"offline_access","iss":"https:\/\/domain.domain\/openidconnect\/domain_name","iat":1722332383,"jti":"########-####-####-####-###########"}

Environment

  • vCenter server 8.0.2
  • vCenter server 8.0.3 

Cause

  • fixsts スクリプトを実行しても、vCenter データベースから既存の永続トークンは削除されません。
  • これにより、古いトークンが残存し、スケジュール設定タスクの実行が失敗する原因となります。

Resolution

VMware by Broadcom Engineering は、この問題を認識しており、恒久的な修正に取り組んでいます。

Workaround:

影響を受けるユーザー アカウントに対して、古いトークンをクリアするためのスクリプトを実行できます。

  1. スクリプトを実行する前に、必ず vCenter Server のスナップショットを取得してください。

    Note: vCenter Server が Enhanced Linked Mode 構成で複数台存在する場合は、すべての vCenter Server を正常にパワーオフした状態でスナップショットを取得する必要があります。

  2. KB 385375 に添付されている 'remove_persistable_tokens.sh' スクリプトをダウンロードし、vCenter Server の /tmp ディレクトリにアップロードします。

  3. 次のコマンドを実行して、スクリプトに実行権限を付与します。

    chmod +x remove_persistable_tokens.sh
    

     

  4. vSphere Client の「スケジュール設定タスク」画面から、該当タスクの開始者のユーザー名を確認します。

  5. 手順 4 で確認したユーザー名(tokenservice.log に出力されている影響を受けるユーザー名)をパラメータとして指定し、スクリプトを実行します。
    これにより、該当ユーザーによって過去にスケジュール設定されたすべてのタスクが失敗するようになります。

    ./remove_persistable_tokens.sh 'task-initiator1' 'task-initiator2' ...
    
    例: ./remove_persistable_tokens.sh 'EXAMPLE\User'     <--- ユーザー名はシングル クォーテーション(')で囲む必要があります
    

     

  6. スクリプトが "./remove_persistable_tokens.sh: line 3: $'': command not found" というエラーで失敗する場合は、以下のコマンドを実行してください。
    このエラーは、Windows ベースのテキスト エディタからコピーした際にスクリプトに付加された DOS 形式の改行コードが原因で発生することがあります。

    sed -i -e 's/\r$//' remove_persistable_tokens.sh
    

     

  7. 既存のスケジュール設定タスクを削除し、再度スケジュールを設定し直します。

Additional Information

  • スクリプトをダウンロードして /tmp ディレクトリにアップロードした場合、実行時に以下のエラーが発生することがあります。

    root@VC-XXX [ /tmp ]#./remove_persistable_tokens.sh 'task-initiator1' 'task-initiator2'
    : No such file or directory.sh: line 1: /etc/profile.d/vmware-vpostgres-config.sh
    : No such file or directory.sh: line 2: /etc/profile.d/VMware-visl-integration.sh
    ./remove_persistable_tokens.sh: line 3: $'': command not found
    ./remove_persistable_tokens.sh: line 9: $'': command not found
    ./remove_persistable_tokens.sh: line 10: syntax error near unexpected token `$'do''
    '/remove_persistable_tokens.sh: line 10: `for param in "$@"; do

    このエラーが発生した場合は、以下のコマンドを実行して、スクリプトの改行コードを修正します。

    sed -i -e 's/\r$//' remove_persistable_tokens.sh

    改行コードの修正後、影響を受けるタスクの開始者 (task-initiator) を指定して、再度スクリプトを実行します。

    ./remove_persistable_tokens.sh 'task-initiator1' 'task-initiator2' 

    上記のコマンドを実行しても依然として同じエラーが発生する場合は、スクリプトを vCenter Server の別のディレクトリ(例: /var/core)に移動して実行してください。
    なお、スクリプトが正常に実行された後は、アップロードしたスクリプトファイルを必ずシステム上から削除してください。