Skip to content

MS_UserAgentOAuthBestPractice

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

UserAgentでOAuth2のTokenを取得するベスト・プラクティス

概要

UserAgent(SPAスマホ)で OAuth2 の Token を取得するベスト・プラクティス
(UserAgent から、直接、Resource Server の WebAPI にアクセスする)

詳細

OAuth 2.1

OAuth 2.1を参照。

SPA

SPA : Single-page application

Implicitが使用できる...が非推奨。

補足(結論は出た): 「非推奨になってきたらしい」と書かれていた Implicit Flow は、
その後 RFC 9700(OAuth 2.0 Security BCP)と OAuth 2.1
正式に廃止
された。
現在の SPA の標準構成は、本節が述べているとおり
Authorization Code + PKCE である。

Hybrid Flowでセキュリティが強化。

OpenID Connect の Hybrid Flow)

  • code や token の scope(認可された権限)を変える。
    Financial API (FAPI)では、token:参照系、code:更新系などとなっている。

  • 入手した code は Client の Server 側にポストして使用する。
    ※ Public クライアントに client_idclient_secret を持たせてはダメなので。

  • 問題は、マイナーで、プロファイルがあまり明確ではないこと。

Financial API (FAPI)も策定中。

Token Bindingの雲行きが怪しくなっているので、
PKCE + Fragment みたいな方式はアリかもしれない。

補足(Token Binding は普及しなかった): 「雲行きが怪しくなっている」と
書かれていた Token Binding は、
主要ブラウザが実装を見送ったため事実上ディスコンになった。
送信者制約付きトークンの手段としては、現在
OAuth2.0 DPoP(RFC 9449)と
Mutual TLS(RFC 8705)が標準化されており、
FAPI 2.0 もこの 2 つを前提にしている。

OAuth2.0 DPoP(ドラフト)

  • SPA をターゲットとして仕様が作成されている。
  • 名前の通り、アプリケーション・レイヤで、記名式切符を発行することができる。
  • これにより、SPA から直接 Token エンドポイントにリクエストすることができる。

OAuth2.0 DPoPを参照。現在は RFC 9449 として発行済み)

PKCE 4 SPAでFA(現時点で)

Authorization Code Grant Flow with PKCE
SPA でのImplicit 代替としてデファクト化。

PKCE Flow

移行メモ(添付ファイル): 上の図(元の添付ファイル名 PKCE Flow.jpg)は、
元ページに添付されていたが本文からは参照されていなかった
内容が本節(SPA における PKCE のフロー)に対応するため、ここに配置した。

Token保存先の問題

JWTのコンテキストで何故かSessionとかCookieとかを参照。

スマホ

スマホの前提条件

スマホではImplicitは使用できない。

スマホではHybrid Flowも使用できない。

OpenID Connect の Hybrid Flow)

移行メモ(アンカーの重複): 元ページでは SPA 側の
「Hybrid Flow でセキュリティが強化。」と
スマホ側の「Hybrid Flow も使用できない。」に
同じアンカー ID が振られていた(PukiWiki 側の記述ミス)。
移行先では見出しの文字列がそのままアンカーになるため影響はない。

スマホではOAuth PKCEを適切に利用する。

OAuth PKCEを参照。

スマホでもFinancial API (FAPI)は策定中。

Financial API (FAPI)を参照。

補足(SPA とスマホの違い): 両者はどちらも
client_secret を持てないパブリック クライアントだが、
リダイレクトの受け口が違う

SPA スマホ(ネイティブ)
受け口 自ドメインの HTTPS URL カスタム URI スキーム/App Links
主な脅威 XSS によるトークン奪取 他アプリによるスキーム乗っ取り
対策 PKCE + BFF、トークンを JS から隔離 PKCE + クレーム済み HTTPS スキーム

本ページが SPA とスマホを別立てで論じているのは、この違いによる。

参考

OAuth 2.1 の参考

OAuth 2.1

ベストプラクティス

Financial API (FAPI) の参考

Financial API (FAPI)

OSSコンソーシアム

本 Wiki 内


Tags: IT国際標準, 認証基盤, クレームベース認証, OAuth

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally