IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7294158情報処理システム、情報処理装置、情報処理方法及び情報処理プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-12
(45)【発行日】2023-06-20
(54)【発明の名称】情報処理システム、情報処理装置、情報処理方法及び情報処理プログラム
(51)【国際特許分類】
   G06F 21/33 20130101AFI20230613BHJP
   G06F 21/62 20130101ALI20230613BHJP
【FI】
G06F21/33
G06F21/62 318
【請求項の数】 14
(21)【出願番号】P 2020005977
(22)【出願日】2020-01-17
(65)【公開番号】P2021114086
(43)【公開日】2021-08-05
【審査請求日】2022-09-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】坂口 昌隆
(72)【発明者】
【氏名】野田 敏達
(72)【発明者】
【氏名】兒島 尚
(72)【発明者】
【氏名】古川 和快
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2019-003477(JP,A)
【文献】特開2017-091207(JP,A)
【文献】米国特許出願公開第2017/0034172(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/31-21/46
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
アクセス対象である複数のリソースの数を記憶する記憶部と、
前記複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した前記アクセスに関する通知の数と、前記リソースの数との一致に応じて、前記リソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む第1の情報を端末装置へ送信し、
前記端末装置から受信した、前記リソースへのアクセスの許可に必要な複数の確認コードを含む第2の情報を前記複数の認可サーバそれぞれに対して送信する第1の送信部と、
を有する代理サーバと、
前記代理サーバから受信した前記第1の情報と、前記認可サーバそれぞれから受信した複数の前記確認コードとに基づいて生成した画面を出力する出力部と、
前記出力に対して入力を受け付けた情報に応じて生成された前記第2の情報を、前記代理サーバへ送信する第2の送信部と、
を有する端末装置と、
前記端末装置からの前記確認コードの発行要求の受信に応じて、前記端末装置に対して前記確認コードを送信する第3の送信部と、
前記代理サーバから受信した前記第2の情報に基づいて前記リソースに対するアクセスを許可するか否かを判定する判定部と、
を有する認可サーバと、
を有することを特徴とする情報処理システム。
【請求項2】
前記第2の情報は、
前記複数の認可サーバから受信した全ての複数の前記確認コードの情報を含むことを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記判定部は、
前記第2の情報の一部に前記端末装置に対して送信した前記確認コードが含まれるか否かに応じて判定することを特徴とする請求項1に記載の情報処理システム。
【請求項4】
前記端末装置からの要求に応じて前記アクセス対象のリソースの数を前記代理サーバに送信する第4の送信部を有するWebサーバを有することを特徴とする請求項1に記載の情報処理システム。
【請求項5】
代理サーバと、端末装置と、認可サーバとを有する情報処理システム内の代理サーバが、
アクセス対象である複数のリソースの数を記憶し、
前記複数のリソースそれぞれに対するアクセスの許可を行う複数の前記認可サーバそれぞれから受信した前記アクセスに関する通知の数と、前記リソースの数との一致に応じて、前記リソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む第1の情報を前記端末装置へ送信し、
前記端末装置から受信した、前記リソースへのアクセスの許可に必要な複数の確認コードを含む第2の情報を複数の複数の認可サーバそれぞれに対して送信する
処理を実行し、
前記端末装置が、
前記代理サーバから受信した前記第1の情報と、前記認可サーバそれぞれから受信した複数の前記確認コードとに基づいて生成した画面を出力し、
前記出力に対して入力を受け付けた情報に応じて生成された前記第2の情報を、前記代理サーバへ送信する
処理を実行し、
前記認可サーバは、
前記端末装置からの前記確認コードの発行要求の受信に応じて、前記端末装置に対して前記確認コードを送信し、
前記代理サーバから受信した前記第2の情報に基づいて前記リソースに対するアクセスを許可するか否かを判定する
処理を実行することを特徴とする情報処理方法。
【請求項6】
アクセス対象である複数のリソースの数を記憶する記憶部と、
前記複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した前記アクセスに関する通知の数と、前記リソースの数との一致に応じて、前記リソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む第1の情報を端末装置へ送信し、
前記端末装置から受信した、前記リソースへのアクセスの許可に必要な複数の確認コードを含む第2の情報を前記複数の認可サーバそれぞれに対して送信する送信部と、
を有することを特徴とする情報処理装置。
【請求項7】
情報処理装置が、
アクセス対象である複数のリソースの数を記憶し、
前記複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した前記アクセスに関する通知の数と、前記リソースの数との一致に応じて、前記リソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む第1の情報を端末装置へ送信し、
前記端末装置から受信した、前記リソースへのアクセスの許可に必要な複数の確認コードを含む第2の情報を前記複数の認可サーバそれぞれに対して送信する、
処理を実行することを特徴とする情報処理方法。
【請求項8】
アクセス対象である複数のリソースの数を記憶し、
前記複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した前記アクセスに関する通知の数と、前記リソースの数との一致に応じて、前記リソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む第1の情報を端末装置へ送信し、
前記端末装置から受信した、前記リソースへのアクセスの許可に必要な複数の確認コードを含む第2の情報を前記複数の認可サーバそれぞれに対して送信する、
処理を情報処理装置に実行させることを特徴とする情報処理プログラム。
【請求項9】
アクセス対象であるリソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む、代理サーバから受信した第1の情報と、複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した、前記リソースへのアクセスの許可に必要な複数の確認コードとに基づいて生成した画面を出力する出力部と、
出力した画面に対して入力を受け付けた情報に応じて生成された、前記複数の確認コードを含む第2の情報を、前記代理サーバへ送信する送信部と、
を有することを特徴とする情報処理装置。
【請求項10】
情報処理装置が、
アクセス対象であるリソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む、代理サーバから受信した第1の情報と、複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した、前記リソースへのアクセスの許可に必要な複数の確認コードとに基づいて生成した画面を出力し、
出力した画面に対して入力を受け付けた情報に応じて生成された、前記複数の確認コードを含む第2の情報を、前記代理サーバへ送信する
処理を実行することを特徴とする情報処理方法。
【請求項11】
アクセス対象であるリソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む、代理サーバから受信した第1の情報と、複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した、前記リソースへのアクセスの許可に必要な複数の確認コードとに基づいて生成した画面を出力し、
出力した画面に対して入力を受け付けた情報に応じて生成された、前記複数の確認コードを含む第2の情報を、前記代理サーバへ送信する
処理を情報処理装置に実行させることを特徴とする情報処理プログラム。
【請求項12】
端末装置からのアクセス対象のリソースへのアクセス許可に必要な複数の確認コードの発行要求の受信に応じて、前記端末装置に対して前記確認コードを送信する送信部と、
前記端末装置から入力した複数の確認コードを含む第2の情報を代理サーバ経由で受信し、受信した前記第2の情報に基づいて前記リソースに対するアクセスを許可するか否かを判定する判定部と、
を有することを特徴とする情報処理装置。
【請求項13】
情報処理装置が、
端末装置からのアクセス対象のリソースへのアクセス許可に必要な複数の確認コードの発行要求の受信に応じて、前記端末装置に対して前記確認コードを送信し、
前記端末装置から入力した複数の確認コードを含む第2の情報を代理サーバ経由で受信し、受信した前記第2の情報に基づいて前記リソースに対するアクセスを許可するか否かを判定する
処理を実行することを特徴とする情報処理方法。
【請求項14】
端末装置からのアクセス対象のリソースへのアクセス許可に必要な複数の確認コードの発行要求の受信に応じて、前記端末装置に対して前記確認コードを送信し、
前記端末装置から入力した複数の確認コードを含む第2の情報を代理サーバ経由で受信し、受信した前記第2の情報に基づいて前記リソースに対するアクセスを許可するか否かを判定する
処理を情報処理装置に実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【0002】
現在、ユーザリソースを提供するWeb API(Application Programming Interface)の公開が広がっている。図14は、WebアプリのWeb API呼出動作の一例を示す説明図である。Webブラウザは、Webアプリにリクエストを送信すると、リクエストに対するWebアプリからのレスポンス画面(HTMLコンテンツ)を表示する。これに対して、Web APIを利用する場合には、Webアプリが利用者のリクエストを受けると、Web APIを公開しているサーバに対してリクエストを送信する。そして、Webアプリが、Web APIを公開しているサーバからJSON等のデータを受け取ることで、利用者が操作するWebブラウザに対して必要な画面を表示することになる。
【0003】
Web APIを呼び出してデータを受け取る場合には、Web APIに対するリクエストはWebアプリから送信されることになるため、このリクエストが本当に利用者の同意があるか否かをWeb API側では認識できない。そこで、WebアプリがWeb APIからのデータを取得する場合には、Webアプリにデータを提供する利用者の同意を利用者に確認する必要がある。
【0004】
そこで、利用者の同意を確認する技術としてOAuthがある。OAuthは、Webアプリがユーザリソースにアクセスするために、利用者(リソースオーナ)がWebアプリのユーザリソースへのアクセスを認可する仕組みである。図15は、OAuth認可処理に関わる認可システムの処理動作の一例を示すシーケンス図である。Webブラウザ201は、Webアプリ202にリクエストを要求する(ステップS201)。Webアプリ202は、リクエストに応じて認可要求をWebブラウザ201に要求する(ステップS202)。Webブラウザ201は、Webアプリ202からの認可要求を認可サーバ203に要求する(ステップS203)。
【0005】
認可サーバ203は、Webアプリ202からの認可要求に応じて認可確認をWebブラウザ201に提供する(ステップS204)。Webブラウザ201は、認可確認に応じて認可確認画面210を表示する。図16は、認可確認画面210の一例を示す説明図である。図16に示す認可確認画面210は、例えば、「WebアプリXXXがリソースYYYへのアクセスを要求しています。」の認可要求内容211と、その認可要求内容211に同意する場合のOKボタン212と、その認可要求内容211に同意しない場合のNGボタン213とを有する。利用者は、Webブラウザ201に表示する認可確認画面210を参照する。
【0006】
Webブラウザ201は、利用者の認可確認画面210上のOKボタン212の操作を検出した場合、利用者の同意を認可サーバ203に送信する(ステップS205)。認可サーバ203は、利用者の同意を検出した場合、認可コードをWebブラウザ201に発行する(ステップS206)。尚、認可コードは、認可サーバ203が管理するリソースサーバ204にアクセスするためのアクセストークン発行を許可するためのコードである。
【0007】
Webブラウザ201は、認可サーバ203からの認可コードをWebアプリ202に送信する(ステップS207)。更に、Webアプリ202は、Webブラウザ201からの認可コードを認可サーバ203に送信する(ステップS208)。
【0008】
認可サーバ203は、認可コードを受信した場合、受信した認可コードが自分で発行済の認可コードであるか否かを判定する(ステップS209)。認可サーバ203は、認可コードが自分で発行済の認可コードの場合、Webアプリ202に対してアクセストークンを発行する(ステップS210)。更に、Webアプリ202は、認可サーバ203が発行したアクセストークンをリソースサーバ204に送信する(ステップS211)。その結果、Webアプリ202は、アクセストークンを用いてリソースサーバ204内のユーザリソースにアクセスできる。そして、Webブラウザ201は、Webアプリ202A経由でリソースサーバ204内のユーザリソースにアクセスすることになる。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2017-91207号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
OAuthでは、リソースアクセス毎に認可確認画面での利用者の同意操作が必要となる。例えば、5回のリソースアクセスを実行する場合には、認可確認画面での利用者の同意操作が5回必要となる。従って、利用者の操作負担が大きくなる。
【0011】
1つの側面では、リソースへアクセスする際の利用者の操作負担を軽減できる情報処理システム等を提供することを目的とする。
【課題を解決するための手段】
【0012】
1つの側面の情報処理システムは、代理サーバと、端末装置と、認可サーバとを有する。代理サーバは、記憶部と、第1の送信部とを有する。記憶部は、アクセス対象である複数のリソースの数を記憶する。第1の送信部は、前記複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバそれぞれから受信した前記アクセスに関する通知の数と、前記リソースの数との一致に応じて、前記リソースに関する情報、または、前記リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む第1の情報を端末装置へ送信する。第1の送信部は、前記端末装置から受信した、前記リソースへのアクセスの許可に必要な複数の確認コードを含む第2の情報を前記複数の認可サーバそれぞれに対して送信する。端末装置は、出力部と、第2の送信部とを有する。出力部は、前記代理サーバから受信した前記第1の情報と、前記認可サーバそれぞれから受信した複数の前記確認コードとに基づいて生成した画面を出力する。第2の送信部は、前記出力に対して入力を受け付けた情報に応じて生成された前記第2の情報を、前記代理サーバへ送信する。認可サーバは、第3の送信部と、判定部とを有する。第3の送信部は、前記端末装置からの前記確認コードの発行要求の受信に応じて、前記端末装置に対して前記確認コードを送信する。判定部は、前記代理サーバから受信した前記第2の情報に基づいて前記リソースに対するアクセスを許可するか否かを判定する。
【発明の効果】
【0013】
1つの側面によれば、リソースへアクセスする際の利用者の操作負担を軽減できる。
【図面の簡単な説明】
【0014】
図1図1は、本実施例の認可システムの一例を示す説明図である。
図2図2は、代理サーバのハードウェア構成の一例を示す説明図である。
図3図3は、代理サーバの機能構成の一例を示す説明図である。
図4図4は、端末装置のハードウェア構成の一例を示す説明図である。
図5図5は、端末装置の機能構成の一例を示す説明図である。
図6図6は、認可サーバのハードウェア構成の一例を示す説明図である。
図7図7は、認可サーバの機能構成の一例を示す説明図である。
図8図8は、Webサーバのハードウェア構成の一例を示す説明図である。
図9図9は、Webサーバの機能構成の一例を示す説明図である。
図10図10は、確認コードを含むWeb画面の一例を示す説明図である。
図11図11は、集約認可確認画面の一例を示す説明図である。
図12図12は、確認コード入力済みの集約認可確認画面の一例を示す説明図である。
図13A図13Aは、認可処理に関わる認可システムの処理動作の一例を示すシーケンス図である。
図13B図13Bは、認可処理に関わる認可システムの処理動作の一例を示すシーケンス図である。
図14図14は、WebアプリのWeb API呼出動作の一例を示す説明図である。
図15図15は、OAuth認可処理に関わる認可システムの処理動作の一例を示すシーケンス図である。
図16図16は、認可確認画面の一例を示す説明図である。
図17図17は、先行出願の認可システムの一例を示す説明図である。
図18図18は、先行出願の認可確認画面の一例を示す説明図である。
図19A図19Aは、先行出願の認可処理に関わる認可システムの処理動作の一例を示すシーケンス図である。
図19B図19Bは、先行出願の認可処理に関わる認可システムの処理動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【0015】
以下、図面に基づいて、本願の開示する情報処理システム等の実施例を詳細に説明する。尚、各実施例により、開示技術が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせても良い。
【0016】
本出願人は、利用者のリソースアクセスへの同意に要する操作負担を軽減するために、1回の同意操作で複数のリソースへのアクセスに一括で同意できる認可システムを提案している。
【0017】
図17は、先行出願の認可システム300の一例を示す説明図である。図17に示す認可システム300は、利用者の端末装置301と、Webサーバ302と、代理サーバ303と、複数の認可サーバ304とを有する。端末装置301は、Webブラウザ301Aを実装している。Webサーバ302は、Webアプリ302Aを提供するサーバである。代理サーバ303は、Webブラウザ301Aと各認可サーバ304との間で処理を代理するサーバである。認可サーバ304は、ユーザリソース305と接続し、認可サーバ304の認可に応じてWebブラウザ301AからWebアプリ302A経由でのユーザリソース305へのアクセスを許可する。
【0018】
図19A及び図19Bは、先行出願の認可処理に関わる認可システム300の処理動作の一例を示すシーケンス図である。認可処理の前処理としては、利用者がWebブラウザ301Aから認可サーバ304にログインしておくものとする。尚、認可サーバ304にログインしていない場合には、Webブラウザ301Aから認可サーバ304へリクエストが送信されたとき、その要求が正当な利用者から送信されたものかを認可サーバ304側では判断できない。従って、Webブラウザ301Aから認可サーバ304へのログインが成功した後、以下の処理手順が実行されることになる。
【0019】
Webブラウザ301Aは、利用者の操作に応じたリクエストをWebアプリ302Aに送信する(ステップS301)。Webアプリ302Aは、当該リクエストに応じてユーザリソースにアクセスする場合、確認コード、必要認可数及び認可セッションIDを生成する(ステップS302)。確認コードは、例えば、乱数として生成されるコードである。必要認可数は、アクセス対象のユーザリソースに応じて認可が必要とされる数である。認可セッションIDは、各Webブラウザ301Aとのセッションを識別するための情報である。すなわち、当該処理手順で行われる全ての通信には認可セッションIDが紐づけられている。複数のWebアプリ302Aが同様の処理手順を行った場合でも、認可セッションIDに基づいて、いずれのWebアプリ302Aからのリソース要求であるのかが識別できる。
【0020】
Webアプリ302Aは、確認コード(対象確認コード)を表示するWeb画面のHTMコンテンツと、必要認可数(対象必要認可数)と、認可セッションID(対象認可セッションID)とを含む応答をWebブラウザ301Aに送信する(ステップS303)。
【0021】
Webブラウザ301Aは、当該応答を受信した場合、当該応答に含まれているHTMLコンテンツに基づいて、Web画面を表示する(ステップS304)。Web画面は、確認コードを表示している。利用者は、Web画面を参照することで、確認コードを認識できる。
【0022】
Webブラウザ301Aは、対象認可セッションID及び対象必要認可数を代理サーバ303に送信する(ステップS305)。代理サーバ303は、対象認可セッションID及び対象必要認可数を受信した場合、対象必要認可数を対象認可セッションIDに関連付けて記憶しておく。
【0023】
更に、Webブラウザ301Aは、アクセス対象のリソースのアクセスを認可する認可サーバ304-1に対して、ワンタイムトークン(OT)発行要求1を送信する(ステップS306)。尚、OT発行要求1には、対象認可セッションID及び対象確認コードが含まれる。説明の便宜上、アクセス対象のリソースのアクセスを認可する認可サーバ304は、例えば、認可サーバ304-1及び304-Nとする。認可サーバ304-1は、OT発行要求1を受信した場合、OT発行要求1に含まれている対象認可セッションIDに関連付けて対象確認コードを記憶する。認可サーバ304-1は、例えば、ランダムなワンタイムトークン(OT1)を生成し、OT1を対象認可セッションIDに関連付けて記憶する(ステップS307)。従って、認可サーバ304-1は、対象確認コード及びOT1の組合せが対象認可セッションIDに関連付けられて記憶している。
【0024】
認可サーバ304-1は、対象認可セッションID及びOT1と、リダイレクト先を代理サーバ303とするリダイレクト命令とを含む応答をWebブラウザ301Aへ送信する(ステップS308)。Webブラウザ301Aは、当該リダイレクト命令に応じて、対象認可セッションID及びOT1を代理サーバ303へ送信する(ステップS309)。代理サーバ303は、対象認可セッションID及びOT1を受信した場合、OT1を、対象認可セッションID及び認可サーバ304-1のURLに関連付けて記憶する。尚、認可サーバ304-1のURLは、リダイレクトされたOT1等の送信元の情報として、HTTPに基づいて特定可能である。
【0025】
代理サーバ303は、認可サーバ304-1のURL宛の認可要求1を生成し、当該認可要求1を認可サーバ304-1に送信する(ステップS310)。認可サーバ304-1は、認可要求1を受信した場合、代理サーバ303に認可確認1を送信する(ステップS311)。代理サーバ303は、認可サーバ304-1からの認可確認画面のHTMLコンテンツを取得する(ステップS312)。
【0026】
また、Webブラウザ301Aは、アクセス対象のリソースのアクセスを認可する認可サーバ304-Nに対して、OT発行要求Nを送信する(ステップS306A)。認可サーバ304-Nは、例えば、ランダムなワンタイムトークン(OTN)を生成し、OTNを対象認可セッションIDに関連付けて記憶する(ステップS307A)。従って、認可サーバ304-Nは、対象確認コード及びOTNの組合せが対象認可セッションIDに関連付けられて記憶している。
【0027】
認可サーバ304-Nは、対象認可セッションID及びOTNと、リダイレクト先を代理サーバ303とするリダイレクト命令とを含む応答をWebブラウザ301Aへ送信する(ステップS308A)。Webブラウザ301Aは、当該リダイレクト命令に応じて、対象認可セッションID及びOTNを代理サーバ303へ送信する(ステップS309A)。代理サーバ303は、対象認可セッションID及びOTNを受信した場合、OTNを、対象認可セッションID及び認可サーバ304-NのURLに関連付けて記憶する。
【0028】
代理サーバ303は、認可サーバ304-NのURL宛の認可要求を生成し、当該認可要求Nを認可サーバ304-Nに送信する(ステップS310A)。認可サーバ304-Nは、認可要求Nを受信した場合、代理サーバ303に認可確認Nを送信する(ステップS311A)。代理サーバ303は、認可サーバ304-Nからの認可確認画面のHTMLコンテンツを取得する(ステップS312A)。
【0029】
代理サーバ303は、各認可サーバ304(304-1,304-N)からの認可確認画面のHTMLコンテンツの数が必要認可数に一致したか否かを判定する(ステップS313)。代理サーバ303は、認可確認画面のHTMLコンテンツの数が必要認可数に一致した場合、各認可サーバ304からの認可確認画面のHTMLコンテンツを集約又は統合する。そして、代理サーバ303は、認可確認画面のHTMLコンテンツを集約又は統合することで、利用者に提示するための図18に示す集約認可確認画面310のHTMLコンテンツを生成する。図18は、先行出願の集約認可確認画面310の一例を示す説明図である。図18に示す集約認可確認画面310は、確認コード311と、認可要求内容312と、確認コード入力欄313と、送信ボタン314とを有する。確認コード311は、Webアプリ302Aでランダムに生成するコードである。認可要求内容312は、例えば、「WebアプリXXXが以下のリソースへのアクセスを要求しています。リソース(1)、リソース(2)…」等の内容である。確認コード入力欄313は、利用者が認可要求内容312の内容に同意する場合に表示中の確認コード311を入力する欄である。送信ボタン314は、確認コード入力欄313に入力済みの確認コード311を代理サーバ301に送信するボタンである。
【0030】
代理サーバ303は、図18に示す集約認可確認画面310のHTMLコンテンツをWebブラウザ301Aに送信する(ステップS314)。Webブラウザ301Aは、集約認可確認画面310のHTMLコンテンツを受信した場合(ステップS315)、図18に示す集約認可確認画面310を表示する。その結果、利用者は、集約認可確認画面310内の認可要求内容312を参照することで、Webアプリ302Aがどのユーザリソースに対してアクセスを要求しているのかを認識できる。
【0031】
利用者は、集約認可確認画面310内の各認可要求内容312を確認し、認可要求内容312に同意する場合、表示中の正しい確認コード(対象確認コード)311を確認コード入力欄313に入力し、送信ボタン314を押下する。これに対して、利用者は、認可要求内容312に同意しない場合、正しくない確認コードを確認コード入力欄313に入力し、送信ボタン314を押下する。その結果、利用者は、複数の認可サーバ304-1及び304-Nに対する同意又は拒否を1回の同意操作で実現できる。
【0032】
図19BにおいてWebブラウザ301Aは、集約認可確認画面310内の確認コード入力欄313内に確認コードを入力し、送信ボタン314のボタン操作を検出する(ステップS321)。Webブラウザ301Aは、送信ボタン314のボタン操作を検出した場合、確認コード入力欄313に入力された文字列(入力確認コード)及び対象認可セッションIDを含むリクエストを代理サーバ303に送信する(ステップS322)。
【0033】
代理サーバ303は、入力確認コード及び対象認可セッションIDを含むリクエストを受信した場合、認可サーバ304毎に対象認可セッションID及び入力確認コードを含む同意1を送信する(ステップS323)。つまり、代理サーバ303は、対象認可セッションIDに関連付けられているOTと、当該OTに関連付けられている認可サーバ304のURLを取得する。そして、代理サーバ303は、OTに関連付けられている認可サーバ304のURL宛に当該OT及び入力確認コードと、対象認可セッションIDとを含む同意1を認可サーバ304に送信する。
【0034】
例えば、代理サーバ303は、OT1に対応する認可サーバ304-1のURL宛にOT1、入力確認コード及び認可セッションIDを含む同意1を送信する(ステップS323)。同様に、代理サーバ303は、OTNに対応する認可サーバ304-NのURL宛にOTN、入力確認コード及び認可セッションIDを含む同意Nを送信する(ステップS323A)。その結果、代理サーバ303は、必要認可数分(N個分)の同意1~Nが送信されることになる。代理サーバ303は、必要認可数分の同意1~Nが各認可サーバ304-1及び304-Nに送信した後、同意送信完了をWebブラウザ301Aに送信する(ステップS324)。
【0035】
例えば、認可サーバ304-1は、同意1を受信した場合、当該同意1に含まれているOT1及び入力確認コードの組合せと、当該対象認可セッションIDに関連付けられて記憶されているOT1及び対象確認コードの組合せとを比較する。そして、認可サーバ304-1は、比較結果に基づき、当該同意1の正当性を確認する(ステップS325)。
【0036】
認可サーバ304-1は、同意1に含まれるOT1及び入力確認コードの少なくともいずれか一方が、OT1又は対象確認コードと異なる場合、同意1が不当と判断し、認可コードを発行しない。また、認可サーバ304-1は、同意1に含まれるOT1及び入力確認コードの組合せと、当該対象認可セッションIDに関連付けられて記憶されているOT1及び対象確認コードの組合せとが一致する場合、同意1が正当と判断する。そして、認可サーバ304-1は、同意1が正当と判断した場合、認可コード1を代理サーバ303に発行する(ステップS326)。
【0037】
代理サーバ303は、認可コード1を受信した場合、当該認可コード1及び対象認可セッションIDをWebブラウザ301Aに送信する(ステップS327)。Webブラウザ301Aは、認可コード1及び対象認可セッションIDをWebアプリ302Aに送信する(ステップS328)。Webアプリ302Aは、認可コード1及び対象認可セッションIDを認可サーバ304-1に送信する(ステップS329)。
【0038】
認可サーバ304-1は、認可コードを受信した場合、受信した認可コードが自分で発行済の認可コード1と一致するか否かを判定する(ステップS330)。認可サーバ304-1は、受信した認可コードが自分で発行済の認可コード1と一致する場合、アクセストークン1をWebアプリ302Aに発行する(ステップS331)。Webアプリ302Aは、アクセストークン1の受取通知1をWebブラウザ301Aに送信する(ステップS332)。その結果、Webアプリ302Aは、アクセストークン1を使用して認可サーバ304-1が管理するユーザリソースにアクセスできる。
【0039】
また、認可サーバ304-Nは、同意Nに含まれるOTN及び入力確認コードの少なくともいずれか一方が、OTN又は対象確認コードと異なる場合、同意Nが不当と判断し、認可コードNを発行しない。また、認可サーバ304-Nは、同意Nに含まれるOTN及び入力確認コードの組合せと、当該対象認可セッションIDに関連付けられて記憶されているOTN及び対象確認コードの組合せとが一致する場合、同意Nが正当と判断する。そして、認可サーバ304-Nは、同意Nが正当と判断した場合、認可コードNを代理サーバ303に発行する(ステップS326A)。
【0040】
代理サーバ303は、認可コードNを受信した場合、当該認可コードN及び対象認可セッションIDをWebブラウザ301Aに送信する(ステップS327A)。Webブラウザ301Aは、認可コードN及び対象認可セッションIDをWebアプリ302Aに送信する(ステップS328A)。Webアプリ302Aは、認可コードN及び対象認可セッションIDを認可サーバ304-Nに送信する(ステップS329A)。
【0041】
認可サーバ304-Nは、認可コードを受信した場合、受信した認可コードが自分で発行済の認可コードNと一致するか否かを判定する(ステップS330A)。認可サーバ304-Nし、受信した認可コードが自分で発行済の認可コードNと一致する場合、アクセストークンNをWebアプリ302Aに発行する(ステップS331A)。Webアプリ302Aは、アクセストークンNの受取通知NをWebブラウザ301Aに送信する(ステップS332A)。その結果、Webアプリ302Aは、アクセストークンNを使用して認可サーバ304-Nが管理するユーザリソースにアクセスできる。
【0042】
認可システム300では、代理サーバ303が認可サーバ304から送られる認可確認画面のHTMLコンテンツを集約することで、集約認可確認画面310をWebブラウザ301Aに送信する。利用者は、複数回の同意操作を行うことなく、集約認可確認画面310上の1回の同意操作(確認コード入力操作)で複数のリソースへのアクセスに同意する。その結果、リソースへのアクセスに対する利用者の同意の操作負担を軽減できる。
【0043】
つまり、先行出願の認可システム300では、確認コードを用いて代理サーバ303が勝手な同意を防止している。確認コードは、Webアプリ302Aがその値を生成し、Web画面に表示するため、利用者の同意があるまでは代理サーバ303側で確認コードの値を認識できない。従って、代理サーバ303は、認可サーバ304に対して同意を伝えることができない。
【0044】
しかしながら、Webアプリ302Aと代理サーバ303とが共謀した場合には、Webアプリ302Aが生成した確認コードを代理サーバ303と共有できるため、共有した確認コードを用いて利用者の同意があったように見せかけることができる。その結果、Webアプリ302Aは、代理サーバ303と共謀することで、利用者の同意がない場合でも、ユーザリソースにアクセスできてしまう。
【0045】
そこで、このような事態に対処する実施の形態につき以下に説明する。
【実施例
【0046】
認可システム1では、認可サーバ5が確認コードを発行することで、代理サーバ4及びWebアプリ3Aが共謀した場合でも、代理サーバ4及びWebアプリ3Aでは確認コードが認識できないため、利用者の同意なしのリソースへの不正アクセスを回避できる。
【0047】
図1は、本実施例の認可システム1の一例を示す説明図である。図1に示す認可システム1は、端末装置2と、Webサーバ3と、代理サーバ4と、複数の認可サーバ5と、通信網6とを有する。端末装置2は、Webサーバ3で提供されるWebアプリ3Aを利用する利用者の端末である。端末装置2は、Webアプリ3Aの画面を表示するためのWebブラウザ2Aを実装している。端末装置2は、例えば、PC(Personal Computer)、スマートフォン又はタブレット端末等の端末装置である。
【0048】
Webサーバ3は、例えば、Webアプリ3Aを提供する、少なくとも1以上のコンピュータである。代理サーバ4は、例えば、Webサーバ3と端末装置2との間の処理を代理する、少なくとも1以上のコンピュータである。認可サーバ5は、例えば、OAuthの認可処理を実行する、例えば、1以上のコンピュータである。尚、説明の便宜上、認可サーバ5は、Webアプリ3AがWeb APIを用いてアクセス対象となる利用者のリソースを管理するリソースサーバを含むものとする。尚、認可サーバ5は、リソースサーバを含むのではなく、リソースサーバと接続しても良く、適宜変更可能である。通信網6は、端末装置2、Webサーバ3、代理サーバ4や認可サーバ5との間を通信で接続する、例えば、インターネット等の通信網である。
【0049】
図2は、代理サーバ4のハードウェア構成の一例を示す説明図である。図2に示す代理サーバ4は、通信インタフェース11と、HDD(Hard Disk Drive)12と、ROM(Read Only Memory)13と、RAM(Random Access Memory)14と、CPU(Central Processing Unit)15と、バス16とを有する。通信インタフェース11は、通信網6との間の通信を司るインタフェースである。HDD12は、各種情報を記憶する。ROM13は、各種プログラム等を記憶する。RAM14は、各種情報を記憶する。CPU15は、代理サーバ4全体を制御する。バス16は、通信インタフェース11、HDD12、ROM13、RAM14及びCPU15と相互に接続する制御線等のラインである。代理サーバ4での処理を実現するプログラムは、例えば、HDD12やROM13等に記録されているものとする。CPU15は、例えば、ROM13に記録されたプログラムをRAM14に展開し、RAM14上で各種プログラムに対応した機能プロセスを実行することになる。
【0050】
図3は、代理サーバ4の機能構成の一例を示す説明図である。図3に示す代理サーバ4は、第1の記憶部4Aと、機能プロセスとして、第1の送信部4Bとを有する。第1の記憶部4Aは、例えば、RAM14に記憶するものとする。第1の記憶部4Aは、アクセス対象である複数のリソースの数である必要認可数を記憶する。第1の記憶部4Aは、対象認可セッションID及び対象必要認可数を受信した場合、対象必要認可数を対象認可セッションIDに関連付けて記憶する。認可セッションIDは、各Webブラウザ2Aとのセッションを識別するための情報である。第1の記憶部4Aは、対象認可セッションID及び、認可サーバ5が発行した後述するワンタイムトークン(OT)を受信した場合、OTを、対象認可セッションID及び認可サーバ304のURLに関連付けて記憶する。
【0051】
第1の送信部4Bは、複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバ5それぞれから受信したアクセスに関する通知である認可確認の数と、必要認可数とを比較する。第1の送信部4Bは、認可確認の数と必要認可数との一致に応じて、リソースに関する情報である認可要求内容、または、リソースに関する情報に基づいて生成した画面の情報、の少なくともいずれかを含む第1の情報(認可要求内容)を端末装置2のWebブラウザ2Aに送信する。認可要求内容は、アクセス対象のリソースへのアクセス同意を利用者に要求する内容である。第1の送信部4Bは、Webブラウザ2Aから受信した、リソースへのアクセスの許可に必要な複数の確認コードを含む結合コードを複数の認可サーバ5それぞれに対して送信する。確認コードは、認可サーバ5毎に発行するコードである。
【0052】
図4は、端末装置2のハードウェア構成の一例を示す説明図である。図4に示す端末装置2は、通信インタフェース11Aと、HDD12Aと、ROM13Aと、RAM14Aと、CPU15Aと、バス16Aとを有する。通信インタフェース11Aは、通信網6との間の通信を司るインタフェースである。HDD12Aは、各種情報を記憶する。ROM13Aは、各種プログラム等を記憶する。RAM14Aは、各種情報を記憶する。CPU15Aは、端末装置2全体を制御する。バス16Aは、通信インタフェース11A、HDD12A、ROM13A、RAM14A及びCPU15Aと相互に接続する制御線等のラインである。端末装置2での処理を実現するプログラムは、例えば、HDD12AやROM13A等に記録されているものとする。CPU15Aは、例えば、ROM13Aに記録されたプログラムをRAM14Aに展開し、RAM14A上で各種プログラムに対応した機能プロセスを実行することになる。
【0053】
図5は、端末装置2の機能構成の一例を示す説明図である。図5に示す端末装置2は、機能プロセスとして、出力部2Bと、第2の送信部2Cとを有する。出力部2Bは、代理サーバ4から受信した第1の情報(認可要求内容)と、認可サーバ5それぞれから受信した複数の確認コードとに基づいて生成した画面である、図11及び図12に示す集約認可確認画面を出力する。第2の送信部2Cは、図12に示す集約認可確認画面上の確認コード入力欄に入力した複数の確認コードを含む結合コードを代理サーバ4に送信する。
【0054】
図6は、認可サーバ5のハードウェア構成の一例を示す説明図である。図7に示す認可サーバ5は、通信インタフェース11Bと、HDD12Bと、ROM13Bと、RAM14Bと、CPU15Bと、バス16Bとを有する。通信インタフェース11Bは、通信網6との間の通信を司るインタフェースである。HDD12Bは、各種情報を記憶する。ROM13Bは、各種プログラム等を記憶する。RAM14Bは、各種情報を記憶する。CPU15Bは、認可サーバ5全体を制御する。バス16Bは、通信インタフェース11B、HDD12B、ROM13B、RAM14B及びCPU15Bと相互に接続する制御線等のラインである。認可サーバ5での処理を実現するプログラムは、例えば、HDD12BやROM13B等に記録されているものとする。CPU15Bは、例えば、ROM13Bに記録されたプログラムをRAM14Bに展開し、RAM14B上で各種プログラムに対応した機能プロセスを実行することになる。
【0055】
図7は、認可サーバ5の機能構成の一例を示す説明図である。図5に示す認可サーバ5は、機能プロセスとして、第3の送信部5Aと、判定部5Bとを有する。更に、認可サーバ5は、第2の記憶部5Cを有する。第2の記憶部5Cは、例えば、RAM14Bに記憶するものとする。第3の送信部5Aは、Webブラウザ2Aからの確認コードの発行要求であるOT発行要求の受信に応じて、Webブラウザ2Aに対して確認コードを送信する。判定部5Bは、代理サーバ4から受信した結合コードに基づいてリソースに対するアクセスを許可するか否かを判定する。判定部5Bは、結合コードの一部に自分が発行した確認コードがあるか否かを判定する。判定部5Bは、結合コードの一部に自分が発行した確認コードがある場合、リソースに対するアクセスを許可するアクセストークンを発行する。また、判定部5Bは、結合コードの一部に自分が発行した確認コードがない場合、リソースに対するアクセスを拒否する。
【0056】
第2の記憶部5Cは、Webブラウザ2Aから送信された認可セッションIDと、認可サーバ5自身が発行した確認コードと、認可サーバ5自身が発行するワンタイムトークン(OT)とを対応付けて記憶する。ワンタイムトークンは、利用者の代理として、アクセス対象のリソースへのアクセス同意・拒否を行うだけの権限を表すトークンである。
【0057】
図8は、Webサーバ3のハードウェア構成の一例を示す説明図である。図8に示すWebサーバ3は、通信インタフェース11Cと、HDD12Cと、ROM13Cと、RAM14Cと、CPU15Cと、バス16Cとを有する。通信インタフェース11Cは、通信網6との間の通信を司るインタフェースである。HDD12Cは、各種情報を記憶する。ROM13Cは、各種プログラム等を記憶する。RAM14Cは、各種情報を記憶する。CPU15Cは、Webサーバ3全体を制御する。バス16Cは、通信インタフェース11C、HDD12C、ROM13C、RAM14C及びCPU15Cと相互に接続する制御線等のラインである。Webサーバ3での処理を実現するプログラムは、例えば、HDD12CやROM13C等に記録されているものとする。CPU15Cは、例えば、ROM13Cに記録されたプログラムをRAM14Cに展開し、RAM14C上で各種プログラムに対応した機能プロセスを実行することになる。
【0058】
図9は、Webサーバ3の機能構成の一例を示す説明図である。図9に示すWebサーバ3は、機能プロセスとして、必要認可数生成部3Bと、認可セッションID生成部3Cと、認可画面生成部3Dと、第4の送信部3Eとを有する。更に、Webサーバ3は、代理サーバ情報記憶部3Fと、認可サーバ情報記憶部3Gとを有する。代理サーバ情報記憶部3F及び認可サーバ情報記憶部3Gは、例えば、RAM14C上に記憶するものとする。
【0059】
必要認可数生成部3Bは、一連の認可要求で通信を行う認可サーバ5の数を示す必要認可数を生成する。認可セッションID生成部3Cは、認可要求が一連のものであることを示す認可セッションIDを生成する。代理サーバ情報記憶部3Fは、認可セッションID、必要認可数及び代理サーバ4のURLを対応付けて記憶する。認可サーバ情報記憶部3Gは、認可セッションID、認可サーバ5のURL、認可コード及びアクセストークン等を記憶する。認可画面生成部3Dは、複数の認可サーバ5からの確認コード及び、代理サーバ4が集約した認可要求の集約認可確認画面のHTMLコンテンツを生成する。第4の送信部3Eは、Webブラウザ2Aの要求に応じて、アクセス対象の必要認可数及び認可セッションIDを代理サーバ4に送信する。
【0060】
図10は、確認コードを含むWeb画面30の一例を示す説明図である。図10に示すWeb画面30は、認可要求内容を表示するフレーム31と、確認コードを表示するフレーム32とを有する。フレーム31は、代理サーバ4が生成する認可要求内容が表示する領域である。フレーム32は、認可サーバ5が生成する確認コードが表示する領域である。各認可サーバ5は、Webブラウザ2AからのOT発行要求を検出すると、確認コード及びOTを生成する。各認可サーバ5は、確認コードを生成した場合、図10に示すWeb画面30上の認可サーバ5に対応するフレーム32に確認コードを表示するHTMLコンテンツを生成する。代理サーバ4は、認可要求内容を生成した場合、図10に示すWeb画面30上のフレーム31に認可要求内容を表示するHTMLコンテンツを生成する。
【0061】
図11は、集約認可確認画面30Aの一例を示す説明図である。代理サーバ4は、各認可サーバ5からの認可要求に対する認可確認を検出した場合、認可確認の認可要求内容を記憶する。代理サーバ4は、認可要求に対する認可確認を検出した場合、認可確認数が必要認可数に一致するか否かを判定する。代理サーバ4は、認可確認数が必要認可数に一致した場合、認可要求内容を生成する。代理サーバ4は、全ての認可要求内容を集約した集約認可確認画面30AのHTMLコンテンツを生成する。代理サーバ4は、集約認可確認画面30AのHTMLコンテンツに基づき、図11に示す集約認可確認画面30Aを端末装置2のWebブラウザ2A上に表示する。集約認可確認画面30Aは、確認コード41と、認可要求内容42と、確認コード入力欄43と、送信ボタン44とを有する。確認コード41は、認可サーバ5でランダムに生成するコードである。認可要求内容42は、例えば、「WebアプリXXXが以下のリソースへのアクセスを要求しています。」等の要求内容42Aと、「以下のリソース」の内容を示す「リソース(1)、リソース(2)…」等の詳細内容42Bとを有する。認可要求内容42は、代理サーバ4が生成する内容である。確認コード入力欄43は、利用者が認可要求内容42の内容に同意する場合に表示中の確認コード41(結合コード)を入力する欄である。送信ボタン44は、確認コード入力欄43に入力済みの複数の確認コード41を含む結合コードを代理サーバ4に送信するボタンである。
【0062】
図12は、確認コード入力済みの集約認可確認画面30Aの一例を示す説明図である。利用者は、図12に示す集約認可確認画面30A上に表示された認可要求内容42に同意する場合、全ての認可サーバ5からの確認コード41の組合せ値、すなわち結合コードを集約認可確認画面30A上の確認コード入力欄43に入力する。そして、利用者は、確認コード入力欄43に結合コードを入力した後、送信ボタン44をボタン操作する。Webブラウザ2Aは、送信ボタン44のボタン操作を検出した場合、確認コード入力欄43に入力した結合コードを各認可サーバ5に送信する。
【0063】
各認可サーバ5は、Webブラウザ2Aからの結合コードを検出した場合、結合コード内に自分が発行した確認コードがあるか否かを判定する。各認可サーバ5は、結合コード内に自分が発行した確認コードがある場合、利用者の同意があると判断する。
【0064】
図13A及び図13Bは、認可処理に関わる認可システム1の処理動作の一例を示すシーケンス図である。認可処理の前処理としては、利用者がWebブラウザ2Aから認可サーバ5にログインしておくものとする。尚、認可サーバ5にログインしていない場合には、Webブラウザ2Aから認可サーバ5へリクエストが送信されたとき、その要求が正当な利用者から送信されたものかを認可サーバ5側では判断できない。従って、Webブラウザ2Aから認可サーバ5へのログインが成功した後、以下の処理手順が実行されることになる。
【0065】
Webブラウザ2Aは、Webアプリ3Aにリクエストを要求する(ステップS11)。Webアプリ3Aは、リクエストを検出した場合(ステップS11:Yes)、必要認可数及び認可セッションIDを生成する(ステップS12)。当該処理手順で行われる全ての通信には認可セッションIDが紐づけられており、複数のWebアプリ3Aが同様の処理手順を行った場合でも、認可セッションIDに基づいて、いずれのWebアプリ3Aからのリソース要求であるのかが識別できる。Webアプリ3Aは、必要認可数及び認可セッションIDをWebブラウザ2Aに送信する(ステップS13)。その結果、Webブラウザ2Aは、図10に示す認可サーバ5と通信するための必要認可数相当のフレームを表示するWeb画面を表示する。尚、認可セッションIDは、複数のWebアプリ3Aが同様の処理フローを実行した場合、認可セッションIDを利用することで、どのWebアプリ3Aからのリソース要求であるか否かを識別できる。更に、Webブラウザ2Aは、必要認可数及び認可セッションIDを代理サーバ4に送信する(ステップS14)。代理サーバ4は、対象認可セッションID及び対象必要認可数を受信した場合、対象必要認可数を対象認可セッションIDに関連付けて記憶しておく。
【0066】
更に、Webブラウザ2Aは、アクセス対象のリソースを管理する認可サーバ5-1にOT発行要求1を送信する(ステップS15)。尚、OT発行要求1には、対象認可セッションIDが含まれる。説明の便宜上、アクセス対象のリソースのアクセスを認可する認可サーバ5は、例えば、認可サーバ5-1及び5-Nとする。Webブラウザ2Aは、N個の認可サーバ5に対して、代理サーバ4が利用者の代わりに1回の同意を行う権限を取得するOT発行要求を送信する。
【0067】
認可サーバ5-1は、OT発行要求1に応じて、認証セッションIDに対応した認可サーバ5-1のOT1及び確認コード1を生成する(ステップS16)。認可サーバ5-1は、OT1及び確認コード1をWebブラウザ2Aに送信する(ステップS17)。
【0068】
Webブラウザ2Aは、受信した確認コード1を表示した後、XMLHttpRequest等を使用し、OT1及び認可セッションIDを代理サーバ4に送信する(ステップS18)。代理サーバ4は、認可セッションID及びOT1を受信した場合、OT1を、認可セッションID及び認可サーバ5-1のURLに関連付けて記憶する。尚、認可サーバ5-1のURLは、OT1等の送信元の情報として、HTTPに基づいて特定可能である。代理サーバ4は、認可セッションID及びOT1に応じて認可サーバ5-1のURL宛の認可要求1を生成し、認可要求1を認可サーバ5-1に送信する(ステップS19)。認可サーバ5-1は、認可要求1に応じて認可確認1を代理サーバ4に送信する(ステップS20)。
【0069】
また、Webブラウザ2Aは、認可サーバ5-NにOT発行要求Nを送信する(ステップS15A)。認可サーバ5-Nは、OT発行要求Nに応じて、認可サーバ5-NのOTN及び確認コードNを生成する(ステップS16A)。認可サーバ5-Nは、OTN及び確認コードNをWebブラウザ2Aに送信する(ステップS17A)。
【0070】
Webブラウザ2Aは、OTN及び認可セッションIDを代理サーバ4に送信する(ステップS18A)。代理サーバ4は、認可セッションID及びOTNを受信した場合、OTNを、認可セッションID及び認可サーバ5-NのURLに関連付けて記憶する。代理サーバ4は、認可セッションID及びOTNに応じて認可サーバ5-NのURL宛の認可要求Nを生成し、認可要求Nを認可サーバ5-Nに送信する(ステップS19A)。認可サーバ5-Nは、認可要求Nに応じて認可確認Nを代理サーバ4に送信する(ステップS20A)。
【0071】
つまり、代理サーバ4は、認可サーバ5毎に認可要求を送信し、各認可サーバ5は、認可要求に応じた認可確認を代理サーバ4に送信する。ステップS15~ステップS20までの処理を認可サーバ5毎に実行することになる。代理サーバ4は、各認可サーバ5から受信した認可確認画面のHTMLコンテンツの数が必要認可数と一致したか否かを判定する(ステップS21)。代理サーバ4は、認可確認画面のHTMLコンテンツの数が必要認可数と一致した場合、図11に示す集約認可確認画面30AのHTMLコンテンツを生成する(ステップS22)。
【0072】
代理サーバ4は、集約認可確認画面30AのHTMLコンテンツをWebブラウザ2Aに送信する(ステップS23)。その結果、Webブラウザ2Aは、図11に示す集約認可確認画面30Aを表示する。利用者は、集約認可確認画面30A上の認可要求内容42を参照し、Webアプリ3Aがアクセス要求しようとするアクセス対象のリソースを認識できる。利用者は、認可要求内容42に同意する場合、Webブラウザ2Aに表示中の集約認可確認画面30A上の確認コード入力欄43に認可サーバ5毎の全ての確認コード41(結合コード)を入力する(ステップS24)。Webブラウザ2Aは、確認コード入力欄43に入力した複数の確認コード41を含む結合コードを代理サーバ4に送信する(ステップS25)。
【0073】
代理サーバ4は、認可サーバ5毎に、認可サーバ5毎のOTを使用して結合コードを送信する。代理サーバ4は、認可サーバ5-1のOT1を使用して結合コードを認可サーバ5-1に送信する(ステップS26)。また、代理サーバ4は、認可サーバ5-NのOTNを使用して結合コードを認可サーバ5-Nに送信する(ステップS26A)。代理サーバ4は、全ての認可サーバ5に対する結合コードの送信が完了した場合、同意送信完了をWebブラウザ2Aに送信する(ステップS27)。
【0074】
認可サーバ5-1は、代理サーバ4から結合コードを受信した場合、結合コード内に自分が発行した確認コード1があるか否かを判定する。認可サーバ5-1は、結合コード内に自分が発行した確認コード1がある場合、利用者がリソースへのアクセスに同意したものと判断し、アクセストークン1を発行するための認可コード1を代理サーバ4に発行する(ステップS28)。代理サーバ4は、発行した認可コード1をWebブラウザ2Aに送信する(ステップS29)。
【0075】
Webブラウザ2Aは、認可コード1を受信した場合、認可セッションID、認可コード1をWebアプリ3Aに送信する(ステップS30)。Webアプリ3Aは、認可セッションIDで認可コード1を認可サーバ5-1に送信する(ステップS31)。
【0076】
認可サーバ5-1は、Webブラウザ2Aからの認可コードを受信した場合、受信した認可コードが自分で発行済の認可コード1と一致するか否かを判定する。更に、認可サーバ5-1は、受信した認可コードが自分で発行済の認可コード1と一致する場合(ステップS32)、アクセストークン1をWebアプリ3Aに発行する(ステップS33)。Webアプリ3Aは、認可サーバ5-1からアクセストークン1を取得した場合、アクセストークン1の受取通知1をWebブラウザ2Aに送信する(ステップS34)。その結果、Webアプリ3Aは、アクセストークン1を使用して認可サーバ5-1が管理するユーザリソースにアクセスできる。
【0077】
同様に、認可サーバ5-Nは、代理サーバ4から結合コードを受信した場合、結合コード内に自分で発行した確認コードNがあるか否かを判定する。認可サーバ5は、結合コード内に自分で発行した確認コードNがある場合、アクセストークン2を発行するための認可コードNを代理サーバ4に発行する(ステップS28A)。代理サーバ4は、発行した認可コードNをWebブラウザ2Aに送信する(ステップS29A)。
【0078】
Webブラウザ2Aは、認可コードNを受信した場合、認可セッションID、認可コードNをWebアプリ3Aに送信する(ステップS30A)。Webアプリ3Aは、認可セッションIDで認可コードNを認可サーバ5-Nに送信する(ステップS31A)。
【0079】
認可サーバ5-Nは、Webブラウザ2Aからの認可コードNを受信した場合、受信した認可コードが自分で発行済の認可コードNと一致するか否かを判定する。更に、認可サーバ5-Nは、受信した認可コードが自分で発行済の認可コードNと一致する場合(ステップS32A)、アクセストークンNをWebアプリ3Aに発行する(ステップS33A)。Webアプリ3Aは、認可サーバ5-NからアクセストークンNを取得した場合、アクセストークンNの受取通知NをWebブラウザ2Aに送信する(ステップS34A)。その結果、Webアプリ3Aは、アクセストークンNを使用して認可サーバ5-Nが管理するユーザリソースにアクセスできる。
【0080】
実施例1の代理サーバ4は、複数のリソースそれぞれに対するアクセスの許可を行う複数の認可サーバ5それぞれから受信したアクセスに関する通知である認可確認の数と、必要認可数との一致に応じて、認可要求内容をWebブラウザ2Aに送信する。代理サーバ4は、Webブラウザ2Aから受信した、リソースへのアクセスの許可に必要な複数の確認コードを含む結合コードを複数の認可サーバ5それぞれに対して送信する。Webブラウザ2Aは、代理サーバ4から提供された集約認可確認画面30A上に複数の確認コードを含む結合コードを入力し、結合コードを認可サーバ5に送信する。各認可サーバ5は、確認コードの発行要求に応じて、Webブラウザ2Aに対して確認コードを送信する。各認可サーバ5は、代理サーバ4から受信した結合コードに基づき、リソースに対するアクセスを許可するか否かを判定する。その結果、各認可サーバ5が確認コードを発行することになるため、代理サーバ4及びWebアプリ3Aが共謀した場合でも、代理サーバ4及びWebアプリ3Aでは確認コードが認識できない。従って、Webアプリ3Aが利用者の同意なしによるリソースへの不正アクセスを回避できる。また、リソースへアクセスする際の利用者の操作負担を軽減できる。
【0081】
また、結合コードは、複数の認可サーバ5から受信した全ての複数の確認コードの情報を含む。つまり、利用者は、集約認可確認画面30A上の認可要求内容を参照しながら、表示中の認可サーバ5毎の確認コードを確認コード入力欄43に入力するため、1回の同意操作で複数のリソースへのアクセスに同意できる。
【0082】
認可サーバ5は、結合コードの一部に自分が発行した確認コードが含まれる場合、認可コードを発行した。その結果、認可サーバ5は、代理サーバ4からの結合コードで認可コードの発行可否を判断できる。
【0083】
先行発明では、Webアプリが確認コードを生成及び表示し、確認コードの値の一致/不一致を認可サーバが確認している。これに対して、本実施例では、認可サーバ5が確認コードを生成し、確認コードの値をWeb画面中のフレームに表示することで、利用者に確認コードを提示している。また、認可確認時には、複数の認可サーバ5が生成した確認コードをまとめた値、すなわち結合コードを認可サーバ5に送信する。更に、認可サーバ5は、結合コード内に自身が発行した確認コードがあるか否かを確認することで、認可コードの発行可否を判断できる。
【0084】
先行発明では、Webアプリと代理サーバとが共謀した場合、Webアプリが利用者の同意なく、勝手にリソースにアクセスできる。これに対して、本実施例では、利用者の同意に必要となる確認コードを認可サーバ5が生成することで、Webアプリ3Aと代理サーバ4とが共謀した場合でも、確認コードが把握できないため、利用者の同意なくリソースに勝手にアクセスすることができない。従って、利用者の同意なしによるリソースへのアクセスを回避できる。
【0085】
尚、説明の便宜上、2台の認可サーバ5が管理する2個のリソースにアクセスする場合、各認可サーバ5が発行した各確認コードを集約認可確認画面30Aに表示し、集約認可確認画面30A上に2個の確認コードを含む結合コードを入力する場合を例示した。しかしながら、N台の認可サーバ5が管理するN個のリソースにアクセスする場合、各認可サーバ5が発行したN個の確認コードを集約認可確認画面30Aに表示し、集約認可確認画面30A上のN個の確認コードを含む結合コードを入力すればよく、適宜変更可能である。
【0086】
また、本実施例では、Webブラウザ2AがWebアプリ3Aを使用して認可サーバ5のリソースにアクセスする場合を例示したが、Webブラウザ2Aが認可サーバ5のリソースにアクセスしても良く、適宜変更可能である。
【0087】
本実施例では、認可サーバ5が管理するリソースにアクセスする場合を例示したが、認可サーバ5が管理するリソースサーバを備え、リソースサーバ内のリソースにアクセスする形態に適用しても良く、適宜変更可能である。
【0088】
本実施例では、集約認可確認画面30AをWebブラウザ2Aに提示したが、リソースに関する認可要求内容をWebブラウザ2Aに通知し、何らかの操作で認可要求内容の同意を代理サーバ4に通知しても良く、適宜変更可能である。
【0089】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【0090】
更に、各装置で行われる各種処理機能は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)やFPGA(Field Programmable Gate Array)等上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、CPU等で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良い。
【0091】
各種情報を記憶する領域は、例えば、ROM(Read Only Memory)や、SDRAM(Synchronous Dynamic Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)やNVRAM(Non-Volatile Random Access Memory)等のRAM(Random Access Memory)で構成しても良い。
【符号の説明】
【0092】
1 認可システム
2 端末装置
2A Webブラウザ
2B 出力部
2C 第2の送信部
3 Webサーバ
3A Webアプリ
3E 第4の送信部
4 代理サーバ
4A 第1の記憶部
4B 第1の送信部
5 認可サーバ
5A 第3の送信部
5B 判定部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13A
図13B
図14
図15
図16
図17
図18
図19A
図19B