Service Account認証(JWT)でdelegated_userを指定すると invalid_request (UserId or client_id is not valid.) になる

f8b3be

2026.08.11既読 27

Calendar API (GET /v1.0/users/{userId}/calendar/events) を使い、Service Account認証(JWT)で特定メンバーの個人カレンダーの予定を取得しようとしています。
delegated_userクレームを指定せずにJWTを発行した場合はアクセストークンの取得自体には成功しますが、Calendar API呼び出し時に以下のエラーになります。
HTTP 400
{"code":"SERVICE_ACCOUNT_NOT_ALLOWED","description":"Unable to use service account"}
そこでJWTのJSON Claims Setにdelegated_userを追加したところ、今度はアクセストークンの発行自体が以下のエラーで失敗するようになりました。
HTTP 400
{"error_description":"UserId or client_id is not valid.","error":"invalid_request","error_uri":"See document on https://developers.worksmobile.com/docs/auth-oauth"}
【試したこと】
・delegated_userの値を、対象メンバーの管理者コンソール上のログインID表示(アカウント名@ドメインコードの形式)と完全に一致させた
・sub(Service Account、xxxx.serviceaccount@yyyyの形式)とドメイン部分を揃えた
・expをiatから3000秒後(50分後)に短縮し、60分ちょうどの境界値の可能性を排除した
・アクセストークンのキャッシュを都度破棄してから再試行した
・送信しているJWTペイロードの中身をログ出力し、iss(Client ID)、sub(Service Account)が管理画面の表示と一致していることを確認した
【送信しているJWTペイロード(例、値はマスクしています)】
{
 "iss": "********************",
 "sub": "wcn32.serviceaccount@d-1",
 "iat": 1786451606,
 "exp": 1786454606,
 "delegated_user": "j_takada@d-1"
}
【質問】
1. delegated_userクレームを使ってアクセス委任を行うには、Developer Console側のアプリ設定や、管理者コンソール側で、ドキュメントに明記されている以外の追加設定が必要でしょうか。
2. delegated_userに指定すべき値の正確な形式を教えてください(管理者コンソール上のログインID表示のままでよいか、別の識別子が必要か)。
3. 管理者コンソール上で、この委任設定自体を事前に許可・承認する画面があれば教えてください。
よろしくお願いいたします。

コメント2

  • 업데이트 된 답글입니다.

    おそらく、アクセス委任アプリを新規作成する必要かありますよ。

    2026.08.11

    0
  • 업데이트 된 답글입니다.

    f8b3be 投稿者

    ご指摘ありがとうございます!うまくいきました!

    09:33

    0
次の投稿音声メッセージが送ってもCallbackが発生しない
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。