AI時短ラボ
検索
プロダクト

Google、OAuth(オーオース)のリフレッシュトークンにDPoP(ディーポップ)対応盗まれても秘密鍵がなければ使えない、アクセストークンは従来のまま

執筆:約15分で読めます

Googleは2026年10月15日、OAuthのリフレッシュトークンをクライアントが生成した鍵ペアに結びつけるDPoP(RFC 9449)への対応を開発者ブログで発表した。対象はリフレッシュトークンのみで、アクセストークンは従来のBearerトークンのまま。MCPやマルチエージェントでの注意点も書かれている。

Google、OAuth(オーオース)のリフレッシュトークンにDPoP(ディーポップ)対応──盗まれても秘密鍵がなければ使えない、アクセストークンは従来のまま
目次

Googleは2026年10月15日(現地の掲載日付。時刻の記載はありません)、Google Developers Blogで、OAuth 2.0のリフレッシュトークンをクライアントが生成した鍵ペアに暗号で結びつけるDPoP(ディーポップ、Demonstrating Proof-of-Possession)への対応を発表しました。仕様はIETFのRFC 9449です。Googleは、トークンが盗まれても対応する秘密鍵がなければ再利用できない、と説明しています。結びつけるのはリフレッシュトークンだけで、短命のアクセストークンは従来のBearerトークンのままです。

3行まとめ

  1. GoogleのOAuthが、RFC 9449のDPoPでリフレッシュトークンを鍵ペアに結びつける方式に対応(2026年10月15日・開発者ブログ)
  2. 対象はリフレッシュトークンのみ。有効期間が通常1時間以下のアクセストークンはBearerのままで、Googleの説明ではAPI呼び出しごとの署名検証は発生しない
  3. 純粋なSPAは直接使えずBFFが必要。マルチエージェントでは、中継するエージェントが元の秘密鍵なしに署名できないため、GoogleはGoogle Cloud STSの検討を勧めている

本記事の内容は、日本時間2026年10月16日3時台に公式ページで確認したものです。

何が変わったのか

Googleの説明では、従来のOAuthのBearerトークンは「finders-keepers(拾った者が持ち主)」型です。RedLineやNodeStealerといった情報窃取マルウェアや、AiTM(中間者)攻撃で盗まれると、そのまま使われてしまいます。

