「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OAuth 2.0 セキュリティ関連トピック]]

* 目次 [#v8b8e49a]
#contents

*概要 [#d531ad5d]
UserAgent([[SPA>#q18ff74d]]や[[スマホ>#m0aacf50]])でOAuth2のTokenを取得するベスト・プラクティス~
(UserAgentから、直接、Resource ServerのWebAPIにアクセスする)

*詳細 [#l33d0f36]

**SPA [#q18ff74d]
SPA : Single Page Application

***Implicitが使用できる。 [#g8b68319]

...が、最近、

-[[Implicitグラント種別>OAuth#m5c2d510]]

-[[Implicit Flow>OpenID Connect#e7adf5c2]]

が、[[公式に非推奨>OAuth 2.0 Security Best Current Practice]]になったらしい。

***[[Hybrid Flow>OpenID Connect#l565139a]]でセキュリティが強化される。 [#ya921110]

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

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

***[[Financial API (FAPI)>#q58a3e42]]も策定中。 [#x3cf1768]
-[[Token Binding]]時代の到来。
-[[PKCE+Token Binding+Fragment>OAuth 2.0 Security Best Current Practice#c545761d]]

**スマホ [#m0aacf50]

***前提条件 [#u115b44f]
-(セキュリティ的懸念から)認可リクエストを、外部Webブラウザを経由してのみ行う。~
[[プラットフォームによっては、外部Webブラウザ相当のUXを向上させる仕組みが用意されている>OAuth 2.0 for Native Apps#m215f35d]]。

-codeとtokenが、「Private-Use URL Scheme上書き攻撃」などから保護されない可能性がある。

***Implicitは使用できない。 [#ubdf2972]

-[[Implicitグラント種別>OAuth#m5c2d510]]

-[[Implicit Flow>OpenID Connect#e7adf5c2]]

***[[Hybrid Flow>OpenID Connect#l565139a]]も使用できない。 [#ya921110]

***[[OAuth PKCE]]を適切に利用する。 [#x48308e1]

-これにより「Private-Use URL Scheme上書き攻撃」などから保護される。

-入手したcodeはClientのServer側にポストしてアクセストークン・リクエストする。~
※ Publicクライアントにclient_id、client_secretを持たせてはダメなので。

***[[Financial API (FAPI)>#q58a3e42]]も策定中。 [#m9f94dc3]
[[Token Binding]]時代の到来。

**[[Financial API (FAPI)]] [#q58a3e42]
-金融向け規格なので、前述よりさらにセキュリティ・レベルが強化される。
-現時点では、まだドラフト段階だが、スマホ、SPA、共に、この規格の導入を検討してイイ。

*参考 [#t3d9eecd]

**OSSコンソーシアム [#a0dd64d2]
-UserAgentでOAuth2のTokenを取得するベスト・プラクティス~
https://www.osscons.jp/joavafb1i-537/#_537

-Single Sign-On user experience with OAuth PKCE by Open棟梁 and Cordova.~
https://www.osscons.jp/jobgbko8n-537/#_537

**[[OAuth PKCE]]利用時の構成図 [#nd4ecb50]
スマホの[[OAuth PKCE]]認証フローは複雑で忘れ易く、~
開発環境の構築時も「どうするんだっけ?」と一苦労するのでメモ。

Client(UserAgent)は、
+[[OAuth PKCE]]の認可リクエスト ~ 認可レスポンスで、codeを入手
+codeをClient(Server)にpostしてアクセストークン・リクエスト([[PKCE>OAuth PKCE]])
+Client(Server)経由でaccess_tokenを受け取り、
+access_tokenを使用してResource Serverにリソースをリクエスト

#ref(PKCE Flow.jpg,left,nowrap,OAuth PKCE利用時の構成図,30%)

※ よくよく見ると、Cordovaと外部ブラウザでSessionが違うので、~
 stateもcode_verifierもCordova側で生成・保持しておく必要がある。

※ また、code_challengeは、Server側でcode_verifierを受け取り、~
ハッシュ関数(plain or S256)を選択して生成する必要がある。

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

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS