-
Notifications
You must be signed in to change notification settings - Fork 0
MS_OAuthSecurityTopics
- 戻る(OAuth 2.0)
- OAuth 2.0 セキュリティ関連トピック
- OAuth 2.0 拡張
- OAuth 2.0 for Native Apps
- OAuth 2.0 for Browser-Based Apps
セキュリティに関する考察と、考慮点。
OAuth 2.0 Threat Model and Security Considerations
-
slideshare.net
-
今更聞けないOAuth2.0 - セキュリティ対策
http://www.slideshare.net/ph1ph2sa25/oauth20-46144252/54 -
OAuth 2.0の概要とセキュリティ
http://www.slideshare.net/charlier-shoe/oauth-20-29540466
-
-
デジタルID最新動向(2) - @IT
- 「OAuth 2.0」の基本動作を知る
http://www.atmarkit.co.jp/ait/articles/1708/31/news124.html - 図解:OAuth 2.0に潜む「5つの脆弱性」と解決法
http://www.atmarkit.co.jp/ait/articles/1710/24/news011.html
- 「OAuth 2.0」の基本動作を知る
-
第3回 Webセキュリティのおさらい
その3 CSRF・オープンリダイレクト・クリックジャッキング:
JavaScriptセキュリティの基礎知識|gihyo.jp … 技術評論社 -
HTTPS でも Full URL が漏れる?OAuth の Code も漏れるんじゃね??
http://oauth.jp/blog/2016/07/27/https-full-url-leaks/
認証ではなく認可のためのプロトコル(権限委譲プロトコル)である。
OAuth 2.0 の仕様を熟読しても OAuth 2.0 を認証に使用しても問題ないように見える。
以下の Blog を参照して、
-
認可のためのプロトコルの OAuth が認証に使えることの説明 | ありえるえりあ
http://dev.ariel-networks.com/wp/archives/258-
「OAuth が権限委譲(認可伝達)プロトコルなのは事実です。
・・・権限委譲プロトコルのひとつの利用方法に過ぎないからです。」 -
「権限委譲プロトコル OAuth で、事実上、認証伝達ができる。」
-
の部分を見ると、全権限の認可は ≒ 認証で、
OAuth 2.0 による認証も、OAuth 2.0 の一利用方法と捉えることができる。
従って、「OAuth 2.0 は認証で使用できる。」と考える。
ただし、「OAuth 2.0 には以下の問題がある。」と考える。
- Open な仕掛けで、インターネット上の野良 Client、Resource Owner から攻撃され得る。
- また、Authorization Server に脆弱性があった場合、攻撃対象になり得る。
- さらに、Client の作り次第で、Access Token が露見し得る。
このため、これらの問題がある状態で、OAuth 2.0 を認証に使用すると、
「Resource Server で公開しているリソースへのアクセスを認可する。」
という限られた権限より、(システムにログインできるということは)大きい権限を
委譲することになるので、
この発言の背景では、「認可に比べ、認証に使用した場合、リスクが大きい。」という
問題が懸念されている。
補足(認証に必要なものが仕様に無い): 上記に加えて実務上より重い問題は、
Access Token には「誰が・いつ認証されたか」が書かれていないことである。
Access Token を受け取れたことをもってログインさせると、
- 別のクライアント向けに発行されたトークンを持ち込まれても気付けない
(Token Substitution / 混同攻撃)- トークンが盗まれた場合、そのまま「その人」としてログインされる
という穴が残る。
OpenID Connect が
aud(宛先)・nonce・auth_timeを含む署名付きの ID トークンを
別立てで発行するのは、まさにこの穴を塞ぐためである。
従って、この問題は、特に脆弱な Implicit Flow を
対象に、以下のように対策できる。
-
Implicit を Authorization Code に変更する。
- Implicit を利用している場合、Authorization Code を利用できないか確認する。
- Authorization Code であれば、Access Token の露見の可能性は低い
(ただし、Client の作り次第)。
-
基本実装を拡張する。
- Bearer Token を JWT アサーションに変更する。
-
OAuth 2.0 拡張で
- 追加のクライアント認証をサポートする。
- 追加された仕様をサポートする。
- OpenID Connectをサポートする。
更に、昨今、Implicit フロー非推奨
(UserAgentでOAuth2のTokenを取得するベスト・プラクティス)の流れが。
補足(Implicit は廃止された): 「非推奨の流れ」と書かれていた Implicit Flow は、
その後 OAuth 2.0 Security BCP と OAuth 2.1 で正式に廃止された。
現在は、パブリック クライアントであっても
Authorization Code + PKCE を使うのが唯一の選択肢である。
OAuth 2.0 拡張のスマホ向けの節を参照
(OAuth 2.0 for Native Apps)。
OAuth 2.0 拡張のデバイス向けの節を参照
(Device Authorization Grant)。
OAuth 2.0 Security Best Current Practice
UserAgentでOAuth2のTokenを取得するベスト・プラクティス
UserAgent = SPA、スマホの意
JWTのコンテキストで何故かSessionとかCookieとか
-
OAuth 1.0 のほうが OAuth 2.0 より安全なの? - Qiita
http://qiita.com/TakahikoKawasaki/items/3600b28af7b63671b968- 「OAuth 2.0 は OAuth 1.0 よりも安全ではない」とは言えない。
- OAuth 1.0 で Client を作る方こそ安全ではない。
- OAuth 1.0 ではなく OAuth 2.0 を採用するのが良い。
-
OAuth 2.0 and the Road to Hell – hueniverse
http://hueniverse.com/2012/07/26/oauth-2-0-and-the-road-to-hell/
- OAuth 2.0 のフローとクライアントタイプの関係
https://qiita.com/TakahikoKawasaki/items/13a3e935b29cd9a997d6 - OAuth 2.0 の認可レスポンスとリダイレクトに関する説明
https://qiita.com/TakahikoKawasaki/items/8567c80528da43c7e844
https://ritou.hatenablog.com/archive/category/Security
- OAuth 2.0 / OpenID Connectにおけるstate, nonce, PKCEの限界を意識する
https://ritou.hatenablog.com/entry/2019/07/08/070000
Tags: IT国際標準, 認証基盤, クレームベース認証, OAuth
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。