OAuthフロー多すぎ問題
Identity and Access Managementデザイナーの受験で資料を読んでいると
OAuthフローの種類がやけに多いなぁと困った件。
フローの中身もざっくりしている物が多く、並べて若干の違いがあり
むむ・・・と途方に暮れたわ。
SalesforceのOAuth認証フローは内容が一緒でもRFCの名称と異なる用語なので注意。
用語が多すぎて、別の事を言っているのかと混乱したわ・・・。
あとSalesforceの説明しているフローがざっくしており大まかにはそーなんでしょうが、
詳細な説明を照らし合わせるとうーーーん・・・という所もあり、自分なりにかみ砕いて
フローを起こしてみた。
OAuth 2.0 Web サーバフロー
- TrailheadではWeb アプリケーションインテグレーション (OAuth 2.0 Web サーバフロー)と呼んでいる。
- Salesforce HelpではWebサーバOAuth認証フローと呼んでいる。
- RFC6749 4.1 Authorization Codeに該当する。
ざっくり、利用者があるWebアプリケーション経由(A)で別のWebサービスやWebアプリケーション(B)に接続する際にOAuthを利用して認可するフロー。
事前にAとBの信頼関係が構築できる際に使用する。
- クライアントアプリケーション:Webアプリケーションが認可サーバ:Salesforceから認証コード(code)を取得してから、認証コード(code)と引き換えにアクセストークン(access_token)を取得するのがポイント。
- 認証コードを引換券、アクセストークンが入場チケットみたいな感じ。
- リソースにアクセス出来るアクセストークン(access_token)をリソースオーナやユーザエージェントまで開示しない事でセキュリティリスクを軽減している。
利用するシナリオ
- この認証フローを利用すパターンは、WebアプリケーションからSalesforce APIに統合する場合に利用するフロー。
- 事前に接続アプリケーションから発行される**コンシューマ鍵(client_id)とコンシューマの秘密(client_secret)**をWebサーバに設定しておく必要があり、Salesforce(認可サーバ)とWebサーバ(クライアント)の信頼関係が前提に成り立つ。