Service Account認証(JWT)でdelegated_userを指定すると invalid_request (UserId or client_id is not valid.) になる
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
업데이트 된 답글입니다.
f8b3be 投稿者
09:33
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。