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

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

▶ 株式会社大和総研の特許一覧

<>
  • 特許-トークン検証システムおよびプログラム 図1
  • 特許-トークン検証システムおよびプログラム 図2
  • 特許-トークン検証システムおよびプログラム 図3
  • 特許-トークン検証システムおよびプログラム 図4
  • 特許-トークン検証システムおよびプログラム 図5
  • 特許-トークン検証システムおよびプログラム 図6
  • 特許-トークン検証システムおよびプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】トークン検証システムおよびプログラム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20240920BHJP
   G06F 21/44 20130101ALI20240920BHJP
【FI】
G06F21/62 318
G06F21/44
【請求項の数】 5
(21)【出願番号】P 2024064308
(22)【出願日】2024-04-11
【審査請求日】2024-05-10
(73)【特許権者】
【識別番号】596108508
【氏名又は名称】株式会社大和総研
(74)【代理人】
【識別番号】100114638
【弁理士】
【氏名又は名称】中野 寛也
(72)【発明者】
【氏名】近藤 智朗
(72)【発明者】
【氏名】林 亮輔
(72)【発明者】
【氏名】神戸 梨沙
【審査官】三森 雄介
(56)【参考文献】
【文献】特開2020-166469(JP,A)
【文献】特開2016-177795(JP,A)
【文献】米国特許出願公開第2023/0018767(US,A1)
【文献】国際公開第2013/186070(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-21/88
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
インターネット経由の社外アクセスのリクエストに含まれるアクセストークンおよびリフレッシュトークンを検証する処理を実行するコンピュータにより構成されたトークン検証システムであって、
インターナルクラウド環境下に置かれてアクセストークンおよびリフレッシュトークンの発行、並びにAPI(Application Programming Interface:アプリケーション・プログラミング・インターフェース)の利用の受付を行うAPI基盤システムと、
パブリッククラウド環境下に置かれて前記社外アクセスのリクエストを、前記API基盤システムに連携するリクエスト連携システムとを備え、
前記API基盤システムは、
アクセストークンおよびリフレッシュトークンを発行するトークン発行手段と、
業務処理の実行を要求する業務APIリクエストに設定された前記アクセストークン、および、前記アクセストークンの再発行を要求するアクセストークン再発行リクエストに設定された前記リフレッシュトークンの正当性を検証するトークン検証手段とを備え、
前記リクエスト連携システムは、
インターネット経由の前記社外アクセスのリクエストを受け付けるリクエスト受付サービス手段と、
このリクエスト受付サービス手段により受け付けた前記社外アクセスのリクエストが前記業務APIリクエストである場合には、前記業務APIリクエストに設定された前記アクセストークンを、イントロスペクションAPIリクエストに設定して前記トークン検証手段に送信するとともに、前記トークン検証手段からの前記アクセストークンの検証結果を含むイントロスペクションAPI応答を受信し、前記社外アクセスのリクエストが前記アクセストークン再発行リクエストである場合には、前記アクセストークン再発行リクエストに設定された前記リフレッシュトークンを、イントロスペクションAPIリクエストに設定して前記トークン検証手段に送信するとともに、前記トークン検証手段からの前記リフレッシュトークンの検証結果を含むイントロスペクションAPI応答を受信するリクエストパラメータチェック手段と、
前記リクエスト受付サービス手段により受け付けた前記社外アクセスのリクエストを、前記API基盤システムに送信する処理を実行し、この際、前記リクエストパラメータチェック手段により取得した前記検証結果が正当なトークンでない旨の情報であった場合には、前記社外アクセスのリクエストを前記API基盤システムに送信しないAPIゲートウェイとを備えた
ことを特徴とするトークン検証システム。
【請求項2】
前記リクエスト連携システムは、
インターネット経由の前記社外アクセスのリクエストの送信元のクライアントアプリケーションに対して払い出されたクライアントIDおよびクライアントシークレットを記憶するクライアントID・クライアントシークレット記憶手段を備え、
前記リクエストパラメータチェック手段は、
前記社外アクセスのリクエストが前記業務APIリクエストである場合、および前記アクセストークン再発行リクエストである場合には、前記社外アクセスのリクエストに設定されている前記クライアントIDおよび前記クライアントシークレットの組合せが、前記クライアントID・クライアントシークレット記憶手段に記憶されている前記クライアントIDおよび前記クライアントシークレットの組合せと一致するか否かにより、前記クライアントアプリケーションを認証する処理も実行する構成とされている
ことを特徴とする請求項1に記載のトークン検証システム。
【請求項3】
前記リクエスト連携システムは、
前記社外アクセスのリクエストが前記アクセストークン再発行リクエストの場合には、前記アクセストークン再発行リクエストのボディに設定されている前記リフレッシュトークンを、前記アクセストークン再発行リクエストのヘッダにコピーして設定するパラメータコピー手段を備え、
前記リクエストパラメータチェック手段は、
前記社外アクセスのリクエストが前記アクセストークン再発行リクエストである場合には、前記アクセストークン再発行リクエストのヘッダにコピーして設定された前記リフレッシュトークンを、前記イントロスペクションAPIリクエストに設定して前記トークン検証手段に送信するとともに、前記トークン検証手段からの前記リフレッシュトークンの検証結果を含む前記イントロスペクションAPI応答を受信する構成とされている
ことを特徴とする請求項2に記載のトークン検証システム。
【請求項4】
前記API基盤システムは、
前記トークン発行手段により前記アクセストークンおよび前記リフレッシュトークンを発行した際に、前記アクセストークンおよび前記リフレッシュトークンのそれぞれについての有効期限および失効フラグを、アクセストークンID若しくはアクセストークン自体およびリフレッシュトークンID若しくはリフレッシュトークン自体と関連付けて記憶するトークン情報記憶手段を備え、
前記トークン検証手段は、
前記イントロスペクションAPIリクエストに設定された前記アクセストークンについてのアクセストークンID若しくはアクセストークン自体と関連付けて前記トークン情報記憶手段に記憶されている前記有効期限および前記失効フラグを用いて、前記アクセストークンの正当性を検証するか、または、前記イントロスペクションAPIリクエストに設定された前記リフレッシュトークンについてのリフレッシュトークンID若しくはリフレッシュトークン自体と関連付けて前記トークン情報記憶手段に記憶されている前記有効期限および前記失効フラグを用いて、前記リフレッシュトークンの正当性を検証する構成とされている
ことを特徴とする請求項1に記載のトークン検証システム。
【請求項5】
請求項1~4のいずれかに記載のトークン検証システムとして、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、インターネット経由の社外アクセスのリクエストに含まれるアクセストークンおよびリフレッシュトークンを検証する処理を実行するコンピュータにより構成されたトークン検証システムおよびプログラムに係り、例えば、社外のエンドユーザが、API(Application Programming Interface:アプリケーション・プログラミング・インターフェース)を利用してインターナルクラウド環境下に置かれた業務処理システムにアクセスし、業務処理を実行する場合等に利用できる。
【背景技術】
【0002】
従来から、証券・金融システムでは、フィンテック(FinTech)企業等からのインターネット経由での通信(以下、社外アクセスという。)を受け付け、フィンテック企業等と連携した金融サービスを実現するために、証券・金融システムが保有するリソース(顧客情報や、売買取引に関するデータ等)を提供している。
【0003】
図7に示すように、フィンテック企業等と連携する従来のシステム90では、インターネット91に、社外コンシューマであるフィンテック企業等のエンドユーザが操作するクライアント端末92が接続されている。また、インターネット91には、ルータ93、DMZファイアウォール94を介して、DMZ(非武装地帯)に配置されたインターネット公開用のゲートウェイサーバ95が接続されている。
【0004】
さらに、インターネット公開用のゲートウェイサーバ95には、内部ファイアウォール96を介して、社内イントラネットや社内LAN等の内部ネットワーク97が接続されている。この内部ネットワーク97には、社内コンシューマである社内の他のシステム(図7で社外アクセスの対象となっているシステム以外のシステム)のサーバ98や、社内ユーザが操作する社内の端末99と、社内用のゲートウェイサーバ100と、社外アクセスの対象となる銀行・証券会社等の金融業務に係る業務処理システム101とが接続されている。
【0005】
このシステム90の場合、クライアン端末92からのリクエストは、インターネット91、ルータ93、DMZファイアウォール94、インターネット公開用のゲートウェイサーバ95、内部ファイアウォール96を経由して内部ネットワーク97に入り、業務処理システム101に到達する。
【0006】
一方、社内コンシューマである社内の他のシステムのサーバ98や社内の端末99からのリクエストは、内部ネットワーク97を介して社内用のゲートウェイサーバ100に至り、そこから内部ネットワーク97を介して業務処理システム101に到達する。
【0007】
従って、このような従来のシステム90は、セキュリティの観点から、社外コンシューマからの通信を処理するためにDMZ(非武装地帯)に配置したインターネット公開用のゲートウェイサーバ95と、社内コンシューマからの通信を処理するための社内用のゲートウェイサーバ100とを設けた構成となっていた。すなわち、従来は、ゲートウェイサーバを、インターネット91を経由する社外アクセス用と、内部ネットワーク97を経由するがインターネット91は経由しない社内アクセス用とに分離した構成をとっていた。
【0008】
そして、このようなDMZ(非武装地帯)の構成を採用し、サイバー攻撃を受けた場合でも不正なリクエストの内部ネットワーク97への侵入を防ぐことにより、インターナルクラウド内のシステム(内部ネットワーク97に接続された業務処理システム101)の安全性を確保していた。
【0009】
また、社外アクセスに対しては認可プロトコルにOAuth2.0を利用することにより、リクエストの正当性を担保していた。これは、例えば、IBM社のAPIコネクト(IBM APIConnect)等の標準機能を利用することにより実現することができる。
【0010】
なお、本発明では、後述するように、イントロスペクションAPIを利用するが、イントロスペクションを行い、かつ、アクセストークンやリフレッシュトークンに関する技術としては、モバイルアプリケーションのための効率的および直観的なデータ・バインディングを行う技術が知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0011】
【文献】特表2017-533503号公報(請求項4)
【発明の概要】
【発明が解決しようとする課題】
【0012】
前述したように、図7に示す従来のシステム90では、社内用のゲートウェイサーバ100とは別に、社外アクセスの受け口となるインターネット公開用のゲートウェイサーバ95をDMZ(非武装地帯)上に配備していたので、同じような構成のゲートウェイサーバ(例えば、いずれもIBM社のAPIコネクト(IBM APIConnect)等を利用して構築されたゲートウェイサーバ)が、2ヶ所に配置される状態であった。このため、システムの構築コストが高くなるという問題があった。従って、従来と同様にセキュリティを十分に確保することができ、かつ、安価に構築することができるシステムの開発が望まれていた。
【0013】
本発明の目的は、セキュリティを十分に確保することができ、かつ、安価に構築することができるトークン検証システムおよびプログラムを提供するところにある。
【課題を解決するための手段】
【0014】
本発明は、インターネット経由の社外アクセスのリクエストに含まれるアクセストークンおよびリフレッシュトークンを検証する処理を実行するコンピュータにより構成されたトークン検証システムであって、
インターナルクラウド環境下に置かれてアクセストークンおよびリフレッシュトークンの発行、並びにAPI(Application Programming Interface:アプリケーション・プログラミング・インターフェース)の利用の受付を行うAPI基盤システムと、
パブリッククラウド環境下に置かれて社外アクセスのリクエストを、API基盤システムに連携するリクエスト連携システムとを備え、
API基盤システムは、
アクセストークンおよびリフレッシュトークンを発行するトークン発行手段と、
業務処理の実行を要求する業務APIリクエストに設定されたアクセストークン、および、アクセストークンの再発行を要求するアクセストークン再発行リクエストに設定されたリフレッシュトークンの正当性を検証するトークン検証手段とを備え、
リクエスト連携システムは、
インターネット経由の社外アクセスのリクエストを受け付けるリクエスト受付サービス手段と、
このリクエスト受付サービス手段により受け付けた社外アクセスのリクエストが業務APIリクエストである場合には、業務APIリクエストに設定されたアクセストークンを、イントロスペクションAPIリクエストに設定してトークン検証手段に送信するとともに、トークン検証手段からのアクセストークンの検証結果を含むイントロスペクションAPI応答を受信し、社外アクセスのリクエストがアクセストークン再発行リクエストである場合には、アクセストークン再発行リクエストに設定されたリフレッシュトークンを、イントロスペクションAPIリクエストに設定してトークン検証手段に送信するとともに、トークン検証手段からのリフレッシュトークンの検証結果を含むイントロスペクションAPI応答を受信するリクエストパラメータチェック手段と、
リクエスト受付サービス手段により受け付けた社外アクセスのリクエストを、API基盤システムに送信する処理を実行し、この際、リクエストパラメータチェック手段により取得した検証結果が正当なトークンでない旨の情報であった場合には、社外アクセスのリクエストをAPI基盤システムに送信しないAPIゲートウェイとを備えた
ことを特徴とするものである。
【0015】
このような本発明のトークン検証システムにおいては、社外アクセスのリクエストを受け付けるリクエスト連携システムをパブリッククラウド環境に設け、このリクエスト連携システムのリクエストパラメータチェック手段から、社外アクセスのリクエスト内の検証対象のアクセストークンやリフレッシュトークンを設定したイントロスペクションAPIリクエストを、API基盤システムのトークン検証手段に送信し、トークン検証手段からのイントロスペクションAPI応答として、アクセストークンやリフレッシュトークンの正当性の検証結果を受け取るようにした。
【0016】
これにより、社外アクセスのリクエストである業務APIリクエストやアクセストークン再発行リクエストをインターナルクラウド環境内に侵入させることなく、これらの業務APIリクエストに設定されたアクセストークンの正当性の検証結果や、アクセストークン再発行リクエストに設定されたリフレッシュトークンの正当性の検証結果を、パブリッククラウド環境下に置かれたリクエスト連携システムで取得することが可能となる。
【0017】
従って、パブリッククラウド環境下で取得することができたアクセストークンやリフレッシュトークンの検証結果が、正当なトークンでない旨の情報であった場合には、リクエスト連携システムのAPIゲートウェイにより、それらの正当でないアクセストークンやリフレッシュトークンが設定されていた業務APIリクエストやアクセストークン再発行リクエスト、すなわち、セキュリティ上、問題のある社外アクセスのリクエストを、インターナルクラウド環境下に置かれたAPI基盤システムに送信しないようにすることができる。
【0018】
すなわち、本発明では、API基盤システムのトークン発行手段によりアクセストークンおよびリフレッシュトークンを発行するので、トークン発行主体は、インターナルクラウド環境下に置かれたAPI基盤システムである。そして、発行されたトークンの検証は、トークン発行主体でしか行うことができないので、API基盤システムでトークンの検証を行うことになり、API基盤システムにトークン検証手段が設けられている。しかし、インターナルクラウド環境下に置かれたAPI基盤システムでアクセストークンやリフレッシュトークンの正当性の検証を行うとなると、セキュリティ上の問題を含んでいる可能性がある社外アクセスのリクエストである業務APIリクエストやアクセストークン再発行リクエストを、インターナルクラウド環境内に侵入させることになってしまう。そこで、本発明では、イントロスペクションAPIを利用し、パブリッククラウド環境下に置かれたリクエスト連携システムから、インターナルクラウド環境下に置かれたAPI基盤システムのトークン検証手段に対し、社外アクセスのリクエスト自体ではなく、そのリクエストに設定された検証対象のトークンを送信することによりトークンの検証結果を取得し、その検証結果が、正当なトークンでない旨の情報であった場合に、そのリクエスト自体をAPI基盤システムに送信(連携)しないようにしている。このため、セキュリティ上の問題を含んでいる社外アクセスのリクエスト自体が、インターナルクラウド環境内に侵入することを防ぐことができるので、セキュリティを十分に確保することが可能となっている。
【0019】
また、本発明では、パブリッククラウド環境下に置かれたリクエスト連携システムから、イントロスペクションAPIを利用することにより、インターナルクラウド環境下で行われたトークン検証の結果を取得するので、前述した図7に示した従来のシステム90のような同様の構成のゲートウェイサーバを、社外アクセス用および社内アクセス用として2ヶ所に配置することを回避することができる。このため、システムの構築コストを低減することが可能となり、これらにより前記目的が達成される。
【0020】
<リクエスト連携システムに設けられたクライアントID・クライアントシークレット記憶手段の情報により、クライアントアプリケーションの認証を行う構成>
【0021】
また、前述したトークン検証システムにおいて、
リクエスト連携システムは、
インターネット経由の社外アクセスのリクエストの送信元のクライアントアプリケーションに対して払い出されたクライアントIDおよびクライアントシークレットを記憶するクライアントID・クライアントシークレット記憶手段を備え、
リクエストパラメータチェック手段は、
社外アクセスのリクエストが業務APIリクエストである場合、およびアクセストークン再発行リクエストである場合には、社外アクセスのリクエストに設定されているクライアントIDおよびクライアントシークレットの組合せが、クライアントID・クライアントシークレット記憶手段に記憶されているクライアントIDおよびクライアントシークレットの組合せと一致するか否かにより、クライアントアプリケーションを認証する処理も実行する構成とされていることが望ましい。
【0022】
このようにリクエスト連携システムに設けられたクライアントID・クライアントシークレット記憶手段の情報により、クライアントアプリケーションの認証(そのクライアントアプリケーションから送信されてくるリクエストの認証と考えてもよい。)を行う構成とした場合には、パブリッククラウド環境下に置かれたリクエスト連携システムで、クライアントアプリケーションの認証を行うこともでき、より一層、セキュリティの向上が図られる。
【0023】
<リクエスト連携システムにパラメータコピー手段を設けた構成>
【0024】
さらに、上述したリクエスト連携システムに設けられたクライアントID・クライアントシークレット記憶手段の情報により、クライアントアプリケーションの認証を行う構成とした場合において、
リクエスト連携システムは、
社外アクセスのリクエストがアクセストークン再発行リクエストの場合には、アクセストークン再発行リクエストのボディに設定されているリフレッシュトークンを、アクセストークン再発行リクエストのヘッダにコピーして設定するパラメータコピー手段を備え、
リクエストパラメータチェック手段は、
社外アクセスのリクエストがアクセストークン再発行リクエストである場合には、アクセストークン再発行リクエストのヘッダにコピーして設定されたリフレッシュトークンを、イントロスペクションAPIリクエストに設定してトークン検証手段に送信するとともに、トークン検証手段からのリフレッシュトークンの検証結果を含むイントロスペクションAPI応答を受信する構成とされていることが望ましい。
【0025】
このようにリクエスト連携システムにパラメータコピー手段を設けた構成とした場合には、リクエストパラメータチェック手段によりアクセストークン再発行リクエストのボディに設定されているリフレッシュトークンを読み込むことができない状況であっても、パラメータコピー手段により、アクセストークン再発行リクエストのボディに設定されているリフレッシュトークンが、ヘッダにコピーして設定されるので、リクエストパラメータチェック手段によりリフレッシュトークンを読み込むことができるようになり、イントロスペクションAPIリクエストへのリフレッシュトークンの設定が可能となる。
【0026】
<トークン検証手段により有効期限および失効フラグを用いてアクセストークンまたはリフレッシュトークンの正当性を検証する構成>
【0027】
また、前述したトークン検証システムにおいて、
API基盤システムは、
トークン発行手段によりアクセストークンおよびリフレッシュトークンを発行した際に、アクセストークンおよびリフレッシュトークンのそれぞれについての有効期限および失効フラグを、アクセストークンID若しくはアクセストークン自体およびリフレッシュトークンID若しくはリフレッシュトークン自体と関連付けて記憶するトークン情報記憶手段を備え、
トークン検証手段は、
イントロスペクションAPIリクエストに設定されたアクセストークンについてのアクセストークンID若しくはアクセストークン自体と関連付けてトークン情報記憶手段に記憶されている有効期限および失効フラグを用いて、アクセストークンの正当性を検証するか、または、イントロスペクションAPIリクエストに設定されたリフレッシュトークンについてのリフレッシュトークンID若しくはリフレッシュトークン自体と関連付けてトークン情報記憶手段に記憶されている有効期限および失効フラグを用いて、リフレッシュトークンの正当性を検証する構成を採用することができる。
【0028】
このようにトークン検証手段により有効期限および失効フラグを用いてアクセストークンまたはリフレッシュトークンの正当性を検証する構成とした場合には、トークン発行手段によるアクセストークンおよびリフレッシュトークンの発行時の情報を用いて、インターナルクラウド環境下でそれぞれのトークンの正当性を確実に検証することが可能となる。
【0029】
<プログラムの発明>
【0030】
そして、本発明のプログラムは、以上に述べたトークン検証システムとして、コンピュータを機能させるためのものである。
【0031】
なお、上記のプログラムまたはその一部は、例えば、光磁気ディスク(MO)、コンパクトディスク(CD)、デジタル・バーサタイル・ディスク(DVD)、フレキシブルディスク(FD)、磁気テープ、読出し専用メモリ(ROM)、電気的消去および書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、フラッシュディスク等の記録媒体に記録して保存や流通等させることが可能であるとともに、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等の有線ネットワーク、あるいは無線通信ネットワーク、さらにはこれらの組合せ等の伝送媒体を用いて伝送することが可能であり、また、搬送波に載せて搬送することも可能である。さらに、上記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。
【発明の効果】
【0032】
以上に述べたように本発明によれば、パブリッククラウド環境下に置かれたリクエスト連携システムから、イントロスペクションAPIを利用することにより、インターナルクラウド環境下で行われたトークン検証の結果を取得するので、セキュリティを十分に確保することができ、かつ、トークン検証システムを安価に構築することができるという効果がある。
【図面の簡単な説明】
【0033】
図1】本発明の一実施形態のトークン検証システムの全体構成図。
図2】前記実施形態のOAuth認証・認可リクエストからAPI応答結果受信までの処理の流れ(その1)を示すフローチャートの図。
図3】前記実施形態のOAuth認証・認可リクエストからAPI応答結果受信までの処理の流れ(その2)を示すフローチャートの図。
図4】前記実施形態のリフレッシュトークンによるアクセストークンの再発行処理の流れを示すフローチャートの図。
図5】前記実施形態の要部であるパブリッククラウド環境下でのリクエスト連携システムによる処理の流れを示すフローチャートの図。
図6】前記実施形態の別の要部であるインターナルクラウド環境下でのAPI基盤システムによるトークンの発行および検証処理の説明図。
図7】従来のシステム構成図。
【発明を実施するための形態】
【0034】
以下に本発明の一実施形態について図面を参照して説明する。図1には、本実施形態のトークン検証システム10の全体構成が示されている。図2図4には、トークン検証システム10によるトークンの検証処理を含む業務APIの実行時の流れがフローチャートで示されている。また、図5には、トークン検証システム10による処理の要部として、パブリッククラウド環境下でのリクエスト連携システム20による処理の流れがフローチャートで示されている。さらに、図6には、トークン検証システム10による処理の別の要部として、インターナルクラウド環境下でのAPI基盤システム30のゲートウェイサーバ40によるトークンの発行および検証処理の詳細説明が示されている。
【0035】
<トークン検証システム10の全体構成>
【0036】
図1において、トークン検証システム10は、インターネット1に接続されたパブリッククラウド環境下に置かれたリクエスト連携システム20と、このリクエスト連携システム20と専用線2で接続されるとともに内部ネットワーク3に接続されてインターナルクラウド環境下に置かれたAPI基盤システム30と、このAPI基盤システム30と内部ネットワーク3で接続されてインターナルクラウド環境下に置かれたバックエンドシステム60とを備えて構成されている。また、内部ネットワーク3には、社内コンシューマ70(ここでは、コンシューマを装置として捉えている。)が接続されている。さらに、インターネット1には、社外のエンドユーザ(例えば、フィンテック(FinTech)企業の担当者)が操作するクライアント端末80が接続されている。
【0037】
ここで、専用線2としては、例えば、アマゾン社(Amazon)のAWS(Amazon Web Services:アマゾン・ウェブ・サービス)であるダイレクト接続サービス(AWS Direct Connect)で提供される専用線等を採用することができる。
【0038】
また、内部ネットワーク3は、例えば、社内イントラネットや社内LAN等であり、有線であるか無線であるか、さらには有線および無線の混在型であるかは問わず、要するに、複数地点(距離の長短は問わない。)間で、ある程度の速度をもって情報を伝送することができるものであればよい。この内部ネットワーク3に接続された各装置は、インターナルクラウド環境下に置かれていることになる。
【0039】
リクエスト連携システム20は、インターネット1に接続されたパブリッククラウド環境下に置かれ、社外アクセスのリクエスト(社外のエンドユーザが操作するクライアント端末80からインターネット1を介して送信されてくるリクエスト)を、専用線2を介してAPI基盤システム30に連携(送信)するものであり、1台または複数台のコンピュータにより構成され、リクエスト受付サービス手段21と、パラメータコピー手段22と、APIゲートウェイ23と、リクエストパラメータチェック手段24と、クライアントID・クライアントシークレット記憶手段25とを含んで構成されている。また、このリクエスト連携システム20とインターネット1との間には、WEBアプリケーションファイアウォール26が設けられている。なお、本実施形態では、リクエスト連携システム20には、アマゾン社(Amazon)のアマゾンAPIゲートウェイ(Amazon APIGateway)を採用し、従って、パブリッククラウド環境は、アマゾン社(Amazon)のAWSクラウド(AWS Cloud)により構築されているが、これに限定されるものではない。
【0040】
ここで、リクエスト受付サービス手段21、パラメータコピー手段22、APIゲートウェイ23、リクエストパラメータチェック手段24は、リクエスト連携システム20を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段21~24の詳細は後述する。
【0041】
また、クライアントID・クライアントシークレット記憶手段25としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。このクライアントID・クライアントシークレット記憶手段25の詳細は後述する。
【0042】
API基盤システム30は、内部ネットワーク3に接続されたインターナルクラウド環境下に置かれ、APIの利用の受付および管理を行うものであり、1台または複数台のコンピュータにより構成され、ゲートウェイサーバ40と、API管理サーバ50とを備えている。これらのゲートウェイサーバ40と、API管理サーバ50とが、それぞれ何台のコンピュータにより構成されるか、あるいは同じ1台のコンピュータで構成されるかは任意である。なお、本実施形態では、API基盤システム30には、IBM社のAPIコネクト(IBM API Connect)を採用しているが、これに限定されるものではない。
【0043】
ゲートウェイサーバ40は、APIリクエストの受付処理を実行するものであり、認証システム誘導手段41と、認可コード発行手段42と、トークン発行手段43と、トークン検証手段44と、各種の業務API定義実行手段45と、API事後処理手段46と、トークン情報記憶手段47と、暗号鍵記憶手段48とを含んで構成されている。
【0044】
ここで、認証システム誘導手段41、認可コード発行手段42、トークン発行手段43、トークン検証手段44、業務API定義実行手段45、API事後処理手段46は、ゲートウェイサーバ40を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段41~46の詳細は後述する。
【0045】
また、トークン情報記憶手段47、暗号鍵記憶手段48としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。これらの記憶手段47,48の詳細は後述する。
【0046】
API管理サーバ50は、APIの実行に必要なデータの管理処理を実行するものであり、API利用カタログ記憶手段51を含んで構成されている。このAPI利用カタログ記憶手段51としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。このAPI利用カタログ記憶手段51の詳細は後述する。
【0047】
バックエンドシステム60は、社外のエンドユーザの認証およびそのリクエスト内容の認可を行うユーザ認証システム61と、API実行者(API利用対象者のうちの実際にAPIを利用した者であり、人間だけではなく、システムも含む。)によるAPIリクエストに応じて各種の業務処理を実行する各種の業務処理システム62とを備えて構成されている。
【0048】
ユーザ認証システム61は、1台または複数台のコンピュータにより構成され、ユーザ認証手段61Aと、認可手段61Bとを含んで構成されている。これらのユーザ認証手段61A、認可手段61Bは、ユーザ認証システム61を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段61A,61Bの詳細は後述する。
【0049】
業務処理システム62は、1台または複数台のコンピュータにより構成され、各種の業務についてのバックエンド業務処理(例えば、顧客情報の参照対応、金融商品等に係る顧客の売買取引データの登録、更新、削除等)を実行する各種の業務処理手段62Aを含んで構成されている。これらの業務処理手段62Aは、業務処理システム62を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの業務処理手段62Aの詳細は後述する。
【0050】
なお、業務処理システム62は、図示は省略されているが、各種の業務処理手段62Aにより各種のバックエンド業務処理を実行するのに必要な各種のデータ(例えば、顧客情報、売買取引に関するデータなど)を記憶する業務処理用データ記憶手段を備えている。
【0051】
社内コンシューマ70は、本実施形態では、人間ではなく、1台または複数台のコンピュータにより構成された装置として記載され、社内の他のシステムのサーバや、社内ユーザが操作する社内の端末である。なお、ここでいう社内の他のシステムも、社外アクセスのリクエストに応じてバックエンド業務処理を行う業務処理システム62になり得るため、バックエンドシステム60に含めてもよいものであるが、説明の便宜上、社外からではなく、社内から業務APIリクエストを送信する側のシステムとして、バックエンドシステム60に含めずに記載している。また、本発明は、社外アクセスのリクエストを処理するものであり、社内コンシューマ70による社内アクセスのリクエストの処理は関係ないので、社内コンシューマ70は、2点鎖線で記載されている。社内アクセスのリクエストの処理については、前述した図7に示した従来のシステム90の場合と同じであることを示すために記載したものである。
【0052】
クライアント端末80は、コンピュータにより構成され、社外のエンドユーザの操作に基づき、リクエスト連携システム20に対し、インターネット1を介して各種のリクエストを送信するクライアントアプリケーションにより実現される処理手段81を備えている。このクライアントアプリケーションは、少なくともリクエスト送信時には、リクエスト連携システム20から払い出されたクライアントIDおよびクライアントシークレットを保持している。保持の形態は、社外のエンドユーザの入力操作を受け付け、入力されたクライアントIDおよびクライアントシークレットを、クライアント端末80に設けられたクライアントID・クライアントシークレットローカル記憶手段(図示されない不揮発性メモリにより構成される。)に記憶しておく形態でもよく、毎回、社外のエンドユーザの入力操作を受け付ける形態でもよく、クライアントアプリケーションのプログラム内に記述(コーディング)しておく形態でもよい。
【0053】
ここで、処理手段81は、クライアント端末80に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラムであるクライアントアプリケーションやこのクライアントアプリケーションによりインポートされる各種のライブラリ、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。この処理手段81の詳細は後述する。
【0054】
<リクエスト連携システム20/リクエスト受付サービス手段21の構成>
【0055】
リクエスト受付サービス手段21は、社外のエンドユーザが操作するクライアント端末80からインターネット1を介して送信されてきてWEBアプリケーションファイアウォール26を通過した社外アクセスのリクエストを受け付け、受け付けたリクエストの種別を判定し、判定したリクエストの種別に応じ、後続の各処理への移行のための分岐処理を実行するものである。なお、本実施形態では、リクエスト受付サービス手段21には、一例として、アマゾン社(Amazon)のクラウドフロント(Cloud Front)を採用している。
【0056】
具体的には、リクエスト受付サービス手段21によるリクエストの種別の判定では、後述する図5に示すように、受け付けたリクエストが、認証・認可リクエスト(後述する図2のステップS3の場合)、または認可コード発行リクエスト(後述する図2のステップS13の場合)であるかを判定する。これらの判定は、リクエストのURLパスを用いて行われ、本実施形態では、一例として、パスが</oauth2/authorize>の場合には、認証・認可リクエストまたは認可コード発行リクエストであると判定し、さらに、リクエストに、確認IDおよび確認コードがない場合には、認証・認可リクエスト(図2のステップS3の場合)であると判定し、後述する図2のステップS4の処理に移行し、確認IDおよび確認コードがある場合には、認可コード発行リクエスト(図2のステップS13の場合)であると判定し、後述する図2のステップS14の処理に移行する。
【0057】
また、リクエスト受付サービス手段21は、図5に示すように、受け付けたリクエストが、トークン発行リクエストのうちのアクセストークン発行リクエスト(図3のステップS18の場合)であるかを判定する。この判定は、リクエストのURLパスおよびリクエストのボディのグラントタイプを用いて行われ、本実施形態では、一例として、パスが</oauth2/token>であり、かつ、ボディのグラントタイプがauthorization_codeである場合には、アクセストークン発行リクエストであると判定し、後述する図3のステップS19の処理に移行する。
【0058】
さらに、リクエスト受付サービス手段21は、図5に示すように、受け付けたリクエストが、トークン発行リクエストのうちのリフレッシュトークンによるアクセストークン再発行リクエスト(後述する図4のステップS51の場合)であるかを判定する。この判定は、リクエストのURLパスおよびリクエストのボディのグラントタイプを用いて行われ、本実施形態では、一例として、パスが</oauth2/token>であり、かつ、ボディのグラントタイプがrefresh_tokenである場合には、リフレッシュトークンによるアクセストークン再発行リクエストであると判定し、後述する図4のステップS52の処理に移行する。
【0059】
また、リクエスト受付サービス手段21は、図5に示すように、受け付けたリクエストが、業務APIリクエスト(後述する図3のステップS24、または図4のステップS58の場合)であるかをURLパスで判定する。業務APIリクエストと判定した場合は、後述する図3のステップS25、または図4のステップS59の処理に移行する。
【0060】
<リクエスト連携システム20/パラメータコピー手段22の構成>
【0061】
パラメータコピー手段22は、図5に示すように、リクエスト受付サービス手段21により受け付けた社外アクセスのリクエストが、アクセストークン発行リクエストである場合(図3のステップS18の場合)には、リクエストのボディに設定されているクライアントIDおよびクライアントシークレットを、リクエストのヘッダにコピーして設定する処理(後述する図3のステップS19の処理)を実行し、リフレッシュトークンによるアクセストークン再発行リクエストである場合(後述する図4のステップS51の場合)には、リクエストのボディに設定されているリフレッシュトークン、クライアントIDおよびクライアントシークレットを、リクエストのヘッダにコピーして設定する処理(後述する図4のステップS52の処理)を実行するものである。いずれの処理も、リクエスト受付サービス手段21による依頼(指示)を受けて実行し、コピー処理後のトークンをリクエスト受付サービス手段21に返す。なお、本実施形態では、パラメータコピー手段22には、一例として、アマゾン社(Amazon)のラムダエッジ(Lambda@Edge)を採用している。
【0062】
このパラメータコピー手段22による処理を行うのは、リクエストパラメータチェック手段24によりクライアントIDおよびクライアントシークレットを用いてクライアントアプリケーションの認証を行う際(後述する図3のステップS20および図4のステップS53の処理を行う際)に、リクエストのボディに設定されているクライアントIDおよびクライアントシークレットを取得できない場合があり、また、リクエストパラメータチェック手段24によりリフレッシュトークンの正当性の検証を行う際(後述する図4のステップS54の処理を行う際)に、リクエストのボディに設定されているリフレッシュトークンを取得できない場合があるからである。例えば、リクエストパラメータチェック手段24として、アマゾン社(Amazon)のラムダオーソライザ(Lambda Authorizer)を採用すると、リクエストのボディの値を取得することができない。
【0063】
なお、上記でコピーの対象とされている情報を、最初からヘッダに設定せずに、ボディに設定しているのは、セキュリティを確保するためである。すなわち、ボディは暗号化されているので、たとえ盗用されても中身の内容を確認することはできないため、外部への漏洩を避けたいパラメータは、一般的にボディに設定するからである。
【0064】
<リクエスト連携システム20/APIゲートウェイ23の構成>
【0065】
APIゲートウェイ23は、リクエスト受付サービス手段21により受け付けた社外アクセスのリクエストを、専用線2を介してAPI基盤システム30に送信する処理を実行するものである。
【0066】
この際、APIゲートウェイ23は、リクエストパラメータチェック手段24に対し、社外アクセスのリクエストの送信元のクライアント端末80に搭載されたクライアントアプリケーションの認証を依頼し、リクエストパラメータチェック手段24による認証結果が失敗であった場合には、その社外アクセスのリクエストをAPI基盤システム30に送信せずに、認証エラーが発生した旨を、インターネット1を介してクライアント端末80に送信する。
【0067】
また、APIゲートウェイ23は、社外アクセスのリクエストにアクセストークンまたはリクエストトークンが含まれている場合(図5に示すように、社外アクセスのリクエストが、業務APIリクエストである場合(後述する図3のステップS24、または図4のステップS58の場合)、および、リフレッシュトークンによるアクセストークン再発行リクエストである場合(後述する図4のステップS51の場合))には、リクエストパラメータチェック手段24に対し、その旨を伝達してイントロスペクションAPIを利用したトークン検証を依頼し、リクエストパラメータチェック手段24によりイントロスペクションAPI応答として得られた各トークンの検証結果が正当なトークンでない旨の情報であった場合には、そのトークンを含む社外アクセスのリクエストをAPI基盤システム30に送信せずに、認証エラーが発生した旨を、インターネット1を介してクライアント端末80に送信する。
【0068】
従って、リクエストの送信元のクライアントアプリケーションの認証に失敗した場合や、イントロスペクションAPI応答として得られた各トークンの正当性の検証結果が正当なトークンでないという結果であった場合には、インターナルクラウド内への社外アクセスのリクエストの侵入を防止できるようになっている。なお、本実施形態では、APIゲートウェイ23には、一例として、アマゾン社(Amazon)のAPIゲートウェイ(APIGateway)を採用している。
【0069】
<リクエスト連携システム20/リクエストパラメータチェック手段24の構成>
【0070】
リクエストパラメータチェック手段24は、APIゲートウェイ23からクライアントアプリケーションの認証依頼を受け、クライアントID・クライアントシークレット記憶手段25に記憶されている情報を用いて、社外アクセスのリクエストの送信元のクライアント端末80に搭載されたクライアントアプリケーションを認証し(そのクライアントアプリケーションから送信されてくるリクエストを認証すると考えてもよい。)、その認証結果(認証に成功したか、失敗したかの別を示す情報)を、APIゲートウェイ23に返信する処理を実行するものであり、具体的には、以下の処理を実行する。
【0071】
すなわち、リクエストパラメータチェック手段24は、リクエスト受付サービス手段21により受け付けた社外アクセスのリクエストが認証・認可リクエストの場合、および認可コード発行リクエストの場合(図5に示すように、後述する図3のステップS3,S13の場合)には、リクエストのクエリに設定されているクライアントIDが、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDの中に存在していることをチェックする処理を実行する。存在していれば、認証成功であり、存在していなければ、認証失敗である。なお、クエリの情報を用いるので、クライアントシークレットは認証に使用しない。
【0072】
また、リクエストパラメータチェック手段24は、社外アクセスのリクエストがアクセストークン発行リクエストの場合(後述する図3のステップS18の場合)、および、リフレッシュトークンによるアクセストークン再発行リクエストである場合(後述する図4のステップS51の場合)には、リクエストのヘッダに設定されているクライアントIDおよびクライアントシークレットの組合せ(事前にパラメータコピー手段22によりリクエストのボディからヘッダにコピーして設定した組合せ)が、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDおよびクライアントシークレットの組合せと一致するか否かにより、クライアントアプリケーションを認証する処理を実行する。一致していれば、認証成功であり、一致していなければ、認証失敗である。
【0073】
さらに、リクエストパラメータチェック手段24は、社外アクセスのリクエストが業務APIリクエストである場合(後述する図3のステップS24、または図4のステップS58の場合)には、社外アクセスのリクエストのヘッダに設定されているクライアントIDおよびクライアントシークレットの組合せが、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDおよびクライアントシークレットの組合せと一致するか否かにより、クライアントアプリケーションを認証する処理を実行する。一致していれば、認証成功であり、一致していなければ、認証失敗である。
【0074】
そして、リクエストパラメータチェック手段24は、以上のクライアントアプリケーションの認証処理に加え、APIゲートウェイ23からイントロスペクションAPIを利用したトークンの検証依頼を受け、イントロスペクションAPIを利用して得られたトークンの検証結果(検証対象のトークンが正当なものであるか否かの判断結果)を、APIゲートウェイ23に返信する処理を実行するものであり、具体的には、以下の処理を実行する。
【0075】
すなわち、リクエストパラメータチェック手段24は、リクエスト受付サービス手段21により受け付けた社外アクセスのリクエストが業務APIリクエストである場合(図5に示すように、後述する図3のステップS24、または図4のステップS58の場合)には、業務APIリクエストのヘッダに設定されたアクセストークンを、イントロスペクションAPIリクエストのボディに設定して専用線2を介してゲートウェイサーバ40のトークン検証手段44に送信するとともに、トークン検証手段44から専用線2を介して送信されてくるアクセストークンの検証結果を含むイントロスペクションAPI応答を受信する処理を実行する。この際、イントロスペクションAPIリクエストのボディには、検証対象のアクセストークンの他に、クライアントIDおよびクライアントシークレットも設定される。
【0076】
また、リクエストパラメータチェック手段24は、社外アクセスのリクエストがリフレッシュトークンによるアクセストークン再発行リクエストである場合(図5に示すように、後述する図4のステップS51の場合)には、アクセストークン再発行リクエストのヘッダに設定されたリフレッシュトークン(パラメータコピー手段22によりボディからヘッダにコピーして設定したもの)を、イントロスペクションAPIリクエストのボディに設定して専用線2を介してトークン検証手段44に送信するとともに、トークン検証手段44から専用線2を介して送信されてくるリフレッシュトークンの検証結果を含むイントロスペクションAPI応答を受信する処理を実行する。この際、イントロスペクションAPIリクエストのボディには、検証対象のリフレッシュトークンの他に、クライアントIDおよびクライアントシークレット(パラメータコピー手段22によりボディからヘッダにコピーして設定したもの)も設定される。
【0077】
なお、社外アクセスのリクエストがアクセストークン発行リクエストである場合(図5に示すように、後述する図3のステップS18の場合)には、検証対象のトークンが存在しないので、イントロスペクションAPIの利用はない。認証・認可リクエストの場合、および認可コード発行リクエストの場合(図5に示すように、後述する図3のステップS3,S13の場合)も、検証対象のトークンが存在しないので、イントロスペクションAPIの利用はない。
【0078】
また、本実施形態では、リクエストパラメータチェック手段24には、一例として、アマゾン社(Amazon)のラムダオーソライザ(Lambda Authorizer)を採用している。
【0079】
<リクエスト連携システム20/クライアントID・クライアントシークレット記憶手段25の構成>
【0080】
クライアントID・クライアントシークレット記憶手段25は、クライアント端末80に搭載されたクライアントアプリケーションに対し、リクエスト連携システム20により払い出されたクライアントIDおよびクライアントシークレットの組合せを記憶するものである。
【0081】
<API基盤システム30/ゲートウェイサーバ40/認証システム誘導手段41の構成>
【0082】
認証システム誘導手段41は、リクエスト連携システム20のAPIゲートウェイ23から専用線2を介して送信されてくるOauth2.0仕様の認証・認可リクエスト(クエリにクライアントIDを含む。)を受信した場合(リクエスト連携システム20におけるリクエストの種別に応じた処理の分岐は、図5参照)に、ユーザ認証システム61に対し、内部ネットワーク3を介してOauth2.0仕様の認証・認可を依頼する処理(後述する図2のステップS5の処理)を実行するものである。
【0083】
<API基盤システム30/ゲートウェイサーバ40/認可コード発行手段42の構成>
【0084】
認可コード発行手段42は、リクエスト連携システム20のAPIゲートウェイ23から専用線2を介して送信されてくる認可コード発行リクエスト(クエリにクライアントID、確認ID、確認コードを含む。)を受信した場合(リクエスト連携システム20におけるリクエストの種別に応じた処理の分岐は、図5参照)に、認可コードを発行し、発行した認可コードを、専用線2、APIゲートウェイ23、およびインターネット1を介してクライアント端末80に送信する処理(後述する図2のステップS15の処理)を実行するものである。
【0085】
<API基盤システム30/ゲートウェイサーバ40/トークン発行手段43の構成>
【0086】
トークン発行手段43は、リクエスト連携システム20のAPIゲートウェイ23から専用線2を介して送信されてくるアクセストークン発行リクエスト(認可コード、クライアントID、クライアントシークレットを含む。)を受信した場合(リクエスト連携システム20におけるリクエストの種別に応じた処理の分岐は、図5参照)に、アクセストークンおよびリフレッシュトークンを発行し、発行したアクセストークンおよびリフレッシュトークンを暗号鍵記憶手段48に記憶された暗号鍵を用いて暗号化してから、専用線2、APIゲートウェイ23、およびインターネット1を介してクライアント端末80に送信する処理(後述する図3のステップS21の処理)を実行するものである。
【0087】
この際、トークン発行手段43は、図6に示すように、発行したアクセストークンについての発行日時、有効期限、失効フラグ(発行時には、失効フラグは立っていない、すなわち有効になっている。)を、アクセストークンID(例えば、アクセストークンのハッシュ値)またはアクセストークン自体と関連付けてトークン情報記憶手段47に記憶させるとともに、発行したリフレッシュトークンについての発行日時、有効期限、失効フラグ(発行時には、失効フラグは立っていない、すなわち有効になっている。)を、リフレッシュトークンID(例えば、リフレッシュトークンのハッシュ値)またはリフレッシュトークン自体と関連付けてトークン情報記憶手段47に記憶させる。
【0088】
<API基盤システム30/ゲートウェイサーバ40/トークン検証手段44の構成>
【0089】
トークン検証手段44は、図6に示すように、リクエスト連携システム20のリクエストパラメータチェック手段24から専用線2(図1参照)を介して送信されてくるイントロスペクションAPIリクエストを受信した場合に、このイントロスペクションAPIリクエストに設定されている検証対象のトークン(アクセストークンまたはリフレッシュトークン)の正当性を検証し、その検証結果(トークンが正当なものである否かの判断結果)を含むイントロスペクションAPI応答を、専用線2を介してリクエストパラメータチェック手段24に送信(返信)する処理を実行するものである。
【0090】
より詳細には、トークン検証手段44は、リクエストパラメータチェック手段24からのイントロスペクションAPIリクエストに、業務処理の実行を要求する業務APIリクエストに設定されていたアクセストークンが含まれている場合(リクエスト連携システム20におけるリクエストの種別に応じた処理の分岐は、図5参照)には、そのアクセストークンを暗号鍵記憶手段48に記憶された暗号鍵を用いて復号してから、復号した状態のアクセストークンについてのアクセストークンID(例えば、アクセストークンのハッシュ値)またはアクセストークン自体に関連付けられてトークン情報記憶手段47に記憶されている有効期限および失効フラグを用いて、そのアクセストークンの正当性を検証する処理(後述する図3のステップS26、図4のステップS60の処理)を実行する。
【0091】
また、トークン検証手段44は、リクエストパラメータチェック手段24からのイントロスペクションAPIリクエストに、アクセストークン再発行リクエストに設定されたリフレッシュトークンが含まれている場合(図5参照)には、そのリフレッシュトークンを暗号鍵記憶手段48に記憶された暗号鍵を用いて復号してから、復号した状態のリフレッシュトークンについてのリフレッシュトークンID(例えば、リフレッシュトークンのハッシュ値)またはリフレッシュトークン自体に関連付けられてトークン情報記憶手段47に記憶されている有効期限および失効フラグを用いて、そのリフレッシュトークンの正当性を検証する処理(後述する図4のステップS54の処理)を実行する。
【0092】
この際、検証対象のトークン(アクセストークンまたはリフレッシュトークン)の正当性は、それぞれのトークンの有効期限内であるか否か、それぞれのトークンの失効フラグが立っていないか否かにより判断される。すなわち、有効期限内であり、かつ、失効フラグが立っていなければ(失効していなければ)、正当なトークンであると判断される。一方、有効期限を過ぎているか、または、失効フラグが立っていれば、正当なトークンでないと判断される。さらに、検証対象のトークンを、暗号鍵記憶手段48に記憶された暗号鍵を用いて復号することができた時点で、検証対象のトークンが、正当な発行者(トークン発行手段43、すなわち正しいOAuthプロバイダ)により発行されたものであることをチェックすることができる。トークン発行手段43によるトークンの発行の際に使用された暗号鍵と一致していることがわかるからである。
【0093】
<API基盤システム30/ゲートウェイサーバ40/業務API定義実行手段45の構成>
【0094】
業務API定義実行手段45は、リクエスト連携システム20のAPIゲートウェイ23から専用線2を介して送信されてくる業務APIリクエストを受信した場合(図5参照)に、その業務APIリクエストの内容に応じて、API管理サーバ50のAPI利用カタログ記憶手段51から、内部ネットワーク3を介してAPI実行者(ここではクライアント端末80を操作する社外のエンドユーザ)が要求している業務についての業務API定義データ(ヤムルファイル)を取得し、取得した業務API定義データ(定義された複数の処理の中に、業務処理の呼出が含まれている。)に従って、内部ネットワーク3を介してAPI実行者の要求に係る業務処理システム62の業務処理手段62Aの呼出処理(業務処理手段62Aへの業務処理の実行の依頼のための更なるAPIリクエストの送信処理)を実行するものである。
【0095】
なお、本発明は、インターネット1を経由する社外アクセスのリクエストを取り扱うものであるから、インターネット1を経由しない社内コンシューマ70によるリクエストは、本発明の内容ではないが、業務API定義実行手段45は、図1中の2点鎖線で示すように、社内コンシューマ70からの業務APIリクエストも内部ネットワーク3を介して受信し、社外アクセスのリクエストの場合と同様な処理を実行する。
【0096】
<API基盤システム30/ゲートウェイサーバ40/API事後処理手段46の構成>
【0097】
API事後処理手段46は、業務処理システム62の業務処理手段62Aから内部ネットワーク3を介して送信されてくる業務処理の結果として得られた情報(例えば、顧客情報等)を受信し、受信した情報を、専用線2、APIゲートウェイ23、およびインターネット1を介してクライアント端末80に送信する処理を実行するものである。
【0098】
従って、業務APIリクエストが、インターネット1を経由する社外アクセスのリクエストの場合には、業務API定義実行手段45がその業務APIリクエストを受信してAPI管理サーバ50から業務API定義データを取得し、その業務API定義データに従って業務API定義実行手段45から内部ネットワーク3を介して業務処理手段62Aに更なるAPIリクエストが送信され、業務処理手段62Aが業務データベース(不図示)を用いて業務処理を実行し、その後、その業務処理の結果が、業務処理手段62Aから内部ネットワーク3を介してAPI事後処理手段46に送信され、更にAPI事後処理手段46からクライアント端末80に送信されるようになっている。
【0099】
なお、API事後処理手段46は、図1中の2点鎖線で示すように、社内コンシューマ70からの業務APIリクエストの場合には、業務処理システム62の業務処理手段62Aから内部ネットワーク3を介して送信されてくる業務処理の結果として得られた情報(例えば、顧客情報等)を受信し、受信した情報を、内部ネットワーク3を介して社内コンシューマ70に送信する。
【0100】
従って、業務APIリクエストが、インターネット1を経由しない社内コンシューマ70によるリクエストの場合には、図1中の2点鎖線に示すように、業務API定義実行手段45がその業務APIリクエストを受信してAPI管理サーバ50から業務API定義データを取得し、その業務API定義データに従って業務API定義実行手段45から内部ネットワーク3を介して業務処理手段62Aに更なるAPIリクエストが送信され、業務処理手段62Aが業務データベース(不図示)を用いて業務処理を実行し、その後、その業務処理の結果が、業務処理手段62Aから内部ネットワーク3を介してAPI事後処理手段46に送信され、更にAPI事後処理手段46から社内コンシューマ70に送信されるようになっている。
【0101】
<API基盤システム30/ゲートウェイサーバ40/トークン情報記憶手段47の構成>
【0102】
トークン情報記憶手段47は、図6に示すように、トークン発行手段43により発行されたアクセストークンについての発行日時、有効期限、失効フラグを、アクセストークンID(例えば、アクセストークンのハッシュ値)またはアクセストークン自体と関連付けて記憶するとともに、トークン発行手段43により発行されたリフレッシュトークンについての発行日時、有効期限、失効フラグを、リフレッシュトークンID(例えば、リフレッシュトークンのハッシュ値)またはリフレッシュトークン自体と関連付けて記憶するものである。
【0103】
<API基盤システム30/ゲートウェイサーバ40/暗号鍵記憶手段48の構成>
【0104】
暗号鍵記憶手段48は、アクセストークンおよびリフレッシュトークンの暗号化および復号の処理に使用される暗号鍵を記憶するものである(図6参照)。暗号化の処理は、トークン発行手段43がアクセストークンおよびリフレッシュトークンを発行した後に、それらをクライアント端末80に送信する際に行われる。復号の処理は、トークン検証手段44がイントロスペクションAPIリクエストに含まれる検証対象のトークン(アクセストークンまたはリフレッシュトークン)を検証する際に行われる。
【0105】
<API基盤システム30/API管理サーバ50/API利用カタログ記憶手段51の構成>
【0106】
API利用カタログ記憶手段51は、API利用対象者(社外のエンドユーザの他に、社内の他のシステムのサーバや、社内ユーザも含まれる。)毎に、それぞれのAPI利用対象者が利用する各種の業務API定義データを、ヤムルファイルで記憶するものである。
【0107】
<バックエンドシステム60/ユーザ認証システム61/ユーザ認証手段61Aの構成>
【0108】
ユーザ認証手段61Aは、認証システム誘導手段41から内部ネットワーク3を介して送信されてくるOauth2.0仕様の認証・認可リクエスト(クエリにクライアントIDを含む。)を受信し、ユーザ認証画面の表示用データを、インターネット1を介してクライアント端末80に送信するとともに、クライアント端末80からインターネット1を介して送信されてくるユーザIDおよびパスワードを受信し、受信したユーザIDおよびパスワードを用いて、社外のエンドユーザについてのユーザ認証処理を実行するものである。このユーザ認証処理は、Oauth2.0に従って行われる処理である。
【0109】
そして、ユーザ認証手段61Aは、ユーザ認証に成功した場合には、認可手段61Bに処理を移行させる。一方、ユーザ認証に失敗した場合には、認証エラーが発生した旨の情報を、インターネット1を介してクライアント端末80に送信する処理を実行する。
【0110】
<バックエンドシステム60/ユーザ認証システム61/認可手段61Bの構成>
【0111】
認可手段61Bは、ユーザ認証手段61Aによるユーザ認証に成功した場合に、ユーザ権限認可画面(ユーザが業務APIリクエストにより業務処理を実行する権限を有していることの認可を得るための画面)の表示用データを、インターネット1を介してクライアント端末80に送信するとともに、クライアント端末80からインターネット1を介して送信されてくるスコープ(認可を得る権限の範囲であり、クライアントアプリケーションに対してバックエンドシステム60の業務処理システム62が保有するデータをどこまで提供してよいか)の情報を受信し、受信したスコープの情報を用いて、ユーザの権限の認可処理を実行するものである。この認可処理は、Oauth2.0に従って行われる処理である。
【0112】
そして、認可手段61Bは、認可に成功した場合には、確認IDおよび確認コードを発行し、発行した確認IDおよび確認コードを、インターネット1を介してクライアント端末80に送信する処理を実行する。一方、認可に失敗した場合には、認可エラーが発生した旨の情報を、インターネット1を介してクライアント端末80に送信する処理を実行する。
【0113】
<バックエンドシステム60/業務処理システム62/業務処理手段62Aの構成>
【0114】
業務処理手段62Aは、ゲートウェイサーバ40の業務API定義実行手段45から内部ネットワーク3を介して送信されてくる業務処理の実行の依頼のための更なるAPIリクエスト(API実行者による元の業務APIリクエストから生じた2次的なAPIリクエスト)を受信し、業務処理システム62に設けられた業務データベース(不図示)に記憶された各種のデータ(例えば、顧客情報、売買取引に関するデータ等)を用いてAPI実行者の要求に係る業務処理を実行し、その業務処理の結果として得られた情報(例えば、顧客情報等)を、内部ネットワーク3を介してゲートウェイサーバ40のAPI事後処理手段46に送信する処理を実行するものである。
【0115】
<クライアント端末80/処理手段81の構成>
【0116】
処理手段81は、クライアント端末80に搭載されたクライアントアプリケーション(例えば、パイソン(Python)で記述されたアプリケーションや、Webアプリケーション)およびこのクライアントアプリケーションによりインポートされた各種のライブラリ(認可コード発行リクエスト用ライブラリ、トークン発行リクエスト用ライブラリ、API呼出用ライブラリ)により実現される各種の処理を実行するものである。
【0117】
具体的には、処理手段81は、認可コード発行リクエストの送信処理、認可コードの受信処理、トークン発行リクエストの送信処理、トークン(アクセストークンおよびリフレッシュトークン)の受信処理、API呼出処理(業務APIリクエストの送信処理)、API応答の受信処理を実行するものである。
【0118】
<トークン検証システム10による処理の流れ/Oauth認証・認可リクエストからAPI応答結果受信までの処理の流れ:図2図3
【0119】
図2および図3に示すように、トークン検証システム10により、以下のようにしてOauth認証・認可リクエストからAPI応答結果受信までの処理が実行される。
【0120】
図2において、社外のエンドユーザは、クライアントアプリケーションが搭載されたクライアント端末80を操作し、業務APIにより、バックエンドシステム60の各種の業務処理システム62にアクセスし、これらの業務処理システム62に設けられた各種の業務データベース(不図示)に記憶されている各種のデータを利用して業務処理を実行するサービスの利用を開始する(ステップS1)。
【0121】
先ず、クライアント端末80から、処理手段81により、Oauth2.0仕様の認証・認可リクエスト(クエリにクライアントIDを含む。)を、インターネット1を介してリクエスト連携システム20に送信する(ステップS2)。
【0122】
リクエスト連携システム20では、リクエスト受付サービス手段21により、クライアント端末80からの社外アクセスのリクエストを受け付け、受け付けたリクエストの種別の判定を行う。ここでは、例えば、リクエストのパスが</oauth2/authorize>であり、かつ、リクエストに確認IDおよび確認コードが含まれていないので、認証・認可リクエストであると判定される(ステップS3)。
【0123】
続いて、この認証・認可リクエストは、APIゲートウェイ23に送られ、APIゲートウェイ23からの依頼を受けて、リクエストパラメータチェック手段24により、クライアントID・クライアントシークレット記憶手段25に記憶されている情報を用いて、社外アクセスのリクエストの送信元のクライアント端末80に搭載されたクライアントアプリケーションを認証し、その認証結果(認証に成功したか、失敗したかの別を示す情報)を、APIゲートウェイ23に返信する。
【0124】
ここでは、リクエストパラメータチェック手段24は、社外アクセスのリクエストが認証・認可リクエストの場合であるから、リクエストのクエリに設定されているクライアントIDが、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDの中に存在していることをチェックする(ステップS4)。存在していれば、認証成功であり、存在していなければ、認証失敗である。なお、クエリの情報を用いるので、クライアントシークレットはここでの認証に使用しない。
【0125】
それから、クライアントアプリケーションの認証に成功した場合には、APIゲートウェイ23により、認証・認可リクエストが、専用線2を介してAPI基盤システム30のゲートウェイサーバ40の認証システム誘導手段41に送信され、さらに認証システム誘導手段41により、認証・認可リクエストが、内部ネットワーク3を介してバックエンドシステム60のユーザ認証システム61のユーザ認証手段61Aに送信される(ステップS5)。一方、クライアントアプリケーションの認証に失敗した場合には、認証・認可リクエストは、認証システム誘導手段41に送信されず、APIゲートウェイ23により、認証エラーが発生した旨の情報が、インターネット1を介してクライアント端末80に送信される。
【0126】
続いて、ユーザ認証システム61では、ユーザ認証手段61Aにより、認証システム誘導手段41から内部ネットワーク3を介して送信されてくるOauth2.0仕様の認証・認可リクエスト(クエリにクライアントIDを含む。)を受信し、ユーザ認証画面の表示用データを、インターネット1を介してクライアント端末80に送信する(ステップS6)。
【0127】
クライアント端末80では、処理手段81により、ユーザ認証手段61Aからインターネット1を介して送信されてくるユーザ認証画面の表示用データを受信し、社外のエンドユーザに対し、ユーザ認証画面を表示する。そして、エンドユーザは、表示されたユーザ認証画面上でユーザIDおよびパスワードを入力し、処理手段81は、入力されたユーザIDおよびパスワードを、インターネット1を介してユーザ認証手段61Aに送信する(ステップS7)。
【0128】
ユーザ認証手段61Aは、クライアント端末80からインターネット1を介して送信されてくるユーザIDおよびパスワードを受信し、受信したユーザIDおよびパスワードを用いて、社外のエンドユーザについてのユーザ認証処理を実行する(ステップS8)。そして、ユーザ認証手段61Aは、ユーザ認証に成功した場合には、認可手段61Bに処理を移行させる。一方、ユーザ認証に失敗した場合には、認証エラーが発生した旨の情報を、インターネット1を介してクライアント端末80に送信する。
【0129】
それから、ユーザ認証に成功した場合には、認可手段61Bにより、ユーザ権限認可画面の表示用データを、インターネット1を介してクライアント端末80に送信する(ステップS9)。クライアント端末80では、処理手段81により、認可手段61Bからインターネット1を介して送信されてくるユーザ権限認可画面の表示用データを受信し、社外のエンドユーザに対し、ユーザ権限認可画面を表示する。そして、エンドユーザは、表示されたユーザ権限認可画面上でスコープ(認可を得るユーザ権限の範囲)を入力し、処理手段81は、入力されたスコープを、インターネット1を介して認可手段61Bに送信する(ステップS10)。
【0130】
認可手段61Bは、クライアント端末80からインターネット1を介して送信されてくるスコープ(認可を得るユーザ権限の範囲)の情報を受信し、受信したスコープの情報を用いて、ユーザの権限の認可処理を実行する(ステップS11)。そして、認可手段61Bは、認可に成功した場合には、確認IDおよび確認コードを発行し、発行した確認IDおよび確認コードを、インターネット1を介してクライアント端末80に送信する。一方、認可に失敗した場合には、認可エラーが発生した旨の情報を、インターネット1を介してクライアント端末80に送信する。
【0131】
その後、クライアント端末80では、処理手段81により、認可手段61Bからインターネット1を介して送信されてくる確認IDおよび確認コードを受信し、認可コード発行リクエスト(クエリにクライアントID、確認IDおよび確認コードを含む。)を作成し、インターネット1を介してリクエスト連携システム20に送信する(ステップS12)。
【0132】
リクエスト連携システム20では、リクエスト受付サービス手段21により、クライアント端末80からの社外アクセスのリクエストを受け付け、受け付けたリクエストの種別の判定を行う。ここでは、例えば、リクエストのパスが</oauth2/authorize>であり、かつ、リクエストに確認IDおよび確認コードが含まれているので、認可コード発行リクエストであると判定される(ステップS13)。
【0133】
続いて、この認可コード発行リクエスト(クエリにクライアントID、確認IDおよび確認コードを含む。)は、APIゲートウェイ23に送られ、APIゲートウェイ23からの依頼を受けて、リクエストパラメータチェック手段24により、クライアントID・クライアントシークレット記憶手段25に記憶されている情報を用いて、社外アクセスのリクエストの送信元のクライアント端末80に搭載されたクライアントアプリケーションを認証し、その認証結果(認証に成功したか、失敗したかの別を示す情報)を、APIゲートウェイ23に返信する。
【0134】
ここでは、リクエストパラメータチェック手段24は、社外アクセスのリクエストが認可コード発行リクエストの場合であるから、リクエストのクエリに設定されているクライアントIDが、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDの中に存在していることをチェックする(ステップS14)。存在していれば、認証成功であり、存在していなければ、認証失敗である。なお、クエリの情報を用いるので、クライアントシークレットはここでの認証に使用しない。
【0135】
それから、クライアントアプリケーションの認証に成功した場合には、APIゲートウェイ23により、認可コード発行リクエストが、専用線2を介してAPI基盤システム30のゲートウェイサーバ40の認可コード発行手段42に送信され、認可コード発行手段42により認可コードが発行され、発行された認可コードが、専用線2、APIゲートウェイ23、およびインターネット1を介してクライアント端末80に送信される(ステップS15)。
【0136】
図3において、クライアント端末80では、処理手段81により、認可コード発行手段42から送信されてくる認可コードを受信し(ステップS16)、アクセストークン発行リクエスト(ボディに、認可コード、クライアントIDおよびクライアントシークレットを含む。)を作成し、作成したアクセストークン発行リクエストを、インターネット1を介してリクエスト連携システム20に送信する(ステップS17)。
【0137】
リクエスト連携システム20では、リクエスト受付サービス手段21により、クライアント端末80からの社外アクセスのリクエストを受け付け、受け付けたリクエストの種別の判定を行う。ここでは、例えば、リクエストURLパスが</oauth2/token>であり、かつ、リクエストのボディのグラントタイプがauthorization_codeであるので、アクセストークン発行リクエストであると判定される(ステップS18)。
【0138】
続いて、リクエスト受付サービス手段21は、受け付けた社外アクセスのリクエストがアクセストークン発行リクエストであると判定したので、パラメータコピー手段22に対し、コピー処理を行うように依頼(指示)する。パラメータコピー手段22は、リクエスト受付サービス手段21から、コピー依頼に係るアクセストークン発行リクエストを受け取り、受け取ったリクエストのボディに設定されているクライアントIDおよびクライアントシークレットを、リクエストのヘッダにコピーして設定し、コピー処理後のアクセストークン発行リクエストを、リクエスト受付サービス手段21に返す(ステップS19)。
【0139】
それから、リクエスト受付サービス手段21は、コピー処理後のアクセストークン発行リクエスト(ヘッダにクライアントIDおよびクライアントシークレットが設定されている状態)を、APIゲートウェイ23に送る。そして、APIゲートウェイ23は、受け取ったコピー処理後のアクセストークン発行リクエストを、リクエストのパラメータのチェックを行うために、リクエストパラメータチェック手段24に送る。
【0140】
リクエストパラメータチェック手段24は、APIゲートウェイ23からのパラメータのチェック依頼を受けて、コピー処理後のアクセストークン発行リクエストのヘッダに設定されているクライアントIDおよびクライアントシークレットの組合せが、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDおよびクライアントシークレットの組合せと一致するか否かにより、クライアントアプリケーションを認証する処理を実行する(ステップS20)。一致していれば、認証成功であり、一致していなければ、認証失敗である。このクライアントアプリケーションの認証結果は、APIゲートウェイ23に返信される。
【0141】
APIゲートウェイ23は、クライアントアプリケーションの認証成功という認証結果を受け取った場合には、アクセストークン発行リクエストを、専用線2を介してAPI基盤システム30のゲートウェイサーバ40のトークン発行手段43に送信する。一方、認証失敗という認証結果を受け取った場合には、認証エラーが発生した旨の情報を、インターネット1を介してクライアント端末80に送信する。これにより、正当でないアクセストークン発行リクエストがインターナルクラウド内に侵入することを防止している。
【0142】
ゲートウェイサーバ40では、トークン発行手段43により、APIゲートウェイ23から専用線2を介して送信されてくるアクセストークン発行リクエスト(認可コード、クライアントIDおよびクライアントシークレットを含む。)を受信した場合には、アクセストークンおよびリフレッシュトークンを発行し、発行したアクセストークンおよびリフレッシュトークンを暗号鍵記憶手段48に記憶された暗号鍵を用いて暗号化してから、専用線2、APIゲートウェイ23、およびインターネット1を介してクライアント端末80に送信する(ステップS21)。
【0143】
この際、トークン発行手段43は、図6に示すように、発行したアクセストークンおよびリフレッシュトークンの各々についての発行日時、有効期限、失効フラグを、それぞれのトークンのID(例えば、それぞれのトークンのハッシュ値)またはそれぞれのトークン自体と関連付けてトークン情報記憶手段47に記憶させる。
【0144】
クライアント端末80では、処理手段81により、トークン発行手段43から、専用線2、APIゲートウェイ23、およびインターネット1を介して送信されてくるアクセストークンおよびリフレッシュトークンを受信し(ステップS22)、業務APIリクエスト(ヘッダに、アクセストークン、クライアントID、クライアントシークレットを含む。)を作成し、作成した業務APIリクエストを、インターネット1を介してリクエスト連携システム20に送信する(ステップS23)。
【0145】
リクエスト連携システム20では、リクエスト受付サービス手段21により、クライアント端末80からの社外アクセスのリクエストを受け付け、受け付けたリクエストの種別の判定を行う。ここでは、リクエストのパスにより、業務APIリクエストであると判定される(ステップS24)。
【0146】
続いて、リクエスト受付サービス手段21は、受け付けた社外アクセスのリクエストが業務APIリクエストであると判定したので、その業務APIリクエストをAPIゲートウェイ23に送る。そして、APIゲートウェイ23は、受け取った業務APIリクエストを、リクエストのパラメータのチェックを行うために、リクエストパラメータチェック手段24に送る。
【0147】
リクエストパラメータチェック手段24は、APIゲートウェイ23からのパラメータのチェック依頼を受けて、先ず、業務APIリクエストのヘッダに設定されているクライアントIDおよびクライアントシークレットの組合せが、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDおよびクライアントシークレットの組合せと一致するか否かにより、クライアントアプリケーションを認証する処理を実行する(ステップS25)。一致していれば、認証成功であり、一致していなければ、認証失敗である。
【0148】
次に、リクエストパラメータチェック手段24は、業務APIリクエストのヘッダに設定されたアクセストークンを取得し、取得したアクセストークンをイントロスペクションAPIリクエストのボディに設定し、このイントロスペクションAPIリクエストを、専用線2を介してゲートウェイサーバ40のトークン検証手段44に送信するとともに、トークン検証手段44から専用線2を介して送信されてくるアクセストークンの検証結果を含むイントロスペクションAPI応答を受信する(ステップS26)。なお、ゲートウェイサーバ40のトークン検証手段44による検証処理の内容は、トークン検証手段44の説明で既に詳述しているので、ここでは詳しい説明を省略する。
【0149】
リクエストパラメータチェック手段24は、上述したステップS25のクライアントアプリケーションの認証処理の結果、および、ステップS26のトークンの検証処理の結果を、APIゲートウェイ23に返す。
【0150】
APIゲートウェイ23は、リクエストパラメータチェック手段24から受け取ったクライアントアプリケーションの認証処理の結果が、認証成功という結果であり、かつ、トークンの検証処理の結果が、トークンは正当なものであるという結果であった場合には、業務APIリクエストを、専用線2を介してAPI基盤システム30のゲートウェイサーバ40の業務API定義実行手段45(各種の業務API定義実行手段45のうち、業務APIリクエストで要求されている業務処理を実行するための業務API定義実行手段45)に送信する。一方、APIゲートウェイ23は、クライアントアプリケーションの認証処理の結果が、認証失敗という結果であった場合、または、トークンの検証結果が、トークンは正当なものでないという結果であった場合には、業務APIリクエストをAPI基盤システム30に送信せずに、認証エラーが発生した旨を、インターネット1を介してクライアント端末80に送信する。これにより、正当でない業務APIリクエストがインターナルクラウド内に侵入することを防止している。
【0151】
ゲートウェイサーバ40では、業務API定義実行手段45により、APIゲートウェイ23から専用線2を介して送信されてくる業務APIリクエストを受信した場合には、受信した業務APIリクエストの内容に応じて、API管理サーバ50のAPI利用カタログ記憶手段51から、内部ネットワーク3を介してAPI実行者(ここではクライアント端末80を操作する社外のエンドユーザ)が要求している業務についての業務API定義データ(ヤムルファイル)を取得し、取得した業務API定義データに従って、内部ネットワーク3を介してAPI実行者の要求に係る業務処理システム62の業務処理手段62Aの呼出処理を実行する(ステップS27)。
【0152】
業務処理システム62では、業務処理手段62Aにより、ゲートウェイサーバ40の業務API定義実行手段45から内部ネットワーク3を介して送信されてくる業務処理の実行の依頼情報(API実行者による元の業務APIリクエストから生じた2次的なAPIリクエスト)を受信し、業務処理システム62に設けられた業務データベース(不図示)に記憶された各種のデータ(例えば、顧客情報、売買取引に関するデータ等)を用いてAPI実行者の要求に係る業務処理を実行し、その業務処理の結果として得られた情報(例えば、顧客情報等)を、内部ネットワーク3を介してゲートウェイサーバ40のAPI事後処理手段46に送信する(ステップS28)。
【0153】
ゲートウェイサーバ40では、API事後処理手段46により、業務処理システム62の業務処理手段62Aから内部ネットワーク3を介して送信されてくる業務処理の結果(API応答)として得られた情報(例えば、顧客情報等)を受信し、受信した情報を、専用線2、APIゲートウェイ23、およびインターネット1を介してクライアント端末80に送信する(ステップS29)。
【0154】
クライアント端末80では、処理手段81により、API事後処理手段46から、専用線2、APIゲートウェイ23、およびインターネット1を介して送信されてくるAPI応答を受信し、その応答内容をサービス利用結果として画面表示し(ステップS30)、社外のエンドユーザは、このサービス利用結果を確認する(ステップS31)。
【0155】
<トークン検証システム10による処理の流れ/リフレッシュトークンによるアクセストークンの再発行処理の流れ:図4
【0156】
図4において、クライアント端末80で、処理手段81により、アクセストークンの有効期限が過ぎていると判断した場合には、アクセストークン再発行リクエスト(ボディに、リフレッシュトークン、クライアントIDおよびクライアントシークレットを含む。)を作成し、作成したアクセストークン再発行リクエストを、インターネット1を介してリクエスト連携システム20に送信する(ステップS50)。
【0157】
リクエスト連携システム20では、リクエスト受付サービス手段21により、クライアント端末80からの社外アクセスのリクエストを受け付け、受け付けたリクエストの種別の判定を行う。ここでは、例えば、リクエストURLパスが</oauth2/token>であり、かつ、リクエストのボディのグラントタイプがrefresh_tokenであるので、アクセストークン再発行リクエストであると判定される(ステップS51)。
【0158】
続いて、リクエスト受付サービス手段21は、受け付けた社外アクセスのリクエストがアクセストークン再発行リクエストであると判定したので、パラメータコピー手段22に対し、コピー処理を行うように依頼(指示)する。パラメータコピー手段22は、リクエスト受付サービス手段21から、コピー依頼に係るアクセストークン再発行リクエストを受け取り、受け取ったリクエストのボディに設定されているリフレッシュトークン、クライアントIDおよびクライアントシークレットを、リクエストのヘッダにコピーして設定し、コピー処理後のアクセストークン再発行リクエストを、リクエスト受付サービス手段21に返す(ステップS52)。
【0159】
それから、リクエスト受付サービス手段21は、コピー処理後のアクセストークン再発行リクエスト(ヘッダにリフレッシュトークン、クライアントIDおよびクライアントシークレットが設定されている状態)を、APIゲートウェイ23に送る。そして、APIゲートウェイ23は、受け取ったコピー処理後のアクセストークン再発行リクエストを、リクエストのパラメータのチェックを行うために、リクエストパラメータチェック手段24に送る。
【0160】
リクエストパラメータチェック手段24は、APIゲートウェイ23からのパラメータのチェック依頼を受けて、先ず、コピー処理後のアクセストークン再発行リクエストのヘッダに設定されているクライアントIDおよびクライアントシークレットの組合せが、クライアントID・クライアントシークレット記憶手段25に記憶されているクライアントIDおよびクライアントシークレットの組合せと一致するか否かにより、クライアントアプリケーションを認証する処理を実行する(ステップS53)。一致していれば、認証成功であり、一致していなければ、認証失敗である。
【0161】
次に、リクエストパラメータチェック手段24は、コピー処理後のアクセストークン再発行リクエストのヘッダに設定されたリフレッシュトークンを取得し、取得したリフレッシュトークンをイントロスペクションAPIリクエストのボディに設定し、このイントロスペクションAPIリクエストを、専用線2を介してゲートウェイサーバ40のトークン検証手段44に送信するとともに、トークン検証手段44から専用線2を介して送信されてくるリフレッシュトークンの検証結果を含むイントロスペクションAPI応答を受信する(ステップS54)。なお、ゲートウェイサーバ40のトークン検証手段44による検証処理の内容は、トークン検証手段44の説明で既に詳述しているので、ここでは詳しい説明を省略する。
【0162】
リクエストパラメータチェック手段24は、上述したステップS53のクライアントアプリケーションの認証処理の結果、および、ステップS54のトークンの検証処理の結果を、APIゲートウェイ23に返す。
【0163】
APIゲートウェイ23は、リクエストパラメータチェック手段24から受け取ったクライアントアプリケーションの認証処理の結果が、認証成功という結果であり、かつ、トークンの検証処理の結果が、トークンは正当なものであるという結果であった場合には、アクセストークン再発行リクエストを、専用線2を介してAPI基盤システム30のゲートウェイサーバ40のトークン発行手段43に送信する。一方、APIゲートウェイ23は、クライアントアプリケーションの認証処理の結果が、認証失敗という結果であった場合、または、トークンの検証結果が、トークンは正当なものでないという結果であった場合には、アクセストークン再発行リクエストをAPI基盤システム30に送信せずに、認証エラーが発生した旨を、インターネット1を介してクライアント端末80に送信する。これにより、正当でないアクセストークン再発行リクエストがインターナルクラウド内に侵入することを防止している。
【0164】
ゲートウェイサーバ40では、トークン発行手段43により、APIゲートウェイ23から専用線2を介して送信されてくるアクセストークン再発行リクエスト(リフレッシュトークン、クライアントIDおよびクライアントシークレットを含む。)を受信した場合には、アクセストークンおよびリフレッシュトークンを発行し、発行したアクセストークンおよびリフレッシュトークンを暗号鍵記憶手段48に記憶された暗号鍵を用いて暗号化してから、専用線2、APIゲートウェイ23、およびインターネット1を介してクライアント端末80に送信する(ステップS55)。
【0165】
この際、トークン発行手段43は、図6に示すように、発行したアクセストークンおよびリフレッシュトークンの各々についての発行日時、有効期限、失効フラグを、それぞれのトークンのID(例えば、それぞれのトークンのハッシュ値)またはそれぞれのトークン自体と関連付けてトークン情報記憶手段47に記憶させる。
【0166】
その後のステップS56~S65の処理(業務APIリクエストの処理)は、前述した図3のステップS22~S31の処理と同様である。
【0167】
<リクエスト連携システム20による処理の流れ:図5
【0168】
図5には、リクエスト連携システム20により受信した社外アクセスのリクエストの種別に応じて、リクエスト連携システム20で実行される処理の流れが示されている。これは、前述した図2図4に示されたトークン検証システム10による全体的な処理の流れの中から、リクエスト連携システム20により実行される主要な処理(前述したステップS3,S4,S13,S14,S18~S20,S24~S26,S51~S54,S58~S60の処理)を抜き出して記載したものである。
【0169】
リクエスト連携システム20では、リクエスト受付サービス手段21により、受信した社外アクセスのリクエストについて条件判定を行い(前述したステップS3,S13,S18,S24,S51,S58)、条件判定で得られたリクエストの種別に応じて処理を分岐させる。
【0170】
すなわち、受信した社外アクセスのリクエストが、認証・認可リクエストであると判定された場合(図2のステップS3)、および認可コード発行リクエストであると判定された場合(図2のステップS13)には、リクエストパラメータチェック手段24によるクライアントアプリケーションのチェック処理(図2のステップS4,S14)を実行し、リクエストに確認IDおよび確認コードがない場合には、認証システム誘導手段41によるユーザ認証システム61への誘導処理(図2のステップS5)に移行し、リクエストに確認IDおよび確認コードがある場合には、認可コード発行手段42による認可コード発行処理(図2のステップS15)に移行する。
【0171】
また、受信した社外アクセスのリクエストが、アクセストークン発行リクエストであると判定された場合(図3のステップS18)には、パラメータコピー手段22によるコピー処理(図3のステップS19)、リクエストパラメータチェック手段24によるクライアントアプリケーションの認証処理(図3のステップS20)を実行し、トークン発行手段43によるアクセストークンおよびリフレッシュトークンの発行処理(図3のステップS21)に移行する。
【0172】
さらに、受信した社外アクセスのリクエストが、リフレッシュトークンによるアクセストークン再発行リクエストであると判定された場合(図4のステップS51)には、パラメータコピー手段22によるコピー処理(図4のステップS52)、リクエストパラメータチェック手段24によるクライアントアプリケーションの認証処理(図4のステップS53)、リクエストパラメータチェック手段24によるイントロスペクションAPIを利用したトークンの検証処理(図4のステップS54)を実行し、トークン発行手段43によるアクセストークンおよびリフレッシュトークンの発行処理(図4のステップS55)に移行する。
【0173】
また、受信した社外アクセスのリクエストが、業務APIリクエストであると判定された場合(図3のステップS24、図4のステップS58)には、リクエストパラメータチェック手段24によるクライアントアプリケーションの認証処理(図3のステップS25、図4のステップS59)、リクエストパラメータチェック手段24によるイントロスペクションAPIを利用したトークンの検証処理(図3のステップS26、図4のステップS60)を実行し、業務API定義実行手段45による業務API定義実行処理(図3のステップS27、図4のステップS61)に移行する。
【0174】
<本実施形態の効果>
【0175】
このような本実施形態によれば、次のような効果がある。すなわち、トークン検証システム10では、社外アクセスのリクエストを受け付けるリクエスト連携システム20をパブリッククラウド環境に設け、このリクエスト連携システム20のリクエストパラメータチェック手段24から、社外アクセスのリクエスト内の検証対象のアクセストークンやリフレッシュトークンを設定したイントロスペクションAPIリクエストを、API基盤システム30のトークン検証手段44に送信し、トークン検証手段44からのイントロスペクションAPI応答として、アクセストークンやリフレッシュトークンの正当性の検証結果を受け取るようにしたので、社外アクセスのリクエストである業務APIリクエストやアクセストークン再発行リクエストをインターナルクラウド環境内に侵入させることなく、業務APIリクエストに設定されたアクセストークンの正当性の検証結果や、アクセストークン再発行リクエストに設定されたリフレッシュトークンの正当性の検証結果を、パブリッククラウド環境下に置かれたリクエスト連携システム20で取得することができる。
【0176】
従って、パブリッククラウド環境下で取得することができたアクセストークンやリフレッシュトークンの検証結果が、正当なトークンでない旨の情報であった場合には、リクエスト連携システム20のAPIゲートウェイ23により、それらの正当でないアクセストークンやリフレッシュトークンが設定されていた業務APIリクエストやアクセストークン再発行リクエスト、すなわち、セキュリティ上、問題のある社外アクセスのリクエストを、インターナルクラウド環境下に置かれたAPI基盤システム30に送信しないようにすることができる。
【0177】
すなわち、トークン検証システム10では、API基盤システム30のトークン発行手段43によりアクセストークンおよびリフレッシュトークンを発行するので、トークン発行主体は、インターナルクラウド環境下に置かれたAPI基盤システム30である。そして、発行されたトークンの検証は、トークン発行主体でしか行うことができないので、API基盤システム30でトークンの検証を行うことになり、API基盤システム30にトークン検証手段44が設けられている。しかし、インターナルクラウド環境下に置かれたAPI基盤システム30でアクセストークンやリフレッシュトークンの正当性の検証を行うとなると、セキュリティ上の問題を含んでいる可能性がある社外アクセスのリクエストである業務APIリクエストやアクセストークン再発行リクエストを、インターナルクラウド環境内に侵入させることになってしまう。そこで、トークン検証システム10では、イントロスペクションAPIを利用し、パブリッククラウド環境下に置かれたリクエスト連携システム20から、インターナルクラウド環境下に置かれたAPI基盤システム30のトークン検証手段44に対し、社外アクセスのリクエスト自体ではなく、そのリクエストに設定された検証対象のトークンを送信することによりトークンの検証結果を取得し、その検証結果が、正当なトークンでない旨の情報であった場合に、そのリクエスト自体をAPI基盤システム30に送信(連携)しないようにしている。このため、セキュリティ上の問題を含んでいる社外アクセスのリクエスト自体が、インターナルクラウド環境内に侵入することを防ぐことができるので、セキュリティを十分に確保することができる。
【0178】
また、トークン検証システム10では、パブリッククラウド環境下に置かれたリクエスト連携システム20から、イントロスペクションAPIを利用することにより、インターナルクラウド環境下で行われたトークン検証の結果を取得するので、前述した図7に示した従来のシステム90のような同様の構成のゲートウェイサーバを、社外アクセス用および社内アクセス用として2ヶ所に配置することを回避することができる。このため、システムの構築コストを低減することができる。
【0179】
また、トークン検証システム10では、OAuth2.0に従ったアクセストークンおよびリフレッシュトークンの払い出しを行うトークン発行手段43は、インターナルクラウド環境下のAPI基盤システム30に設けられているので、すなわち、図7に示した従来システム90で採用していた標準機能を活用することができるので、社外コンシューマ(本実施形態では、社外のエンドユーザが操作するクライアント端末80、またはそこに搭載されたクライアントアプリケーション)は、本発明のトークン検証システム10の構築後において、構築前の従来システム90で発行されたアクセストークンおよびリフレッシュトークンをそのまま利用することができる。
【0180】
さらに、トークン検証システム10は、リクエスト連携システム20に設けられたクライアントID・クライアントシークレット記憶手段25の情報により、クライアントアプリケーションの認証(そのクライアントアプリケーションから送信されてくるリクエストの認証と考えてもよい。)を行う構成とされているので、パブリッククラウド環境下に置かれたリクエスト連携システム20で、クライアントアプリケーションの認証を行うことができ、より一層、セキュリティの向上を図ることができる。
【0181】
また、リクエスト連携システム20にパラメータコピー手段22が設けられているので、リクエストパラメータチェック手段24によりアクセストークン再発行リクエストのボディに設定されているリフレッシュトークンを読み込むことができない状況であっても、パラメータコピー手段22により、アクセストークン再発行リクエストのボディに設定されているリフレッシュトークンをヘッダにコピーして設定することができる。このため、リクエストパラメータチェック手段24によりリフレッシュトークンを読み込むことができるようになるので、イントロスペクションAPIリクエストへのリフレッシュトークンの設定を行うことができる。
【0182】
また、トークン検証システム10は、トークン検証手段44により、トークン情報記憶手段47に記憶された有効期限および失効フラグを用いて、アクセストークンまたはリフレッシュトークンの正当性を検証する構成とされているので(図6参照)、トークン発行手段43によるアクセストークンおよびリフレッシュトークンの発行時の情報を用いて、インターナルクラウド環境下でそれぞれのトークンの正当性を確実に検証することができる。
【0183】
<変形の形態>
【0184】
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
【0185】
例えば、前記実施形態では、インターネット経由の社外アクセスのリクエストの送信元は、社外のエンドユーザが操作するクライアント端末80に搭載されたクライアントアプリケーションとなっていたが、これに限定されるものではなく、本発明におけるインターネット経由の社外アクセスのリクエストの送信元は、社外の他のシステム(本発明のトークン検証システム以外のシステム)のサーバに搭載されたクライアントアプリケーションであってもよい。
【産業上の利用可能性】
【0186】
以上のように、本発明のトークン検証システムおよびプログラムは、例えば、社外のエンドユーザが、APIを利用してインターナルクラウド環境下に置かれた業務処理システムにアクセスし、業務処理を実行する場合等に用いるのに適している。
【符号の説明】
【0187】
1 インターネット
2 専用線
3 内部ネットワーク
10 トークン検証システム
20 リクエスト連携システム
21 リクエスト受付サービス手段
22 パラメータコピー手段
23 APIゲートウェイ
24 リクエストパラメータチェック手段
25 クライアントID・クライアントシークレット記憶手段
30 API基盤システム
43 トークン発行手段
44 トークン検証手段
47 トークン情報記憶手段
【要約】
【課題】セキュリティを十分に確保することができ、かつ、安価に構築することができるトークン検証システムを提供する。
【解決手段】トークン検証システム10では、社外アクセスのリクエストを受け付けるリクエスト連携システム20をパブリッククラウド環境に設け、このリクエスト連携システム20のリクエストパラメータチェック手段24から、社外アクセスのリクエスト内の検証対象のアクセストークンやリフレッシュトークンを設定したイントロスペクションAPIリクエストを、API基盤システム30のトークン検証手段44に送信し、トークン検証手段44からのイントロスペクションAPI応答として、アクセストークンやリフレッシュトークンの正当性の検証結果を受け取る。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7