ドメインユーザー、管理者のスケジュールタスクが、「<<ユーザー>> がタスク操作について NotAuthenticated です。」で失敗する。
search cancel

ドメインユーザー、管理者のスケジュールタスクが、「<<ユーザー>> がタスク操作について NotAuthenticated です。」で失敗する。

book

Article ID: 426777

calendar_today

Updated On:

Products

VMware vCenter Server VMware vCenter Server 8.0

Issue/Introduction

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

vCenter 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' スクリプトは現在、STS 証明書を更新する時に、vCenter サーバーからタスク実行のための既存の認証用トークン(STS 証明書でサインされています)を削除しません。(最新の vCert は、STS 証明書を更新する時に警告が表示されます)
  • そのため、それらの古いトークンが原因で、以降のスケジュールタスクが失敗します。

Resolution

開発部門ではこの事象を認識しており、恒久的な修正に取り組んでいます。

回避策:

スクリプトで該当ユーザーの古いトークンを削除することができます。

  1. スクリプトを走らせる前に、vCenter のスナップショットを取得してください。拡張リンクモードの 2 台以上の vCenter の場合は、すべての vCenter サーバーをパワーオフし、スナップショットを取得してください。
  2. この KB に添付されているスクリプト 'remove_persistable_tokens.sh' をダウンロードし、vCenter の /tmp にアップロードしてください。
  3. 以下のコマンドで、スクリプトを実行可能にしてください。
    chmod +x remove_persistable_tokens.sh
  4. vSphere UI で、「スケジュール設定タスク」から該当タスクの「開始者」を探し、以下のコマンド入力時に、引数の "task-initiator#" のところをその「開始者」で置換してください。
  5. 影響を受けたタスク開始者を指定してスクリプトを実行してください。するとそのユーザーのすべてのスケジュールタスクが失敗します。(トークンが削除されるため)
    ./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 上でのエディタ等でコピーした際に、行末コードが変更された場合に発生します。
    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
  • もう一度、影響のあったタスク開始者を指定して、コマンドを実行する。

    ./remove_persistable_tokens.sh 'task-initiator1' 'task-initiator2' 
  • エラーが解消しない場合、スクリプトを vCenter 上の別の場所(例 /var/core) に移動してください。実行後はスクリプトを削除することを忘れないようにしてください。

Attachments

remove_persistable_tokens.sh get_app