マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • ブラウザベースのアプリケーション(≒ SPA)を
    開発するときのOAuth2, OIDCの考慮事項とベストプラクティス
  • Native App同様、
    • Public Clientなので、client_secretを使用することはできない。
    • OAuth2, OIDCを実装する際の類似点が取り上げられている。

詳細

アーキテクチャ

APIと同一ドメイン

エンプラSPA的なアプリケーションはSessionを認証として使用してイイ

  • Session認証には、可動部分が少なく、攻撃ベクトルが少ないという利点がある。
  • フェデレーション・アクセスが無いため、OAuth2, OIDCが最適なソリューションではない。

バックエンド・コンポーネント

  • バックエンドコン・ポーネントは本質的に、ブラウザ内で実行されているコードの新しい認証サーバ
    • 独自のtoken(たとえばSessionCookie?)を発行する可能性。
  • Tokenリクエストをバックエンド・コンポーネントから実行することを希望する可能性がある。
    • Code → Access Token
    • Refresh Token → Access Token
  • 独自のClient Secretが発行されたConfidential Client
    • HTTPSのRedirect URIの完全一致をClient認証として自動再認証を許可できる。
      (ワイルドカード・ドメイン/パス、クエリ文字列を含まない)
    • ただし、Authentication Serverは、デプロイメント全体から
      バックエンドコン・ポーネントもPublic Clientと看做すことがある。

Flow

Authorization Code

  • stateを使用
  • Redirect URI
    • 完全一致を推奨
    • 柔軟性を提供する場合、ホスト名と一致
  • OAuth 2.0 authorization code flow with the PKCE extensionでは、
    フロントチャンネルにアクセストークンを返さないようにする。

※ OAuth 2.0 で行うHTTP通信

  • フロントチャネル(ユーザーのブラウザを介した通信)
  • バックチャネル(ユーザーが介在しない、サーバーサイド同士の通信)

Implicit Flow

  • 脅威
    • リダイレクトURIの傍受
    • ブラウザ履歴からのトークン漏洩
    • スクリプト
      •  悪意のあるスクリプト注入による操作
      • サードパーティ・スクリプトによる漏洩
  • 欠点
    • Access Tokenの検証メカニズムが無い
    • Redirectが失敗したり傍受されたりする可能性がある
    • 関連するセキュリティ上の考慮事項、追加のコードが多い。
  • 基本的に
    • PKCEが推奨
    • 特に側(皮)ネイティブの場合は、PKCE

Refresh Token

Authentication Serverは、SPAに(フロントチャネルで)Refresh Tokenを

  • 発行すべきではない。
  • 発行する場合、1回限りの使用とする。
  • 長期保存する場合、静的JavaScriptに制限するなど。

OAuth PKCE

SPA向けのOAuth PKCE

結論

OAuth 2.0 for Native Appsとだいたい同じ

使用するフロー

Implicitは脅威・欠点が多いので非推奨の流れ。

UserAgentでOAuth2のTokenを取得するベスト・プラクティス → 詳細 → Implicitフロー非推奨

バックチャネルで発行するならAuthorization Code

SPAにtokenを渡せないが、Implicitと比べ脅威・欠点が少ない。

フロントチャネルで発行するならOAuth PKCE

SPAにtokenを渡す場合、OAuth PKCEを使う。

Client認証

ただし、バックエンド・コンポーネントがConfidential Clientとみなせるので、
一部扱いを変えることが出来る(ClientId?RedirectUrl?でClient認証可能)。

参考

仕様

OAuth PKCE

OAuth 2.0 for Native Apps

AppAuth

当該ベストプラクティスの採用を助ける
OpenID Foundationが後援する一連のライブラリ。


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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-12-03 (火) 16:39:12 (5d)