図1に、ネットワーク構成例を示す。ユーザ端末101は、ブラウザ103を有し、インターネットに接続する機能を有している。Webサーバ105aは、インターネットに接続している。Webサーバ105aは、Webアプリケーション_A107を有する。この例におけるWebアプリケーション_A107は、ブラウザ103からのリクエストに応じてHTML(HyperText Markup Language)ファイルを提供する。尚、Webアプリケーション_A107は、ブラウザ103と連携するアプリケーションプログラムの例である。
Webサーバ105bは、Web API_X109を有する。この例において、Web API_X109は、Webアプリケーション_A107に呼び出され、所定の機能に係るサービスをWebアプリケーション_A107に提供するものとする。Webサーバ105cは、Web API_Y111を有する。この例において、Web API_Y111は、Web API_X109に呼び出され、所定の機能に係るサービスをWeb API_X109に提供するものとする。
図2に、一次認可及び一次API呼び出しの概要を示す。この例で、Webアプリケーション_A107がWeb API_X109を利用するための権限について、ユーザから受ける認可を一次認可という。また、一次認可に基づくWeb API_X109の呼び出しを、一次API呼び出しという。尚、以下では、一次認可に係るエンティティ、プログラム、処理、画面、データ及びパラメータ等について、「一次」の語句を付して、後述する二次認可に係るエンティティ、プログラム、処理、画面、データ及びパラメータ等と区別する。
この例における一次認可の手順は、OAuthに準拠する。OAuthは、権限の認可を行う手順に係るオープンスタンダードである。この例におけるプログラムをOAuthにおけるエンティティに当てはめる。ブラウザ103は、一次認可におけるリソースオーナー(つまり、一次リソースオーナー)である。リソースオーナーは、保護リソースに対するアクセス権限に関するユーザの同意を直接的に受け付ける。Webアプリケーション_A107は、一次認可におけるクライアント(つまり、一次クライアント)である。クライアントは、アクセス権限が与えられた場合に保護リソースを利用する。Web API_X109は、一次認可における許可サーバ(つまり、一次許可サーバ)である。許可サーバは、ユーザの同意を取り付けて、保護リソースにアクセスするためのトークン(アクセストークン)を発行する。Web API_X109は、更に一次認可におけるリソースサーバ(つまり、一次リソースサーバ)である。リソースサーバは、保護リソースを管理する。
最初に、Web API_X109を利用しようとするWebアプリケーション_A107は、一次認可要求をブラウザ103へ送る(S201)。次に、ブラウザ103とWeb API_X109との間における一次認可の手続きを経て(S203)、Web API_X109は一次認可を受け付ける。尚、一次認可の手続きにおいて、ブラウザ103に一次同意画面が表示される。
図3に、一次同意画面の例を示す。「AAA」は、Webアプリケーション_A107の名前である。「XXX」は、Web API_X109の名前である。図3に示したように、一次クライアントが一次リソースサーバを呼び出すことについての同意を確認する内容のコメントが表示される。「認可する」と表示された認可ボタンが選択されると、Webアプリケーション_A107によるWeb API_X109の呼び出しをユーザが認可したことになる。一方、「拒否する」と表示された拒否ボタンが選択されると、Webアプリケーション_A107によるWeb API_X109の呼び出しをユーザが拒否したことになる。
図2の説明に戻る。Web API_X109が一次認可を受け付けると、Web API_X109は一次アクセストークンを発行し、当該一次アクセストークンはWebアプリケーション_A107に引き渡される。本実施の形態では、OAuthにおける認可コードグラント方式によって一次アクセストークンが発行される例について説明する。この例では、Web API_X109からブラウザ103を介してWebアプリケーション_A107へ認可コードを渡した後で(S205a及びS205b)、認可コードに基づいて一次アクセストークンが渡される(S205c)。
一次アクセストークンを得たWebアプリケーション_A107は、一次アクセストークンを伴ってWeb API_X109を呼び出す(S207)。Web API_X109は、一次アクセストークンが正当であることを確認して、呼び出されたWeb API_X109のコマンドの機能に基づくサービスを提供する。
この例では、更にWeb API_X109がWeb API_Y111を利用することを想定する。Web API_X109がWeb API_Y111を利用するための権限について、ユーザから受ける認可を二次認可という。また、二次認可に基づくWeb API_Y111の呼び出しを、二次API呼び出しという。
ここで、図4を用いて二次認可における課題について説明する。尚、二次認可に係るエンティティ、プログラム、処理、画面、データ及びパラメータ等について、「二次」の語句を付して、一次認可に係るエンティティ、プログラム、処理、画面、データ及びパラメータ等と区別する。
この例における二次認可の手順も、OAuthに準拠する。この例におけるプログラムをOAuthにおけるエンティティに当てはめる。ブラウザ103は、二次認可におけるリソースオーナー(つまり、二次リソースオーナー)である。Web API_X109は、二次認可におけるクライアント(つまり、二次クライアント)である。Web API_Y111は、二次認可における許可サーバ(つまり、二次許可サーバ)である。Web API_Y111は、更に二次認可におけるリソースサーバ(つまり、二次リソースサーバ)である。
上記一次認可の手順で説明したように、従来技術によれば呼び出し元に対して認可要求が送られる。従って、二次認可にこの仕組みを適用すれば、二次認可要求は、Webアプリケーション_A107に送られることになる。しかし、Webアプリケーション_A107は、二次リソースオーナーではないので二次認可に係る対応を行えない。本来的には、二次リソースオーナーであるブラウザ103に二次認可要求を送るべきところであるが、そのような仕組みは従来ない。
図5を用いて、本実施の形態における二次認可及び二次API呼び出しの概要について説明する。Web API_X109は、呼び出し元であるWebアプリケーション_A107へ二次認可要求の転送指示を送る(S501)。Webアプリケーション_A107は、この指示に従って二次認可要求をブラウザ103へ転送する(S503)。
次に、ブラウザ103とWeb API_Y111との間における二次認可の手続きを経て(S505)、Web API_Y111は二次認可を受け付ける。尚、二次認可の手続きにおいて、ブラウザ103に二次同意画面が表示される。
図6に、二次同意画面の例を示す。上述した通り、「AAA」は、Webアプリケーション_A107の名前である。同じく「XXX」は、Web API_X109の名前である。「YYY」は、Web API_Y111の名前である。
図6に示したように、一次クライアントに呼び出された一次リソースサーバが、二次クライアントとして二次リソースサーバを呼び出すことについての同意を確認する内容のコメントが表示される。「認可する」と表示された認可ボタンが選択されると、Webアプリケーション_A107により呼び出されたWeb API_X109によるWeb API_Y111の呼び出しをユーザが認可したことになる。一方、「拒否する」と表示された拒否ボタンが選択されると、Webアプリケーション_A107により呼び出されたWeb API_X109によるWeb API_Y111の呼び出しをユーザが拒否したことになる。
図5の説明に戻る。Web API_Y111が二次認可を受け付けると、Web API_Y111は二次アクセストークンを発行し、当該二次アクセストークンはWeb API_X109に引き渡される。本実施の形態では、OAuthにおける認可コードグラント方式によって二次アクセストークンが発行される例について説明する。この例では、Web API_Y111からブラウザ103を介してWeb API_X109へ認可コードを渡した後で(S507a及びS507b)、認可コードに基づいて二次アクセストークンが渡される(S507c)。
二次アクセストークンを得たWeb API_X109は、二次アクセストークンを伴ってWeb API_Y111を呼び出す(S509)。Web API_Y111は、二次アクセストークンが正当であることを確認して、呼び出されたWeb API_Y111のコマンドの機能に基づくサービスを提供する。
本実施の形態では、二次クライアントにおいて、一次クライアント毎の二次アクセストークンを管理する。図7に、アクセストークンの紐付けの概要を示す。上述した通り、Webアプリケーション_A107がブラウザ103からのリクエストに応じた処理を行う際にWeb API_X109を利用し、また利用されるWeb API_X109は、更にWeb API_Y111を利用する。このとき、Web API_X109はWebアプリケーション_A107に対して一次アクセストークンであるTX_Aを発行する。また、Web API_Y111はWeb API_X109に対して二次アクセストークンであるTY_X1を発行する。
更に、上述した手順と同様に、Webアプリケーション_B701がブラウザ103からのリクエストに応じた処理を行う際にWeb API_X109を利用し、また利用されるWeb API_X109は、更にWeb API_Y111を利用するものとする。このとき、Web API_X109はWebアプリケーション_B701に対して一次アクセストークンであるTX_Bを発行する。また、Web API_Y111はWeb API_X109に対して二次アクセストークンであるTY_X2を発行する。
Web API_X109は、二次アクセストークンのTY_X1を取得したときに、TY_X1を取得する契機となった呼び出しにおいて示された一次アクセストークンのTX_Aと当該TY_X1とを紐付ける。その後、Webアプリケーション_A107が一次アクセストークンのTX_Aを伴ってWeb API_X109を呼び出した場合には、Web API_X109はTX_Aに対応する二次アクセストークンのTY_X1を伴ってWeb API_Y111を呼び出すようにする。
同様に、Web API_X109は、二次アクセストークンのTY_X2を取得したときに、TY_X2を取得する契機となった呼び出しにおいて示された一次アクセストークンのTX_Bと当該TY_X2とを紐付ける。その後、Webアプリケーション_B701が一次アクセストークンのTX_Bを伴ってWeb API_X109を呼び出した場合には、Web API_X109はTX_Bに対応する二次アクセストークンのTY_X2を伴ってWeb API_Y111を呼び出すようにする。
このようにすれば、二次同意画面に示されたコメントの内容に従ってアクセス権限を区別することができる。もしも、Webアプリケーション_B701の動作に伴う二次同意画面においてユーザが拒否した場合には、Web API_X109が二次アクセストークンのTY_X1を保持していたとしても、この二次アクセストークンを用いることはない。つまり、二次アクセストークンのTY_X1は、Webアプリケーション_A107の動作における認可に基づくので流用されない。以上で、本実施の形態における概要の説明を終える。
以下、本実施の形態における動作について詳述する。図8に示すように、Webサーバ105aは、アプリケーション部801を有する。アプリケーション部801は、Webアプリケーション_A107のプログラムに含まれる命令をCPU(Central Processing Unit)が処理することによって実現される。
図8を用いてアプリケーション部801のモジュール構成について説明する。アプリケーション部801は、第1送信部803、第2送信部805、受信部807、作成部809、生成部811、認証部813、呼び出し部815及び転送部817を有する。
第1送信部803は、ブラウザ103へ各種データを送信する。第2送信部805は、Web API_X109へ各種データを送信する。受信部807は、各種データを受信する。作成部809は、HTMLファイルを作成する。生成部811は、一次乱数を生成する。認証部813は、一次ローカルステートの認証を行う。一次ローカルステートは、一次認可要求を識別するデータである。OAuthの仕様に従ったローカルステートの認証によって、成りすましが防止される。呼び出し部815は、一次API呼び出しを行う。転送部817は、二次認可要求をブラウザ103へ転送する。
上述したアプリケーション部801、第1送信部803、第2送信部805、受信部807、作成部809、生成部811、認証部813、呼び出し部815及び転送部817は、ハードウエア資源(例えば、図27)と、以下で述べる処理をCPUに実行させるアプリケーションプログラムとを用いて実現される。
図9に示すように、Webサーバ105bは、第1機能提供部901を有する。第1機能提供部901は、Web API_X109のプログラムに含まれる命令をCPUが処理することによって実現される。
図9を用いて第1機能提供部901のモジュール構成について説明する。第1機能提供部901は、第1送信部903、第2送信部905、第3送信部907、受信部909、第1生成部911、第2生成部913、第1認証部915、第1検証部917、第3生成部919、第4生成部921、第1特定部923、紐付け部925、第2認証部927、呼び出し部929、探索部931、第2特定部933、第2検証部935、機能部937及び紐付けテーブル記憶部941を有する。
第1送信部903は、ブラウザ103へ各種データを送信する。第2送信部905は、Webアプリケーション_A107へ各種データを送信する。第3送信部907は、Web API_Y111へ各種データを送信する。受信部909は、各種データを受信する。
第1生成部911は、一次同意画面を生成する。第2生成部913は、一次認可コードを生成する。認可コードは、OAuthの仕様に基づき、アクセストークンを取得する前提となるデータである。第1認証部915は、一次クライアントの認証を行う。第1検証部917は、一次認可コードの検証を行う。第3生成部919は、一次アクセストークンを生成する。第4生成部921は、二次乱数を生成する。第1特定部923は、一次クライアントIDに基づいて一次クライアント名を特定する。紐付け部925は、紐付けテーブルを生成する。紐付けテーブルは、紐付けテーブル記憶部941に記憶される。紐付けテーブルについては、図15を用いて後述する。
第2認証部927は、二次ローカルステートの認証を行う。二次ローカルステートは、二次認可要求を識別するデータである。OAuthの仕様に従ったローカルステートの認証によって、成りすましが防止される。呼び出し部929は、二次API呼び出しを行う。探索部931は、紐付けテーブルにおいて二次アクセストークンを探索する。第2特定部933は、一次クライアントIDに基づいてコールバックURLを特定する。尚、第2特定部933については、実施の形態2において説明する。
第2検証部935は、一次アクセストークンの検証を行う。機能部937は、Web API_X109のコマンドの機能を実現するための処理を実行する。
上述した第1機能提供部901、第1送信部903、第2送信部905、第3送信部907、受信部909、第1生成部911、第2生成部913、第1認証部915、第1検証部917、第3生成部919、第4生成部921、第1特定部923、紐付け部925、第2認証部927、呼び出し部929、探索部931、第2特定部933、第2検証部935及び機能部937は、ハードウエア資源(例えば、図27)と、以下で述べる処理をCPUに実行させるWeb APIのプログラムとを用いて実現される。
上述した紐付けテーブル記憶部941は、ハードウエア資源(例えば、図27)を用いて実現される。
続いて、本実施の形態におけるシーケンスについて説明する。図10に、一次認可のシーケンス例を示す。Webアプリケーション_A107に相当するアプリケーション部801の受信部807が、ブラウザ103から送られたHTMLファイルのリクエストを受信すると(S1001)、Webアプリケーション_A107に相当するアプリケーション部801の作成部809は、HTMLファイルを作成する処理を開始する(S1003)。
HTMLファイルを作成する処理においてWeb API_X109を利用しようとする場合に、Webアプリケーション_A107に相当するアプリケーション部801は、Web API_X109を呼び出すための準備処理を開始する(S1005)。S1007以降の処理が、Web API_X109を呼び出すための準備処理に相当する。
Webアプリケーション_A107に相当するアプリケーション部801の生成部811は、一次乱数を生成する(S1007)。一次乱数は、一次認可要求の識別子として用いられる。
Webアプリケーション_A107に相当するアプリケーション部801の第1送信部803は、一次認可要求を、S1001におけるリクエストの送信元であるブラウザ103へ送信する(S1009)。具体的には、一次認可要求は、HTTPリダイレクトの指示である。リダイレクト先URLは、Web API_X109における一次同意画面のURLである。リダイレクト先URLには、パラメータとして、一次レスポンスタイプ、一次クライアントID、一次認可レスポンスのコールバックURL及び一次ローカルステートが付加される。
認可コードグラント方式の場合に、一次レスポンスタイプには、認可コード型が設定される。この例における一次クライアントIDは、Webアプリケーション_A107のIDである。一次認可レスポンスのコールバックURLは、一次認可レスポンスの宛先に相当する。この例における一次認可レスポンスのコールバックURLは、Webアプリケーション_A107のURLである。一次ローカルステートには、一次乱数が設定される。一次ローカルステートは、一次認可要求を識別するデータであって、OAuthの仕様に従って一次認可におけるやり取りの一貫性を保つために用いられる。第三者による成りすましを防止するために、推測され難い値が用いられる。
ブラウザ103が一次認可要求を受信すると(S1011)、ブラウザ103は、HTTPリダイレクトによってWeb API_X109における一次同意画面のURLへアクセスする(S1013)。このとき、Web API_X109における一次同意画面のURLに付加されている上記パラメータも引き渡される。図11に示したシーケンスに移る。
図11について説明する。Web API_X109に相当する第1機能提供部901の第1生成部911は、一次同意画面を生成する(S1101)。このとき、Web API_X109に相当する第1機能提供部901の第1生成部911は、一次同意画面のコメントに、一次クライアントのプログラム名(以下、一次クライアント名という。)と一次リソースサーバとのプログラム名(以下、一次リソースサーバ名という。)を設定する。一次クライアント名は、一次クライアントIDに基づいて特定される。尚 、Web API_X109に相当する第1機能提供部901は、予め一次クライアントIDに対応付けて一次クライアント名を保持している。そして、Web API_X109に相当する第1機能提供部901の第1送信部903は、一次同意画面データをアクセス元であるブラウザ103へ送信する(S1103)。
ブラウザ103が一次同意画面データを受信すると(S1105)、ブラウザ103は、一次同意画面を表示する(S1107)。一次同意画面において認可ボタンが選択されると、ブラウザ103は、一次認可を受け付ける(S1109)。一次同意画面の仕組みに従って、ブラウザ103は、一次認可通知をWeb API_X109へ送信する(S1111)。
Web API_X109に相当する第1機能提供部901の受信部909が一次認可通知を受信すると(S1113)、図12に示したシーケンスに移る。
図12について説明する。Web API_X109に相当する第1機能提供部901の第2生成部913は、一次認可コードを生成する(S1201)。一次認可コードの生成は、従来技術による。
Web API_X109に相当する第1機能提供部901の第1送信部903は、一次認可レスポンスを、一次認可通知の送信元であるブラウザ103へ送信する(S1203)。具体的には、一次認可レスポンスは、HTTPリダイレクトの指示である。リダイレクト先URLは、一次認可レスポンスのコールバックURL(この例では、Webアプリケーション_A107のURL)である。リダイレクト先URLには、パラメータとして、一次認可コード及び一次ローカルステートが付加される。
ブラウザ103が一次認可レスポンスを受信すると(S1205)、ブラウザ103は、HTTPリダイレクトによってWebアプリケーション_A107のURLへアクセスする(S1207)。このとき、Webアプリケーション_A107のURLに付加されている上記パラメータも引き渡される。図13に示したシーケンスに移る。
図13について説明する。Webアプリケーション_A107に相当するアプリケーション部801の認証部813は、一次ローカルステートの認証を行う(S1301)。具体的には、図10のS1009で一次認可要求に含めた一次ローカルステートと、図12のS1207で引き渡された一次ローカルステートが一致する場合には、一次ローカルステートの認証が成功する。一次ローカルステートの認証が失敗した場合には、処理が中断される。この例では、一次ローカルステートの認証が成功したものと想定する。
Webアプリケーション_A107に相当するアプリケーション部801の第2送信部805は、一次認可コードに基づく一次アクセストークン要求をWeb API_X109へ送信する(S1303)。一次認可コードには、一次クライアントID及び一次クライアントシークレットが付加される。シークレットは、パスワードに相当する。つまり、一次クライアントID及び一次クライアントシークレットは、一次クレデンシャルである。この例における一次クライアントIDは、Webアプリケーション_A107のIDである。この例における一次クライアントシークレットは、Webアプリケーション_A107のシークレットである。
Web API_X109に相当する第1機能提供部901の受信部909が一次アクセストークン要求を受信すると(S1305)、Web API_X109に相当する第1機能提供部901の第1認証部915は、一次クライアントID及び一次クライアントシークレットに基づいて、一次クライアントの認証を行う(S1307)。一次クライアントの認証が失敗した場合には、処理が中断される。この例では、一次クライアントの認証が成功したものと想定する。
Web API_X109に相当する第1機能提供部901の第1検証部917は、一次認可コードの検証を行う(S1309)。一次認可コードが正当なものであれば、一次認可コードの検証が成功する。一次認可コードの検証が失敗した場合には、処理が中断される。この例では、一次認可コードの検証が成功したものと想定する。
Web API_X109に相当する第1機能提供部901の第3生成部919は、一次アクセストークンを生成する(S1311)。一次アクセストークンの生成方法は、従来技術による。
Web API_X109に相当する第1機能提供部901の第2送信部905は、一次アクセストークンを、一次アクセストークン要求の送信元であるWebアプリケーション_A107へ送信する(S1313)。ここでは、一次アクセストークンであるTX_Aが送信されたものとする。
Webアプリケーション_A107に相当するアプリケーション部801の受信部807が一次アクセストークンであるTX_Aを受信すると(S1315)、Webアプリケーション_A107に相当するアプリケーション部801は、Web API_X109を呼び出すための準備処理を終了することになる(S1317)。Webアプリケーション_A107に相当するアプリケーション部801の呼び出し部815は、Web API_X109の呼び出しを行う(S1319)。Web API_X109へのアクセスの際に、一次アクセストークンであるTX_Aが転送される。
Web API_X109に相当する第1機能提供部901の受信部909がWeb API_X109へのアクセスを受信すると(S1321)、Web API_X109に相当する第1機能提供部901の第2検証部935は、一次アクセストークンの検証を行う(S1323)。一次アクセストークンが正当なものであれば、一次アクセストークンの検証が成功する。一次アクセストークンの検証が失敗した場合には、処理が中断される。この例では、一次アクセストークンの検証が成功したものと想定する。
一次アクセストークンの検証が成功すると、Web API_X109に相当する第1機能提供部901の機能部937が当該アクセスに係るコマンドの機能を実現するための処理を開始する。そして、図14に示したシーケンスに移る。
図14について説明する。ここから、二次認可のシーケンスに移る。上記コマンドの機能を実現するための処理においてWeb API_Y111を利用しようとする場合に、Web API_X109に相当する第1機能提供部901は、Web API_Y111を呼び出すための準備処理を開始する(S1401)。S1403以降の処理が、Web API_Y111を呼び出すための準備処理に相当する。
Web API_X109に相当する第1機能提供部901の第4生成部921は、二次乱数を生成する(S1403)。二次乱数は、二次認可要求の識別子として用いられる。
Web API_X109に相当する第1機能提供部901の第1特定部923は、一次クライアントIDに基づいて一次クライアント名を特定する(S1405)。この例における一次クライアント名は、Webアプリケーション_A107の名前「AAA」である。
Web API_X109に相当する第1機能提供部901の第2送信部905は、二次認可要求の転送指示をWeb API_X109の呼び出し元であるWebアプリケーション_A107へ送信する(S1407)。具体的には、二次認可要求は、HTTPリダイレクトの指示である。リダイレクト先URLは、Web API_Y111における二次同意画面のURLである。リダイレクト先URLには、パラメータとして、二次レスポンスタイプ、二次クライアントID、二次認可レスポンスのコールバックURL及び二次ローカルステートが付加される。
認可コードグラント方式の場合に、二次レスポンスタイプには、認可コード型が設定される。この例における二次クライアントIDは、Web API_X109のIDである。二次認可レスポンスのコールバックURLは、二次認可レスポンスの宛先に相当する。この例における二次認可レスポンスのコールバックURLは、Web API_X109のURLである。二次ローカルステートには、二次乱数と一次クライアント名との組み合わせが設定される。つまり、この例では、二次ローカルステートの一部を一次クライアント名を伝送するために用いる。但し、二次ローカルステートに、二次乱数のみを設定し、一次クライアント名を別のパラメータとして伝送するようにしてもよい。
Web API_X109に相当する第1機能提供部901の紐付け部925は、ローカルステートの紐付けを行う(S1409)。具体的には、当該紐付け部925は、紐付けテーブルに新たなレコードを設けて、当該レコードに一次アクセストークン、二次リソースサーバのURL及び二次ローカルステート(二次乱数と一次クライアント名との組み合わせ)が設定される。この例では、一次アクセストークンであるTX_A、二次リソースサーバのURLであるWeb API_Y111のURL、二次乱数であるRX_A及び一次クライアント名であるAAAが設定される。
図15に、紐付けテーブルの例を示す。この例における紐付けテーブルは、二次認可に対応するレコードを有している。紐付けテーブルのレコードは、一次アクセストークンが格納されるフィールドと、二次リソースサーバのURLが格納されるフィールドと、二次ローカルステートである二次乱数と一次クライアント名との組合せが格納されるフィールドと、二次認可コードが格納されるフィールドと、二次アクセストークンが格納されるフィールドとを有している。
図14の説明に戻る。Webアプリケーション_A107に相当するアプリケーション部801の受信部807が二次認可要求の転送指示を受信すると(S1411)、Webアプリケーション_A107に相当するアプリケーション部801の転送部817は、受信した二次認可要求を、図10のS1001におけるリクエストの送信元であるブラウザ103へ転送する(S1413)。
ブラウザ103が二次認可要求を受信すると(S1415)、ブラウザ103は、HTTPリダイレクトによってWeb API_Y111における二次同意画面のURLへアクセスする(S1417)。このとき、Web API_Y111における二次同意画面のURLに付加されている上記パラメータも引き渡される。
ここで、一旦シーケンスについての説明を中断し、Webサーバ105cにおけるモジュールについて説明する。
図16に示すように、Webサーバ105cは、第2機能提供部1601を有する。第2機能提供部1601は、Web API_Y111のプログラムに含まれる命令をCPUが処理することによって実現される。
図16を用いて第2機能提供部1601のモジュール構成について説明する。図16に、第2機能提供部1601のモジュール構成例を示す。第2機能提供部1601は、第1送信部1603、第2送信部1605、受信部1607、第1生成部1609、第2生成部1611、認証部1613、第1検証部1615、第3生成部1617、特定部1619、第2検証部1621及び機能部1623を有する。
第1送信部1603は、ブラウザ103へ各種データを送信する。第2送信部1605は、Web API_X109へ各種データを送信する。受信部1607は、各種データを受信する。第1生成部1609は、二次同意画面を生成する。第2生成部1611は、二次認可コードを生成する。認証部1613は、二次クライアントの認証を行う。第1検証部1615は、二次認可コードの検証を行う。第3生成部1617は、二次アクセストークンを生成する。特定部1619は、二次クライアントIDに基づいてコールバックURLを特定する。第2検証部1621は、二次アクセストークンの検証を行う。機能部1623は、Web API_Y111のコマンドの機能を実現するための処理を実行する。
上述した第2機能提供部1601、第1送信部1603、第2送信部1605、受信部1607、第1生成部1609、第2生成部1611、認証部1613、第1検証部1615、第3生成部1617、特定部1619、第2検証部1621及び機能部1623は、ハードウエア資源(例えば、図27)と、以下で述べる処理をCPUに実行させるWeb APIのプログラムとを用いて実現される。
シーケンスの説明に戻る。図14に示したシーケンスから図17に示したシーケンスに移る。Web API_Y111に相当する第2機能提供部1601の第1生成部1609は、二次同意画面を生成する(S1701)。このとき、Web API_Y111に相当する第2機能提供部1601の第1生成部1609は、二次同意画面のコメントに、一次クライアント名と、一次リソースサーバである二次クライアントのプログラム名(以下、二次クライアント名という。)と、二次リソースサーバのプログラム名(以下、二次リソースサーバ名という。)とを設定する。一次クライアント名は、二次ローカルステートから取り出される。二次クライアント名は、二次クライアントIDに基づいて特定される。尚、Web API_Y111に相当する第2機能提供部1601は、予め二次クライアントIDに対応付けて二次クライアント名を保持している。そして、Web API_Y111に相当する第2機能提供部1601の第1送信部1603は、二次同意画面データをアクセス元であるブラウザ103へ送信する(S1703)。
ブラウザ103が二次同意画面データを受信すると(S1705)、ブラウザ103は、二次同意画面を表示する(S1707)。二次同意画面において認可ボタンが選択されると、ブラウザ103は、二次認可を受け付ける(S1709)。二次同意画面の仕組みに従って、ブラウザ103は、二次認可通知をWeb API_Y111へ送信する(S1711)。
Web API_Y111に相当する第2機能提供部1601の受信部1607が二次認可通知を受信すると(S1713)、図18に示したシーケンスに移る。
図18について説明する。Web API_Y111に相当する第2機能提供部1601の第2生成部1611は、二次認可コードを生成する(S1801)。二次認可コードの生成は、従来技術による。
Web API_Y111に相当する第2機能提供部1601の第1送信部1603は、二次認可レスポンスを、二次認可通知の送信元であるブラウザ103へ送信する(S1803)。具体的には、二次認可レスポンスは、HTTPリダイレクトの指示である。リダイレクト先URLは、二次認可レスポンスのコールバックURL(この例では、Web API_X109のURL)である。リダイレクト先URLには、パラメータとして、二次認可コード及び二次ローカルステートが付加される。
ブラウザ103が二次認可レスポンスを受信すると(S1805)。ブラウザ103は、HTTPリダイレクトによってWeb API_X109のURLへアクセスする(S1807)。このとき、Web API_X109のURLに付加されている上記パラメータも引き渡される。図19に示したシーケンスに移る。
図19について説明する。Web API_X109に相当する第1機能提供部901の第2認証部927は、二次ローカルステートの認証を行う(S1901)。図14のS1407で二次認可要求に含めた二次ローカルステートと、図18のS1807で引き渡された二次ローカルステートが一致する場合には、二次ローカルステートの認証が成功する。二次ローカルステートの認証が失敗した場合には、処理が中断される。この例では、二次ローカルステートの認証が成功したものと想定する。
Web API_X109に相当する第1機能提供部901の紐付け部925は、二次認可コードの紐付けを行う(S1903)。具体的には、Web API_X109に相当する第1機能提供部901の紐付け部925は、S1409で設けたレコードに、二次認可コードを設定する。このとき、Web API_X109に相当する第1機能提供部901の紐付け部925は、二次ローカルステートに基づいてレコードを特定するようにしてもよい。このようにすれば、結果的に二次認可コードが一次アクセストークンに紐付けられる。
Web API_X109に相当する第1機能提供部901の第3送信部907は、二次認可コードに基づく二次アクセストークン要求をWeb API_Y111へ送信する(S1905)。二次認可コードには、二次クライアントID及び二次クライアントシークレットが付加される。二次クライアントID及び二次クライアントシークレットは、二次クレデンシャルである。この例における二次クライアントIDは、Web API_X109のIDである。この例における二次クライアントシークレットは、Web API_X109のシークレットである。
Web API_Y111に相当する第2機能提供部1601の受信部1607が二次アクセストークン要求を受信すると(S1907)、Web API_Y111に相当する第2機能提供部1601の認証部1613は、二次クライアントID及び二次クライアントシークレットに基づいて、二次クライアントの認証を行う(S1909)。二次クライアントの認証が失敗した場合には、処理が中断される。この例では、二次クライアントの認証が成功したものと想定する。
Web API_Y111に相当する第2機能提供部1601の第1検証部1615は、二次認可コードの検証を行う(S1911)。二次認可コードが正当なものであれば、二次認可コードの検証が成功する。二次認可コードの検証が失敗した場合には、処理が中断される。この例では、二次認可コードの検証が成功したものと想定する。
Web API_Y111に相当する第2機能提供部1601の第3生成部1617は、二次アクセストークンを生成する(S1913)。二次アクセストークンの生成方法は、従来技術による。
Web API_Y111に相当する第2機能提供部1601の第2送信部1605は、二次アクセストークンを、二次アクセストークン要求の送信元であるWeb API_X109へ送信する(S1915)。ここでは、二次アクセストークンであるTY_X1が送信されたものとする。
Web API_X109に相当する第1機能提供部901の受信部909が二次アクセストークンであるTY_X1を受信すると(S1917)、Web API_X109に相当する第1機能提供部901の紐付け部925は、二次アクセストークンの紐付けを行う(S1919)。具体的には、Web API_X109に相当する第1機能提供部901の紐付け部925は、S1409で設けたレコードに、二次アクセストークンを設定する。このとき、Web API_X109に相当する第1機能提供部901の紐付け部925は、二次認可コードに基づいてレコードを特定するようにしてもよい。このようにすれば、結果的に二次アクセストークンが一次アクセストークンに紐付けられる。
この段階で、Web API_X109に相当する第1機能提供部901は、Web API_Y111を呼び出すための準備処理を終了することになる(S1921)。Web API_X109に相当する第1機能提供部901の呼び出し部929は、Web API_Y111の呼び出しを行う(S1923)。Web API_Y111へのアクセスの際に、二次アクセストークンであるTY_X1が転送される。
Web API_Y111に相当する第2機能提供部1601の受信部1607がWeb API_Y111へのアクセスを受信すると(S1925)、Web API_Y111に相当する第2機能提供部1601の第2検証部1621は二次アクセストークンの検証を行う(S1927)。二次アクセストークンが正当なものであれば、二次アクセストークンの検証が成功する。二次アクセストークンの検証が失敗した場合には、処理が中断される。この例では、二次アクセストークンの検証が成功したものと想定する。
二次アクセストークンの検証が成功すると、Web API_Y111に相当する第2機能提供部1601の機能部1623が、Web API_Y111におけるコマンドの機能を実現するための処理を開始する。そして、図20に示したシーケンスに移る。
図20について説明する。Web API_Y111に相当する第2機能提供部1601の機能部1623が、Web API_Y111におけるコマンドの機能を実現するための処理を終えると、Web API_Y111に相当する第2機能提供部1601の第2送信部1605は、APIレスポンスをWeb API_Y111の呼び出し元であるWeb API_X109へ送信する(S2001)。
Web API_X109に相当する第1機能提供部901の受信部909がWeb API_Y111からのレスポンスを受信すると(S2003)、Web API_X109に相当する第1機能提供部901の機能部937がWeb API_X109におけるコマンドの機能を実現するための処理を継続する。そして、Web API_X109に相当する第1機能提供部901の機能部937が当該処理を終えると、Web API_X109に相当する第1機能提供部901の第2送信部905は、APIレスポンスをWeb API_X109の呼び出し元であるWebアプリケーション_A107へ送信する(S2005)。
Webアプリケーション_A107に相当するアプリケーション部801の受信部807がWeb API_X109からのレスポンスを受信すると(S2007)、Webアプリケーション_A107に相当するアプリケーション部801の作成部809がHTMLファイル作成の処理を継続する。そして、Webアプリケーション_A107に相当するアプリケーション部801の作成部809がHTMLファイル作成の処理を終えると(S2009)、Webアプリケーション_A107に相当するアプリケーション部801の第1送信部803は、HTMLファイルをリクエスト元のブラウザ103へ送信する(S2011)。
ブラウザ103がHTMLファイルを受信すると(S2013)、ブラウザ103は、HTMLファイルに基づく画面表示を行う(S2015)。
その後ブラウザ103が、例えば前回と同様にHTMLファイルをリクエストする場合に、一次アクセストークンの発行及び二次アクセストークンの発行は省略される。図21に、2回目以降における一次API呼び出し及び二次API呼び出しのシーケンス例を示す。
Webアプリケーション_A107に相当するアプリケーション部801の受信部807がブラウザ103から送られたHTMLファイルのリクエストを受信すると(S2101)、Webアプリケーション_A107に相当するアプリケーション部801の呼び出し部815は、Webアプリケーション_A107におけるユーザアカウントに対応付けられている一次アクセストークン(この例では、TX_A)を用いて、Web API_X109の呼び出しを行う(S2103)。
Web API_X109に相当する第1機能提供部901の受信部909がWeb API_X109へのアクセスを受信すると(S2105)、一次アクセストークンが正当であるので、Web API_X109に相当する第1機能提供部901は正常に動作する。
Web API_X109に相当する第1機能提供部901は、Web API_Y111を呼び出すための準備処理に移る。Web API_X109に相当する第1機能提供部901の探索部931は、二次アクセストークンを探索する(S2107)。具体的には、Web API_X109に相当する第1機能提供部901の探索部931は、紐付けテーブルにおいて、一次アクセストークンをキーとして、当該一次アクセストークンと一致するレコードを探索する。或いは、Web API_X109に相当する第1機能提供部901の探索部931は、紐付けテーブルにおいて、一次アクセストークンと二次リソースサーバのURLとの組をキーとして、当該組と一致するレコードを探索する。該当するレコードがあれば、当該レコードに格納されている二次アクセストークンを用いる。尚、該当するレコードがない場合には、図14に示したS1401以降の処理を行う。
この例では、Web API_X109に相当する第1機能提供部901の呼び出し部929は、二次アクセストークン(TY_X1)を用いて、Web API_Y111の呼び出しを行う(S2109)。
Web API_Y111に相当する第2機能提供部1601の受信部1607がWeb API_Y111へのアクセスを受信すると(S2111)、二次アクセストークンが正当であるので、Web API_Y111に相当する第2機能提供部1601は正常に動作する。
本実施の形態によれば、Web API_X109において、Web API_Y111を、より安全に利用できるようになる。
また、一次アクセストークンに基づいて、二次アクセストークンを特定できるようになる。
[実施の形態2]
上述した実施の形態では、OAuthにおける認可コードグラント方式によって一次アクセストークンを発行し、同じく認可コードグラント方式によって二次アクセストークンを発行する例について説明した。但し、別の方式によって一次アクセストークンを発行するようにしてもよい。また、別の方式によって二次アクセストークンを発行するようにしてもよい。本実施の形態では、OAuthにおけるインプリシットグラント方式によって一次アクセストークンを発行し、同じくインプリシットグラント方式によって二次アクセストークンを発行する例について説明する。
実施の形態2では、図10に示した一次認可のシーケンスにおける処理に代えて、図22に示した一次認可のシーケンスにおける処理が実行される。
S1001乃至S1007に示した処理は、図10の場合と同様である。
S2201においてWebアプリケーション_A107に相当するアプリケーション部801の第1送信部803が送信する一次認可要求は、実施の形態1の場合と同様にHTTPリダイレクトの指示である。但し、インプリシットグラント方式の場合に、二次レスポンスタイプには、アクセストークン型が設定される。また、二次認可レスポンスのコールバックURLは、省かれる。
ブラウザ103が上記パラメータを含む一次認可要求を受信すると(S2203)、ブラウザ103は、HTTPリダイレクトによってWeb API_X109における一次同意画面のURLへアクセスする(S2205)。このとき、Web API_X109における一次同意画面のURLに付加されている上記パラメータも引き渡される。図11に示したシーケンスに移る。
実施の形態2では、図11に示した一次認可のシーケンスの場合と同様の処理が実行される。
実施の形態2では、図12及び図13に示した一次認可及び一次API呼び出しのシーケンスにおける処理に代えて、図23に示した一次認可及び一次API呼び出しのシーケンスにおける処理が実行される。
Web API_X109に相当する第1機能提供部901の第4生成部921は、一次アクセストークンを生成する(S2301)。一次アクセストークンの生成方法は、従来技術による。
Web API_X109に相当する第1機能提供部901の第2特定部933は、一次クライアントIDに基づいてコールバックURLを特定する(S2303)。コールバックURLは、一次クライアントのURLである。尚、第1機能提供部901は、従来技術の通り、一次クライアントのURLを一次クライアントIDと対応付けるデータを保持しているものとする。
Web API_X109に相当する第1機能提供部901の第1送信部903は、一次認可レスポンスを、一次認可通知の送信元であるブラウザ103へ送信する(S2305)。実施の形態2では、リダイレクト先URLのパラメータとして、一次認可コードに代えて、一次アクセストークン(この例では、TX_A)が付加される。
ブラウザ103が一次認可レスポンスを受信すると(S2307)、ブラウザ103は、HTTPリダイレクトによってWebアプリケーション_A107のURLへアクセスする(S2309)。このとき、Webアプリケーション_A107のURLに付加されている上記パラメータも引き渡される。
S1317乃至S1323に示した処理は、図13の場合と同様である。
実施の形態2では、図14に示した二次認可のシーケンスにおける処理に代えて、図24に示した、二次認可のシーケンスにおける処理が実行される。
S1401乃至S1405に示した処理は、図14の場合と同様である。
S2401において転送指示の対象となる二次認可要求は、実施の形態1の場合と同様にHTTPリダイレクトの指示である。但し、インプリシットグラント方式の場合に、二次レスポンスタイプには、アクセストークン型が設定される。また、二次認可レスポンスのコールバックURLは、省かれる。
Web API_X109に相当する第1機能提供部901の紐付け部925は、ローカルステートの紐付けを行う(S2403)。具体的には、当該紐付け部925は、紐付けテーブルに新たなレコードを設けて、当該レコードに一次アクセストークン、二次リソースサーバのURL及び二次ローカルステート(二次乱数と一次クライアント名との組み合わせ)が設定される。この例では、一次アクセストークンであるTX_A、二次リソースサーバのURLであるWeb API_Y111のURL、二次乱数であるRX_A及び一次クライアント名であるAAAが設定される。
Webアプリケーション_A107に相当するアプリケーション部801の受信部807が二次認可要求の転送指示を受信すると(S2405)、Webアプリケーション_A107に相当するアプリケーション部801の転送部817は、受信した二次認可要求を、図22のS1001におけるリクエストの送信元であるブラウザ103へ転送する(S2407)。
ブラウザ103が二次認可要求を受信すると(S2409)、ブラウザ103は、HTTPリダイレクトによってWeb API_Y111における二次同意画面のURLへアクセスする(S2411)。このとき、Web API_Y111における二次同意画面のURLに付加されている上記パラメータも引き渡される。
実施の形態2では、図17に示した二次認可のシーケンスの場合と同様の処理が実行される。
実施の形態2では、図18及び図19に示した二次認可及び二次API呼び出しのシーケンスにおける処理に代えて、図25に示した二次認可及び二次API呼び出しのシーケンスにおける処理が実行される。
Web API_Y111に相当する第2機能提供部1601の第3生成部1617は、二次アクセストークンを生成する(S2501)。二次アクセストークンの生成方法は、従来技術による。
Web API_Y111に相当する第2機能提供部1601の特定部1619は、二次クライアントIDに基づいてコールバックURLを特定する(S2503)。コールバックURLは、二次クライアントのURLである。尚、第2機能提供部1601は、従来技術の通り、二次クライアントのURLを二次クライアントIDと対応付けるデータを保持しているものとする。
Web API_Y111に相当する第2機能提供部1601の第1送信部1603は、二次認可レスポンスを、二次認可通知の送信元であるブラウザ103へ送信する(S2505)。実施の形態2では、リダイレクト先URLのパラメータとして、二次認可コードに代えて、二次アクセストークン(この例では、TY_X1)が付加される。
ブラウザ103が二次認可レスポンスを受信すると(S2507)、ブラウザ103は、HTTPリダイレクトによってWebアプリケーション_A107のURLへアクセスする(S2509)。このとき、Web API_X109のURLに付加されている上記パラメータも引き渡される。
Web API_X109に相当する第1機能提供部901の紐付け部925は、二次アクセストークンの紐付け(S2511)。具体的には、Web API_X109に相当する第1機能提供部901の紐付け部925は、図24のS2403で設けたレコードに、二次アクセストークンを設定する。このとき、Web API_X109に相当する第1機能提供部901の紐付け部925は、二次ローカルステートに基づいてレコードを特定するようにしてもよい。このようにすれば、結果的に二次アクセストークンが一次アクセストークンに紐付けられる。
S1921乃至S1927に示した処理は、図19の場合と同様である。
また、実施の形態2では、図20及び図21に示したシーケンスの場合と同様の処理が実行される。
本実施の形態によれば、インプリシットグラント方式によってアクセストークンを発行する場合も、実施の形態1と同様の効果を奏するようにできる。
尚、上述した実施の形態では、ブラウザ103と連携するアプリケーションプログラムの例として、WebアプリケーションがWeb APIを利用することを想定した。但し、ブラウザ103と連携するプログラムの例として、図26に示すようにネイティブアプリケーション2601がWeb APIを利用することを想定し、上述した実施の形態を適用するようにしてもよい。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
なお、上で述べたユーザ端末101及びWebサーバ105は、コンピュータ装置であって、図27に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーションプログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーションプログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーションプログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーションプログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係るアクセス制御装置は、(A)ネットワークを介して提供する第1機能に関する第1インターフェースへのアクセスを受信する受信部と、(B)上記アクセスを受信した場合に、ネットワークを介して提供される第2機能に関する第2インターフェースを利用する権限に関する認可要求を、上記アクセスの送信元プログラムと連携するブラウザ宛に転送させる指示を、当該送信元プログラムへ送信する送信部とを有する。
このようにすれば、ネットワークを介して提供する第1機能において、ネットワークを介して提供される第2機能を、より安全に利用できるようになる。尚、第2送信部905は、(B)送信部の例である。
更に、アクセス制御装置は、上記アクセスにおける権限の第1識別子と、第2インターフェースを利用する権限の第2識別子とを紐付ける紐付け部を有するようにしてもよい。
このようにすれば、第1インターフェースへアクセスする権限に基づいて、第2インターフェースを利用する権限を特定できるようになる。
なお、上で述べたアクセス制御装置における処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ネットワークを介して提供する第1機能に関する第1インターフェースへのアクセスを受信する受信部と、
前記アクセスを受信した場合に、前記ネットワークを介して提供される第2機能に関する第2インターフェースを利用する権限に関する認可要求を、前記アクセスの送信元プログラムと連携するブラウザ宛に転送させる指示を、当該送信元プログラムへ送信する送信部と
を有するアクセス制御装置。
(付記2)
更に、
前記アクセスにおける権限の第1識別子と、前記第2インターフェースを利用する前記権限の第2識別子とを紐付ける紐付け部
を有する付記1記載のアクセス制御装置。
(付記3)
ネットワークを介して提供する第1機能に関する第1インターフェースへのアクセスを受信し、
前記アクセスを受信した場合に、前記ネットワークを介して提供される第2機能に関する第2インターフェースを利用する権限に関する認可要求を、前記アクセスの送信元プログラムと連携するブラウザ宛に転送させる指示を、当該送信元プログラムへ送信する
処理をコンピュータに実行させるアクセス制御プログラム。
(付記4)
ネットワークを介して提供する第1機能に関する第1インターフェースへのアクセスを受信し、
前記アクセスを受信した場合に、前記ネットワークを介して提供される第2機能に関する第2インターフェースを利用する権限に関する認可要求を、前記アクセスの送信元プログラムと連携するブラウザ宛に転送させる指示を、当該送信元プログラムへ送信する
処理を含み、コンピュータにより実行されるアクセス制御方法。