OAuth 2.0(アクセストークン・リフレッシュトークン)【ネットワークスペシャリスト試験 平成30年度 秋期 午後2 問1-4】

ネットワークスペシャリスト試験 平成30年度 秋期 午後2 問1-4

問1 ネットワークシステムの設計に関する次の記述を読んで、設問1~4に答えよ。

(略)

f:id:aolaniengineer:20200729041346p:plain

(略)

【APIにアクセスする顧客サーバの管理】

 Wさんは、顧客サーバからのAPIアクセスに関する検討を行った。

 Xシステムでは、認可サーバを使って、顧客サーバからのAPIアクセスを認可する。契約及びサービス仕様の変更が顧客ごとに発生するので、それらを前提とした認可の仕組みが必要になる。Wさんは、認可コード、アクセストークン、及びリフレッシュトークンを使った、認可の仕組みを採用することにした。

 XシステムのAPIアクセスの通信シーケンスを図6に示す。

f:id:aolaniengineer:20200801050658p:plain

 図6中の(Ⅰ)に示すように、有効なトークンがない場合、WebブラウザからWebAPへの情報要求は(サ:認可)サーバにリダイレクトされる。認可応答では、認可要求で通知されたURIを用いたリダイレクトによって、(シ:WebAP)に認可コードが通知される。続いて、認可コードを用いたトークン要求とトークン応答が行われ、WebAPはアクセストークンとリフレッシュトークンを獲得する。

APIアクセス認可の仕組みに関する内容で、この仕組みは「OAuth2.0」(The OAuth 2.0 Authorization Framework(RFC6749))として定義されています。

この問題から「OAuth2.0」を理解しましょう。

サ:認可

 図6を順を追って見ていきましょう。

 WebブラウザからWebAPに情報要求を送信すると、リダイレクト応答が返信されてきます。

 そしてWebブラウザは認可サーバに認可要求を送信しています。

 したがって、リダイレクト先は認可サーバになります。

シ:WebAP

 認可サーバから認可応答を受信したWebブラウザはWebAPに送信しています。

 また、図6の(a)、認可要求ではredirect_uriWebAPURIが設定されています。

 したがって、リダイレクト先はWebAPになります。

なお、図6の(b)認可応答にはWebAPのURIと認可コードがあり、WebAPのURIにリダイレクトして、WebAPに認可コードを送信していることが分かります。

 図6中の(Ⅰ)~(Ⅲ)に示すように、業務サーバへの情報要求には、アクセストークンが用いられる。アクセストークンは、アクセス可能なAPIと有効期間に関する情報が含まれており、業務サーバはそれらの情報からアクセスの可否を決める。アクセストークンの有効期間を過ぎた場合でも、(ス:リフレッシュトークン)の有効期間内であれば、利用者の確認を行わずに、新しいアクセストークンが発行される。

ス:リフレッシュトークン

 図6でアクセストークンの有効期限を過ぎた場合に相当するところは、「(Ⅲ)リフレッシュトークンだけが有効な場合」にある、アクセストークンを使った情報要求でエラー応答となった箇所になります。

 アクセストークンでエラーとなった後、リフレッシュトークンで新アクセストークンを取得して、その新アクセストークンでAPIに情報要求しています。

 本文のとおり、アクセストークンの有効期間を過ぎた場合でも、リフレッシュトークンの有効期間内であれば、利用者の確認を行わずに、新しいアクセストークンが発行されるということです。

 Xシステムでは、顧客ごとに異なるアクセストークンを定義し、認可サーバに格納しておく。ある顧客に提供するAPIの範囲が変わる場合、X社は認可サーバのアクセストークンを変更する。Wさんは、④アクセストークンの有効期間を10分間、リフレッシュトークンの有効期間を60分間と想定し、トークンの運用を確認した

④について、提供するAPIの範囲を変更する場合、変更が有効になるのは、X社がアクセストークンを変更してから最長で何分後かを答えよ。:10

 問われているのは「変更してから最長で何分か」であり、有効期間の10分後かなと考えつきますが、リフレッシュトークンの有効期間60分も気になります。

 図6を確認して、認可サーバがWebAPにアクセストークンを応答する箇所を確認します。

  • 「(Ⅰ)有効なトークンがない場合」では、最新のアクセストークンが応答されますので、即座に変更が有効になります。
  • 「(Ⅱ)アクセストークンが有効な場合」では、アクセストークンの応答がないので、変更は反映されません。この状態はアクセストークンの有効期間10分間は継続されます。
  • 「(Ⅲ)リフレッシュトークンだけが有効な場合」では、アクセストークンでの情報要求がエラー応答となっているので、有効期間を過ぎていると考えられます。その後、リフレッシュトークンでの要求後に最新のアクセストークンが応答され流ので、即座に変更が有効になります。

 したがって、アクセストークンの有効期間10分間が最長となります。

 尚、細かいことを気にすると、リフレッシュトークンのやり取りの時間も考慮する必要はないか、認可サーバからアクセストークンの変更通知などがあれば即座に反映できるのではないかなとも思いますが、問題文には記述がないことは考慮しないということが重要です。

 図6の通信シーケンスでは、図6中の”(a)認可要求”のredirect_urlパラメタが書き換えられ、図6中の(セ:認可応答)に含まれる認可コードが意図しない宛先に送信される可能性がある。Wさんは、その対策として”redirect_urlパラメタの確認”を行うことにした。これは、図6中の(ソ:認可)サーバに、HTTPリクエストに含まれるURIとあらかじめ登録されている絶対URLが一致することを確認させる、という対策である。⑤顧客向けのAPI利用ガイドラインには、この対策に必要な顧客への依頼内容を明記することにした。

【出典:ネットワークスペシャリスト試験 平成30年度 秋期 午後2 問1(一部、加工あり)】

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_2/2018h30a_nw_pm2_qs.pdf

セ:認可応答

 図6の認可要求のredirect_uriには「WebAPのURI」が設定され、認可応答での認可コードが「WebAPのURI」に渡っていきます。

 本文のように、redirect_uriのパラメタが攻撃者の用意したサーバなどに書き換えられると、認可コードが不正に取得されてしまいます。

ソ:認可

 リクエストの宛先は認可サーバですので、認可サーバで絶対URLと比較することになります。

⑤について、顧客への依頼内容を、40字以内で述べよ。:WebAPのURIを固定にし、絶対URIを事前に通知してもらう。

 「図6中の認可サーバに、HTTPリクエストに含まれるURIとあらかじめ登録されている絶対URLが一致することを確認させる」という対策について、顧客への依頼内容を考えます。

 認可サーバが絶対URIを登録するには、顧客からURIの情報を受領する必要があります。

 また、変更の際には事前に通知してもらう必要があります。

 解答の記述は迷うところですが、本質の部分が合っていれば問題ないでしょう。

Follow me!