DPoPでは、クライアントが非対称鍵ペアを自分で作り、Googleのトークンエンドポイント(https://oauth2.googleapis.com/token)へのリクエストごとに「この鍵を持っている」ことを示す署名付きの証明(DPoP proof、JWT形式)を DPoP ヘッダーに付けます。Googleは、リフレッシュトークンをこの鍵に結びつけることで、永続的に他人になりすませる主な経路をふさぐ、と説明しています。

導入ガイドによる実装上の要点は次のとおりです。

項目 ガイドの記載
鍵 EC P-256(ES256)の鍵ペア。RSAも可能だが、計算コストが高いため非推奨
証明に入れる値 htm(POST固定)、htu(https://oauth2.googleapis.com/token固定)、iat、jti
認可コード交換時の jti 認可コードのSHA-256をBase64URLにした値
更新時の jti リクエストごとの一意なランダム文字列。前回返された nonce を nonce クレームに入れる
nonce 1回限り。無い・無効・期限切れ・再利用はHTTP 400で拒否され、新しい nonce が返る

認可コード交換でリフレッシュトークンを受け取る段階(ガイドの図1の5・6番)と、リフレッシュトークンで新しいトークンを受け取る段階(図2の2〜5番)の2か所で、DPoP proofを付ける必要があります。

ガイドは、期限切れ・誤り・再利用の nonce を使った時や、認可コード交換から更新へ移る時には、サーバーが無条件に use_dpop_nonce のHTTP 400を返して新しい nonce を渡すと書いています。これは「RFC準拠の通常の動作でサーバー障害ではない」ため、クライアント側にはこの400を拾って新しい nonce で証明を作り直し、再試行する処理が必要だとしています。GitHubのSKILL.mdでは、再試行は1回だけとし、再度失敗したら即座にエラーで終わらせるよう指示しています。

なぜアクセストークンは対象外なのか

ブログは、読者が抱きそうな疑問に答える形で理由を書いています。DPoPの署名検証(ES256など)は多くのCPU時間を使うため、Gmail・Calendar・Driveのような大量のリクエストを受けるAPIで毎回検証すると、ゲートウェイ層の負荷が大きくなり、遅延とスケールのコストが増えるという説明です。

そこでGoogleは、次の分担にしました。

  • リフレッシュトークン: 長期間有効で、新しいアクセストークンを出し続けられる。鍵ペアに結びつけ、持ち出されても使えないようにする
  • アクセストークン: 通常1時間以下。Bearerのままなので、ほとんどのAPIリクエストに暗号検証のオーバーヘッドは出ない

SKILL.mdにも、Googleのトークンエンドポイントは "token_type": "Bearer" を返し、Google APIへのリクエストは従来どおり Authorization: Bearer ヘッダーで送り、DPoPヘッダーは付けない、とあります。つまり、アクセストークンが盗まれた場合は、その有効期間のあいだ使われうる設計です。この点はGoogleの説明から読み取れる範囲の整理で、ブログ自身も「実用的なエンジニアリング上のトレードオフ」と呼んでいます。

誰が何をする必要があるのか

ブログは、DPoPには鍵の生成、タイムスタンプとnonceの厳密な扱い、htm・htu・iat・jti の計算、ヘッダーの組み立て、proof JWTの構築が必要で、安全な計算・取り扱い・保管のためのシステム上の制約が増えうる、と注意しています。

SKILL.mdはさらに踏み込み、秘密鍵は extractable: false(取り出し不可)で作るよう求めています。理由は、XSSや依存パッケージ経由のトークン窃取を防ぐためだと説明されています。

ブラウザだけのSPAは直接使えません。 導入ガイドによると、client_secret が必要なことと、DPoP-Nonce ヘッダーにCORS上の制限があることが理由です。SPAで使うには、機密クライアントとして働くBackend-for-Frontend(BFF)を挟み、access_type=offline を有効にして、サーバー側でリフレッシュトークンを結びつけます。ブログは、IETFのブラウザ向けOAuthドラフトにある3つのモデル(BFF、Token-Mediating Backend、Browser-based OAuth Client)でも、リフレッシュトークンのDPoPによる結びつけを勧めています。

なお、導入ガイドの例は calendar.readonly スコープを使っています。どのAPI・どのスコープ・どのクライアント種別が対象かの一覧は、今回確認したページには見当たりませんでした。

MCPとマルチエージェントでの注意点

ブログは、mTLS(RFC 8705)のようなトランスポート層のトークン結びつけは、現代のクラウドプロキシやロードバランサーで途切れたり終端されたりしやすいと書きます。DPoPはHTTPヘッダーのレベルで動くため、複数の中継点を通る環境、たとえばMCP(Model Context Protocol)や自律エージェントの構成にも強い、という説明です。

一方で、委譲には課題があるとも明記しています。エージェントAがエージェントBに仕事を任せ、BがリソースCを呼ぶ構成では、BはAの秘密鍵なしにAの代わりに署名できません。鍵を共有するのはDPoPの原則に反します。

Googleは、消費者向けのOAuthエンドポイント(oauth2.googleapis.com)がOAuth 2.0 Token Exchange(RFC 8693)に対応していないことを挙げ、マルチエージェントやフェデレーションの構成では**Google Cloud Secure Token Service(STS)**を検討するよう勧めています。STSを通せば、中継エージェントが上流のトークンを、自分の鍵ペアに結びついた短命のトークンに交換でき、鍵を渡さずに結びつけを保てるという説明です。

Google Cloud側のエージェント基盤でもDPoPが使われている

ブログは、Google Workspace Context-Aware Access(CAA)が、Gemini Enterprise Agent Platform上のAI処理を守るためにDPoPを使うとも書いています。Agent Gatewayでエージェントの身元を暗号で検証するという位置づけです。

Google Cloudのドキュメント(最終更新2026年10月13日)によると、Agent Gatewayを通るエージェントにはCAAが既定で次を強制します。

  • Agent Gatewayへのアクセス: mTLS(証明書に結びついたトークンの検証)
  • Agent Gatewayより先のサービスへのアクセス: DPoP

Agent Gatewayを有効にするとmTLSがそこで終端されるため、その先ではDPoPで再認証する、という流れです。Agent Gatewayには「Preview」の表記があります。環境変数 GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES を False にするとCAAの強制を外せるとも書かれており、例としてエージェント間でトークンを共有したい場合が挙がっています。

これはOAuthのリフレッシュトークンの話とは別の仕組みですが、同じブログ記事の中で並べて紹介されています。

DPoPで守れないもの

ブログは、DPoPの限界も書いています。DPoPは通常のWebアプリのセッションCookieを保護しません。 Cookieは情報窃取マルウェアの主な標的のままです。そのためGoogleとWICGは、Cookieをデバイスのハードウェア(TPMなど)に結びつけるDBSC(Device Bound Session Credentials)を開発中で、DPoP(アプリケーション層でAPIトークンを守る)とDBSC(ブラウザ・ネットワーク層でセッションCookieを守る)を合わせて多層防御にする、という説明です。

観測:公式ページで確認できたこと、できなかったこと

日本時間10月16日3時台に、ブログ・導入ガイド・SKILL.md・Cloudドキュメントの4ページを取得して読みました。その時点で気づいた点を3つ書きます。

  • 導入ガイドのページの末尾は「Last updated 2026-07-31 UTC」でした。ブログの発表日(10月15日)より2か月以上前の日付です。ガイド自体は発表より前から公開されていた可能性がありますが、公開の経緯までは今回のページからは分かりません。
  • ブログの本文は、導入ガイドとSKILL.mdへのリンクで締めくくられています。実装の詳細はガイド側、コードを書くエージェント向けの指示はSKILL.md側、と役割が分かれていました。
  • 導入ガイドのページには言語選択に日本語がありますが、私が取得したのは英語版で、日本語版の内容までは確認していません。

今回のページから分からないこと

次の点は、今回取得した4ページを検索した範囲では記載を確認できませんでした。確認したのは、料金、一般提供(GA)や段階的な展開の時期、日本を含む提供地域、DPoPの利用を義務にする計画、対象となるAPIやクライアント種別の一覧です。

  • 既存のアプリがすぐ影響を受けるのか: DPoPを使うかどうかは、ガイドの文面では開発者が実装を足す形に読めます。ただし、既存のトークンの扱いが将来変わるかどうかは書かれていません。
  • 効果の数字: 盗難の減少率や性能への影響を示す数値は、ブログにありません。「オーバーヘッドが出ない」はGoogleの設計上の説明です。
  • 筆者は試していません: 本記事は公式ページの読解に基づくもので、実際にDPoPのリクエストを送って動作を確かめたわけではありません。ガイドのサンプルのトークン値や iat は例示用の値です。

SKILL.mdには、WebCrypto の crypto.subtle.sign はECDSA署名を最初からIEEE P1363形式(64バイト)で返すため、DER形式からの変換をしてはいけない、という実装上の落とし穴も書かれています。Java/AndroidやNodeのCommonJSで古いAPIを使う場合に限り、DERから変換するという区別です。実装する人は、ここを先に読むと詰まりにくいはずです。

出典と確認時刻

確認時刻は、いずれも日本時間2026年10月16日3時12分台です。本記事は続報があり次第更新します。

この記事でよく聞かれること

GoogleのOAuthのDPoP対応とは何ですか?
Googleは2026年10月15日の開発者ブログで、OAuth 2.0のリフレッシュトークンを、クライアントが作った非対称鍵ペアに暗号で結びつけるDPoP(RFC 9449)に対応したと発表しました。トークンが盗まれても、対応する秘密鍵がなければ再利用できない仕組みだと説明しています。
DPoPで保護されるのはアクセストークンですか、リフレッシュトークンですか?
Googleの説明では、DPoPで結びつけるのはリフレッシュトークンだけです。有効期間が通常1時間以下の短いアクセストークンは、従来どおりのBearerトークンのままです。GmailやCalendar、Driveなどのリソースへのリクエストごとに署名検証をしないで済ませるための設計だと説明されています。
ブラウザだけで動くSPAでもDPoPは使えますか?
Googleの導入ガイドによると、client_secretが必要なことと、DPoP-NonceヘッダーにCORSの制限があることから、バックエンドのない純粋なクライアント側SPAはDPoPを直接使えません。Backend-for-Frontend(BFF)を機密クライアントとして挟み、サーバー側でリフレッシュトークンを結びつける方法が案内されています。
DPoPはセッションCookieの盗難も防げますか?
防げません。Googleはブログで、DPoPは標準的なWebアプリのセッションCookieを保護しないと明記しています。Cookieについては、GoogleとWICGが開発中のDBSC(Device Bound Session Credentials)が担い、両者を組み合わせた多層防御になるという位置づけです。
シェア: ポスト はてブ

出典・参照資料

AI時短ラボ

大きいニュースはYouTubeでも解説しています。Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

関連記事

Googleの「Agent Anomaly Detection」がプライベートプレビュー──エージェントの推論の痕跡・ツール呼び出し・実行の流れを事後に読んで「境界の外の振る舞い」を見つける。OWASP Agentic Top 10の4項目+資源枯渇、応答は遅くしない、Security Command Centerに通知、APIで次のツール呼び出しを止められるの記事画像

Googleの「Agent Anomaly Detection」がプライベートプレビュー エージェントの推論の痕跡・ツール呼び出し・実行の流れを事後に読んで「境界の外の振る舞い」を見つける。OWASP Agentic Top 10の4項目+資源枯渇、応答は遅くしない、Security Command Centerに通知、APIで次のツール呼び出しを止められる

プロダクト(発表 9月16日)
Google「ゼロトラスト・エージェント」第2回──構文でなく意図を判定する。正規表現の脱獄辞書をModel Armor(入口で403)に、「30ドル超のソフトライセンスは返金不可」を自然言語のポリシー(1判定2,576トークン)に、20ドル×8回で160ドルを抜く多ターン攻撃をAgent Anomaly Detectionに置き換え、再デプロイなしで新ポリシーを足して閉じるの記事画像

Google「ゼロトラスト・エージェント」第2回 構文でなく意図を判定する。正規表現の脱獄辞書をModel Armor(入口で403)に、「30ドル超のソフトライセンスは返金不可」を自然言語のポリシー(1判定2,576トークン)に、20ドル×8回で160ドルを抜く多ターン攻撃をAgent Anomaly Detectionに置き換え、再デプロイなしで新ポリシーを足して閉じる

検証(発表 9月15日)
Google ADKにModel Armorガードレールが標準搭載──「スクリーニングに失敗したら通す」ではなく「失敗したら塞ぐ」を既定にした設計の記事画像

Google ADKにModel Armorガードレールが標準搭載 「スクリーニングに失敗したら通す」ではなく「失敗したら塞ぐ」を既定にした設計

検証
GitHub、コードスキャンの警告をCopilot(コパイロット)に任せる「Agentic autofix」を一般提供──CodeQLで再検証してからプルリクエストを作成、料金はAIクレジットとActions分数の記事画像

GitHub、コードスキャンの警告をCopilot(コパイロット)に任せる「Agentic autofix」を一般提供 CodeQLで再検証してからプルリクエストを作成、料金はAIクレジットとActions分数

プロダクト
Google、Apigee(アピジー)hybrid 1.17.0でMCP対応──AIエージェント向けツールの処理を自社のKubernetesクラスタ内で動かせるの記事画像

Google、Apigee(アピジー)hybrid 1.17.0でMCP対応 AIエージェント向けツールの処理を自社のKubernetesクラスタ内で動かせる

プロダクト
Google、Gemini(ジェミニ)アプリに「Customize」を追加──スキルの追加と40以上のアプリ連携を左メニューの1か所で管理の記事画像

Google、Gemini(ジェミニ)アプリに「Customize」を追加 スキルの追加と40以上のアプリ連携を左メニューの1か所で管理

プロダクト
Google、Gemini(ジェミニ)のMacアプリにAntigravity(アンチグラビティ)を組み込み──チャットからコーディングエージェントを起動、計画を承認すれば裏で構築とテストの記事画像

Google、Gemini(ジェミニ)のMacアプリにAntigravity(アンチグラビティ)を組み込み チャットからコーディングエージェントを起動、計画を承認すれば裏で構築とテスト

プロダクト
Pixelの「詐欺の可能性」警告が日本語に対応──メッセージを開く前の通知の段階で表示、9月のPixel Dropで日本を含む9か国・6言語に拡大。VIPウィジェット刷新、Pixel Watchの「手を上げて話す」精度向上、Audible 2か月無料もの記事画像

Pixelの「詐欺の可能性」警告が日本語に対応 メッセージを開く前の通知の段階で表示、9月のPixel Dropで日本を含む9か国・6言語に拡大。VIPウィジェット刷新、Pixel Watchの「手を上げて話す」精度向上、Audible 2か月無料も

プロダクト(発表 9月16日)