(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】成りすまし防止システムおよびプログラム
(51)【国際特許分類】
G06F 21/31 20130101AFI20240920BHJP
G06F 21/44 20130101ALI20240920BHJP
【FI】
G06F21/31
G06F21/44
(21)【出願番号】P 2024064271
(22)【出願日】2024-04-11
【審査請求日】2024-05-10
(73)【特許権者】
【識別番号】596108508
【氏名又は名称】株式会社大和総研
(74)【代理人】
【識別番号】100114638
【氏名又は名称】中野 寛也
(72)【発明者】
【氏名】近藤 智朗
(72)【発明者】
【氏名】林 亮輔
(72)【発明者】
【氏名】神戸 梨沙
【審査官】三森 雄介
(56)【参考文献】
【文献】特開2017-142619(JP,A)
【文献】特表2022-518638(JP,A)
【文献】特開2017-49927(JP,A)
【文献】米国特許出願公開第2014/0075516(US,A1)
【文献】中国特許出願公開第112087367(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-21/88
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
社員によるAPI(Application Programming Interface:アプリケーション・プログラミング・インターフェース)の利用時の他の社員への成りすましを防止する処理を実行するコンピュータにより構成された成りすまし防止システムであって、
IDトークンを発行するオープンIDプロバイダシステム内で、各社員を識別する社員IDと、この社員IDを部分的に含んで構成されるオープンIDプロバイダ用のユーザ名とを関連付けて記憶するユーザ情報記憶手段と、
社員によるAPIの利用の受付および管理を行うAPI基盤システム内で、前記社員IDと、各社員に払い出された社員毎のクライアントIDおよびクライアントシークレットとを関連付けて記憶するAPI利用対象者情報記憶手段と、
前記社員IDを用いて社員がログインしたクライアント端末から、認可コード発行リクエストを、ネットワークを介して前記オープンIDプロバイダシステムに送信する認可コード発行リクエスト送信手段と、
前記認可コード発行リクエストを受信した前記オープンIDプロバイダシステム内で、前記クライアント端末から、前記ログインに用いられた前記社員IDを、ネットワークを介して受信し、認可コードを発行してこの認可コードを前記社員IDと関連付けて認可コード発行情報記憶手段に記憶させるとともに、発行した前記認可コードを、ネットワークを介して前記クライアント端末に送信する認可コード発行手段と、
前記クライアント端末で、前記認可コード発行手段により前記オープンIDプロバイダシステムからネットワークを介して送信されてくる認可コードを受信する認可コード受信手段と、
この認可コード受信手段により受信した前記認可コードを含むトークン発行リクエストを、前記クライアント端末からネットワークを介して前記オープンIDプロバイダシステムに送信するトークン発行リクエスト送信手段と、
前記トークン発行リクエストを受信した前記オープンIDプロバイダシステム内で、前記トークン発行リクエストに含まれる前記認可コードを用いて前記認可コード発行情報記憶手段から前記社員IDを取得し、取得した前記社員IDを用いて前記ユーザ情報記憶手段から前記ユーザ名を取得し、取得した前記ユーザ名を含むIDトークンを発行し、発行した前記IDトークンを、ネットワークを介して前記クライアント端末に送信するトークン発行手段と、
前記クライアント端末で、前記トークン発行手段により前記オープンIDプロバイダシステムからネットワークを介して送信されてくる前記IDトークンを受信するトークン受信手段と、
前記クライアント端末に搭載されたクライアントアプリケーションで入力を受け付けて前記クライアント端末に記憶されているか、または前記クライアントアプリケーションのプログラム内に記述されているクライアントIDおよびクライアントシークレット、並びに、前記トークン受信手段により受信した前記IDトークンを含むAPIリクエストを作成し、前記クライアント端末から、作成した前記APIリクエストを、ネットワークを介して前記API基盤システムに送信するAPI呼出手段と、
前記API基盤システム内で、受信した前記APIリクエストに設定された前記IDトークンに含まれる前記ユーザ名から前記社員IDを切り取り、切り取った前記社員IDを、前記APIリクエストに設定する社員ID設定手段と、
前記API基盤システム内で、前記APIリクエストに設定された前記クライアントIDと関連付けられて前記API利用対象者情報記憶手段に記憶されている前記社員IDと、前記APIリクエストに設定された前記社員IDとが一致しているか否かを判断し、一致していない場合に、他の社員への成りすましが行われていると判断する成りすましチェック手段と
を備えたことを特徴とする成りすまし防止システム。
【請求項2】
前記社員ID設定手段は、
前記クライアント端末から受信した前記APIリクエストに前記IDトークンが設定されていない場合には、認証エラーが発生した旨の情報を、ネットワークを介して前記クライアント端末に送信する処理も実行する構成とされている
ことを特徴とする請求項1に記載の成りすまし防止システム。
【請求項3】
前記API基盤システムは、
キーIDおよびアルゴリズムを記憶するパラメータ記憶手段と、
前記オープンIDプロバイダシステムの公開鍵を記憶する公開鍵記憶手段と、
前記パラメータ記憶手段に記憶された前記キーIDおよび前記アルゴリズムと、前記APIリクエストのヘッダに含まれる前記IDトークン内の前記キーIDおよび前記アルゴリズムとが一致しているか否かを検証するとともに、前記APIリクエストのヘッダに含まれる前記IDトークン内の署名と、前記公開鍵記憶手段に記憶された前記公開鍵とを用いて、前記IDトークンが前記オープンIDプロバイダシステムにより発行されたものであるか否かを検証するトークン検証手段と
を備えたことを特徴とする請求項2に記載の成りすまし防止システム。
【請求項4】
請求項1~3のいずれかに記載の成りすまし防止システムとして、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、社員によるAPI(Application Programming Interface:アプリケーション・プログラミング・インターフェース)の利用時の他の社員への成りすましを防止する処理を実行するコンピュータにより構成された成りすまし防止システムおよびプログラムに係り、例えば、各社員がクライアントアプリケーションを搭載したクライアント端末から業務APIを利用してバックエンドシステムの各種のデータにアクセスし、業務処理を行う場合等に利用できる。
【背景技術】
【0002】
従来、社員がAPIを実行する際には、各社員は、クライアントアプリケーションを搭載したクライアント端末(例えば、会社から配布されている2in1端末等)に、社員IDおよびパスワードを用いてログインし、クライアントIDおよびクライアントシークレットという2つの認証情報を用いて、ゲートウェイサーバを有するAPI基盤システムを経由してバックエンドシステムの各種のデータにアクセスし、必要な業務処理を行っている。
【0003】
上記のクライアントIDおよびクライアントシークレットは、社員によるAPIの実行を可能にするために、API利用対象者である社員1人1人に、API基盤システムから払い出され、API基盤システムに記憶されている。そして、各人に払い出されたクライアントIDおよびクライアントシークレットは、各人の管理となっている。従って、各社員は、自分に払い出されたクライアントIDおよびクライアントシークレットをリクエストパラメータ(ヘッダ)に設定してAPIのリクエストを行っている。
【0004】
なお、本発明では、後述するように、クライアントIDおよびクライアントシークレット以外の情報として、オープンIDプロバイダが発行するIDトークンを利用してAPI実行時のクライアントIDが実行者本人のものであることのチェックを行うが、APIおよびIDトークンを利用した処理としては、秘匿性の高い電子投票を実現することができる「電子投票管理方法」(特許文献1参照)や、リライングパーティサーバ上でホスティングされているリソースにモバイル装置からアクセスするための方法を提供する「ネイティブモバイルアプリケーション起点のオープンIDコネクト(OIDC)フロー及びセキュリティアサーションマークアップ言語(SAML)フローのためのシームレスなシングルサインオン(SSO)のための方法及びシステム」(特許文献2参照)が知られている。
【0005】
また、IDトークンの記載はないが、API実行時の社員の成りすましの防止に関連する技術としては、第1サーバ、第3サーバと、第2サーバとが動的共通情報に基づく実行証明情報を生成し、照合することができ、成りすましを防止できる「ネットワーク通信方法及びネットワーク通信システム」(特許文献3参照)、データ放送の受信に利用される受信装置が、不正なデータ放送を受信したとしてもその不正を無効にする技術を提供する「送信装置およびそのプログラム、ならびに、受信装置およびAPI実行プログラム」(特許文献4参照)、代行処理が行われる際に、代行者が起票した起票伝票の自己承認を抑制することができる代行オペレーションにおける「権限不正使用防止システム」(特許文献5参照)、それぞれ独立して管理されているユーザ情報を統合的に提供することができる「情報提供装置、情報提供方法、情報提供プログラム及び記録媒体、並びにユーザ認証装置、ユーザ認証方法、ユーザ認証プログラム及び記録媒体」(特許文献6参照)が知られている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2022-107556号公報(段落[0012]、[0026]、[0027]、[0032])
【文献】特開2020-126602号公報
【文献】再表2016-158908号公報(段落[0045]、[0078])
【文献】特開2009-147808号公報(要約)
【文献】特開2008-243023号公報(段落[0028])
【文献】特開2004-303202号公報(請求項1、段落[0170])
【発明の概要】
【発明が解決しようとする課題】
【0007】
前述したように、API利用対象者である社員1人1人に払い出されたクライアントIDおよびクライアントシークレットは、各人の管理となっている。従って、クライアントIDおよびクライアントシークレットが漏洩した場合には、誰でも利用可能な状態となってしまう。
【0008】
このため、悪意のある者が他人のクライアントIDおよびクライアントシークレットを入手した場合、他人のクライアントIDおよびクライアントシークレットを利用してAPIを実行することで、バックエンドシステムに記憶されている顧客情報などを不正に入手することができ、また、更新系の業務処理を行うAPIの場合は、データを不正に登録・更新・削除することができてしまうという問題があった。
【0009】
本発明の目的は、社員によるAPI実行時の成りすましを防止することができる成りすまし防止システムおよびプログラムを提供するところにある。
【課題を解決するための手段】
【0010】
本発明は、社員によるAPI(Application Programming Interface:アプリケーション・プログラミング・インターフェース)の利用時の他の社員への成りすましを防止する処理を実行するコンピュータにより構成された成りすまし防止システムであって、
IDトークンを発行するオープンIDプロバイダシステム内で、各社員を識別する社員IDと、この社員IDを部分的に含んで構成されるオープンIDプロバイダ用のユーザ名とを関連付けて記憶するユーザ情報記憶手段と、
社員によるAPIの利用の受付および管理を行うAPI基盤システム内で、社員IDと、各社員に払い出された社員毎のクライアントIDおよびクライアントシークレットとを関連付けて記憶するAPI利用対象者情報記憶手段と、
社員IDを用いて社員がログインしたクライアント端末から、認可コード発行リクエストを、ネットワークを介してオープンIDプロバイダシステムに送信する認可コード発行リクエスト送信手段と、
認可コード発行リクエストを受信したオープンIDプロバイダシステム内で、クライアント端末から、ログインに用いられた社員IDを、ネットワークを介して受信し、認可コードを発行してこの認可コードを社員IDと関連付けて認可コード発行情報記憶手段に記憶させるとともに、発行した認可コードを、ネットワークを介してクライアント端末に送信する認可コード発行手段と、
クライアント端末で、認可コード発行手段によりオープンIDプロバイダシステムからネットワークを介して送信されてくる認可コードを受信する認可コード受信手段と、
この認可コード受信手段により受信した認可コードを含むトークン発行リクエストを、クライアント端末からネットワークを介してオープンIDプロバイダシステムに送信するトークン発行リクエスト送信手段と、
トークン発行リクエストを受信したオープンIDプロバイダシステム内で、トークン発行リクエストに含まれる認可コードを用いて認可コード発行情報記憶手段から社員IDを取得し、取得した社員IDを用いてユーザ情報記憶手段からユーザ名を取得し、取得したユーザ名を含むIDトークンを発行し、発行したIDトークンを、ネットワークを介してクライアント端末に送信するトークン発行手段と、
クライアント端末で、トークン発行手段によりオープンIDプロバイダシステムからネットワークを介して送信されてくるIDトークンを受信するトークン受信手段と、
クライアント端末に搭載されたクライアントアプリケーションで入力を受け付けてクライアント端末に記憶されているか、またはクライアントアプリケーションのプログラム内に記述されているクライアントIDおよびクライアントシークレット、並びに、トークン受信手段により受信したIDトークンを含むAPIリクエストを作成し、クライアント端末から、作成したAPIリクエストを、ネットワークを介してAPI基盤システムに送信するAPI呼出手段と、
API基盤システム内で、受信したAPIリクエストに設定されたIDトークンに含まれるユーザ名から社員IDを切り取り、切り取った社員IDを、APIリクエストに設定する社員ID設定手段と、
API基盤システム内で、APIリクエストに設定されたクライアントIDと関連付けられてAPI利用対象者情報記憶手段に記憶されている社員IDと、APIリクエストに設定された社員IDとが一致しているか否かを判断し、一致していない場合に、他の社員への成りすましが行われていると判断する成りすましチェック手段と
を備えたことを特徴とするものである。
【0011】
このような本発明の成りすまし防止システムにおいては、IDトークンの発行のための仕様であるオープンIDコネクト(OpenID Connect)の活用により、クライアントIDおよびクライアントシークレット以外の情報として、オープンIDプロバイダシステムで発行されるIDトークンを利用してAPI実行時のクライアントIDが実行者本人のものであることのチェック(社員による成りすましチェック)を行う。
【0012】
すなわち、オープンIDプロバイダシステムに設けられたトークン発行手段により、クライアント端末からのトークン発行リクエストを受信した場合に、受信したトークン発行リクエストに含まれる認可コードを用いて認可コード発行情報記憶手段から社員IDを取得し、取得した社員IDを用いてユーザ情報記憶手段からユーザ名(社員IDを部分的に含んで構成されるオープンIDプロバイダ用のユーザ名)を取得し、取得したユーザ名を含むIDトークンを発行し、発行したIDトークンをクライアント端末に送信する。
【0013】
社員がAPIを実行する際には、自分がログインしたクライアント端末で、API呼出手段により、クライアントIDおよびクライアントシークレット、並びにIDトークンを含むAPIリクエストを作成し、作成したAPIリクエストを、クライアント端末からAPI基盤システムに送信する。
【0014】
API基盤システムでは、社員ID設定手段により、クライアント端末から受信したAPIリクエストに設定されたIDトークンに含まれるオープンIDプロバイダ用のユーザ名(このユーザ名は、社員IDを部分的に含んでいる。)から社員IDを切り取り、切り取った社員IDを、APIリクエストに設定する。
【0015】
そして、API基盤システム内で、成りすましチェック手段により、APIリクエストに設定されたクライアントIDと関連付けられてAPI利用対象者情報記憶手段に記憶されている社員IDと、APIリクエストに設定された社員ID(オープンIDプロバイダ用のユーザ名から切り取った社員ID)とが一致しているか否かを判断し、一致していない場合に、他の社員への成りすましが行われていると判断する。
【0016】
このため、他の社員への成りすましを行う不正行為者である社員が、自分(不正行為者自身)の社員IDと、不正に入手した他の社員のクライアントIDおよびクライアントシークレットとを使ってAPIを実行しようとしても、成りすましチェック手段により、その不正行為が発覚することになる。つまり、APIリクエストに設定された社員IDは、端末ログインを行った不正行為者自身の社員IDであり、一方、不正に入手した他の社員のクライアントIDと関連付けられてAPI利用対象者情報記憶手段に記憶されている社員IDは、他の社員の社員IDであるから、一致しないので、成りすましの行為を見つけることができる。
【0017】
よって、不正行為者である社員が、バックエンドシステムに記憶されている顧客情報などを不正に入手することを防止することが可能となり、また、更新系の業務処理を行うAPIの場合は、不正行為者である社員が、データを不正に登録・更新・削除することを防止することが可能となり、これらにより前記目的が達成される。
【0018】
<APIリクエストにIDトークンが設定されていない場合に、認証エラーをクライアント端末に送信する構成>
【0019】
また、前述した成りすまし防止システムにおいて、
社員ID設定手段は、
クライアント端末から受信したAPIリクエストにIDトークンが設定されていない場合には、認証エラーが発生した旨の情報を、ネットワークを介してクライアント端末に送信する処理も実行する構成とされていることが望ましい。
【0020】
このようにAPIリクエストにIDトークンが設定されていない場合に、認証エラーをクライアント端末に送信する構成とした場合には、成りすましチェック手段による処理に必要な情報が欠落しているので、成りすましチェック手段による処理に進む前に、不正なAPIの実行を防ぐことが可能となる。
【0021】
<トークン検証を行う構成>
【0022】
さらに、上述したAPIリクエストにIDトークンが設定されていない場合に、認証エラーをクライアント端末に送信する構成とした場合において、
API基盤システムは、
キーIDおよびアルゴリズムを記憶するパラメータ記憶手段と、
オープンIDプロバイダシステムの公開鍵を記憶する公開鍵記憶手段と、
パラメータ記憶手段に記憶されたキーIDおよびアルゴリズムと、APIリクエストのヘッダに含まれるIDトークン内のキーIDおよびアルゴリズムとが一致しているか否かを検証するとともに、APIリクエストのヘッダに含まれるIDトークン内の署名と、公開鍵記憶手段に記憶された公開鍵とを用いて、IDトークンがオープンIDプロバイダシステムにより発行されたものであるか否かを検証するトークン検証手段と
を備えた構成とすることが望ましい。
【0023】
このようにトークン検証を行う構成とした場合には、IDトークンがオープンIDプロバイダシステムにより発行されたものであるか否かを検証することが可能となり、より一層、セキュリティ機能を向上させることができる。
【0024】
<プログラムの発明>
【0025】
そして、本発明のプログラムは、以上に述べた成りすまし防止システムとして、コンピュータを機能させるためのものである。
【0026】
なお、上記のプログラムまたはその一部は、例えば、光磁気ディスク(MO)、コンパクトディスク(CD)、デジタル・バーサタイル・ディスク(DVD)、フレキシブルディスク(FD)、磁気テープ、読出し専用メモリ(ROM)、電気的消去および書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、フラッシュディスク等の記録媒体に記録して保存や流通等させることが可能であるとともに、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等の有線ネットワーク、あるいは無線通信ネットワーク、さらにはこれらの組合せ等の伝送媒体を用いて伝送することが可能であり、また、搬送波に載せて搬送することも可能である。さらに、上記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。
【発明の効果】
【0027】
以上に述べたように本発明によれば、オープンIDコネクト(OpenID Connect)の活用により、クライアントIDおよびクライアントシークレット以外の情報として、オープンIDプロバイダシステムで発行されるIDトークンを利用してAPI実行時のクライアントIDが実行者本人のものであることのチェックを行うので、社員によるAPI実行時の成りすましを防止することができるという効果がある。
【図面の簡単な説明】
【0028】
【
図1】本発明の一実施形態の成りすまし防止システムの全体構成図。
【
図2】前記実施形態の成りすまし防止システムの別の全体構成図。
【
図3】前記実施形態の成りすまし防止システムの要部を示す構成図。
【
図4】前記実施形態の社員によるAPI実行時の成りすまし防止処理の流れ(その1).を示すフローチャートの図。
【
図5】前記実施形態の社員によるAPI実行時の成りすまし防止処理の流れ(その2).を示すフローチャートの図。
【発明を実施するための形態】
【0029】
以下に本発明の一実施形態について図面を参照して説明する。
図1および
図2には、本実施形態の成りすまし防止システム10の全体構成が示されている。
図3には、成りすまし防止システム10の要部の構成が示され、
図4および
図5には、社員によるAPI実行時の成りすまし防止処理の流れがフローチャートで示されている。
【0030】
<成りすまし防止システム10の全体構成>
【0031】
図1および
図2において、成りすまし防止システム10は、オープンIDプロバイダ(OpenID provider)が管理するオープンIDプロバイダシステム20と、API利用対象者(各社員や、社内の各部署、社内の各システム等)によるAPIの利用の受付および管理を行うAPI基盤システム30と、各社員が操作する多数のクライアント端末60とを備えて構成されている。また、ネットワーク1には、API利用対象者としての各社員によるAPIの実行に伴って各種の業務処理を実行するバックエンドシステム80が接続されている。さらに、図示は省略されているが、バックエンドシステム80のデータを利用するAPI利用対象者としての他のシステムもネットワーク1に接続されている。
【0032】
ここで、ネットワーク1は、例えばイントラネットやLAN等により構成された社内の内部ネットワークであるが、有線であるか無線であるか、さらには有線および無線の混在型であるかは問わず、要するに、複数地点(距離の長短は問わない。)間で、ある程度の速度をもって情報を伝送することができるものであればよい。
【0033】
オープンIDプロバイダシステム20は、1台または複数台のコンピュータにより構成され、IDトークンの発行のための仕様であるオープンIDコネクト(OpenID Connect)に従った各種の処理を実行する処理手段20Aを備え、この処理手段20Aは、ログイン処理手段21と、認可コード発行手段22と、トークン発行手段23とを含んで構成されている。また、オープンIDプロバイダシステム20は、処理手段20Aによる各種の処理を実行するのに必要な各種のデータを記憶するために、ユーザ情報記憶手段24と、アプリケーション一覧記憶手段25と、認可コード発行情報記憶手段26とを備えている。
【0034】
ここで、処理手段20Aに含まれる各手段21~23は、オープンIDプロバイダシステム20を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段21~23の詳細は後述する。
【0035】
また、ユーザ情報記憶手段24、アプリケーション一覧記憶手段25、認可コード発行情報記憶手段26としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。これらの記憶手段24~26の詳細は後述する。
【0036】
なお、本実施形態では、オープンIDプロバイダシステム20として、AzureADを採用しているが、これに限定されるものではなく、いずれのオープンIDプロバイダでも、IDトークンの発行のための仕様であるオープンIDコネクト(OpenID Connect)に従った各種の処理を実行することができるので、本発明に適用することができる。
【0037】
API基盤システム30は、1台または複数台のコンピュータにより構成され、ゲートウェイサーバ40と、API管理サーバ50とを備えている。これらのゲートウェイサーバ40と、API管理サーバ50とが、それぞれ何台のコンピュータにより構成されるか、あるいは同じ1台のコンピュータで構成されるかは任意である。なお、本実施形態では、API基盤システム30には、IBM社のAPIコネクト(IBM API Connect)を採用しているが、これに限定されるものではない。
【0038】
ゲートウェイサーバ40は、APIリクエストの受付処理を実行する処理手段40Aを備え、この処理手段40Aは、プリフロー処理手段41と、API定義実行手段42と、ポストフロー処理手段43とを含んで構成されている。そして、プリフロー処理手段41は、URLマッチング手段41Aと、社員ID設定手段41Bと、トークン検証手段41Cと、「成りすましチェック手段」を構成する成りすましチェックAPI呼出手段41Dと、リクエスト構文・サイズチェック手段41Eとを含んで構成されている。また、API定義実行手段42は、各種の業務API定義実行手段42Aと、「成りすましチェック手段」を構成する成りすましチェックAPI実行手段42Bとを含んで構成されている。さらに、ポストフロー処理手段43は、各種のAPI事後処理手段43Aを含んで構成されている。また、ゲートウェイサーバ40は、処理手段40Aによる各種の処理を実行するのに必要な各種のデータを記憶するために、公開鍵記憶手段44と、パラメータ記憶手段45とを備えている。
【0039】
ここで、処理手段40Aに含まれる各手段41(41A,41B,41C,41D,41E),42(42A,42B),43(43A)は、ゲートウェイサーバ40を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段41(41A,41B,41C,41D,41E),42(42A,42B),43(43A)の詳細は後述する。
【0040】
また、公開鍵記憶手段44、パラメータ記憶手段45としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。これらの記憶手段44,45の詳細は後述する。
【0041】
API管理サーバ50は、API定義データ送信手段51と、API社員利用カタログ記憶手段52と、API利用対象者情報送信手段53と、API利用対象者情報記憶手段54とを備えて構成されている。
【0042】
ここで、API定義データ送信手段51、API利用対象者情報送信手段53は、API管理サーバ50を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段51,53の詳細は後述する。
【0043】
また、API社員利用カタログ記憶手段52、API利用対象者情報記憶手段54としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。これらの記憶手段52,54の詳細は後述する。
【0044】
クライアント端末60は、コンピュータまたはモバイル機器により構成されている。例えば、各社員に配布されている2in1端末等であり、オープンIDプロバイダシステム20(本実施形態では、一例として、AzureAD)により端末ログイン認証を行うことができるものであればよい。
【0045】
このクライアント端末60は、
図1に示すように、APIの呼出および応答受信を含む各種の処理を実行する処理手段60Aを備え、この処理手段60Aは、端末ログイン手段61と、クライアントID・クライアントシークレット入力受付手段62と、認可コード発行リクエスト送信手段63と、認可コード受信手段64と、トークン発行リクエスト送信手段65と、トークン受信手段66と、API呼出手段67と、API応答受信手段68とを含んで構成されている。また、クライアント端末60は、処理手段60Aによる各種の処理を実行するのに必要な各種のデータを記憶するために、クライアントID・クライアントシークレット記憶手段70と、ログイン社員ID・パスワード記憶手段71とを備えている。
【0046】
また、クライアント端末60には、
図2に示すように、APIの呼出および応答受信を行うクライアントアプリケーション60Bが搭載され、このクライアントアプリケーション60Bには、パイソン(Python)で記述されたアプリケーション60Cと、Webアプリケーション60Dとがある。また、クライアント端末60には、クライアントアプリケーション60Bによりインポートされるライブラリ60Eが記憶され、このライブラリ60Eには、認可コード発行リクエスト用ライブラリ60Fと、トークン発行リクエスト用ライブラリ60Gと、API呼出用ライブラリ60Hとがある。これらのライブラリは、オープンIDプロバイダシステム20(本実施形態では、一例として、AzureAD)でログイン認証可能な端末での動作を前提としている。
【0047】
ここで、処理手段60A(
図1参照)に含まれる各手段61~68は、クライアント端末60を構成するコンピュータまたはモバイル機器の内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム(
図2に示したクライアントアプリケーション60B、およびクライアントアプリケーション60Bによりインポートされた各種のライブラリ60Eを含む。)、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段61~68の詳細は後述する。
【0048】
また、クライアントID・クライアントシークレット記憶手段70としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。但し、クライアントIDおよびクライアントシークレットは、社員1人1人に払い出されるので、各社員は、自分が操作するクライアント端末60に搭載されるクライアントアプリケーション60Bのプログラムの中に、自分に払い出されたクライアントIDおよびクライアントシークレットを記述(コーディング)しておいてもよい。この記憶手段70の詳細は後述する。
【0049】
さらに、ログイン社員ID・パスワード記憶手段71は、各社員がログインを行った際に入力した社員IDおよびパスワードを一時的に記憶するものであるから、主メモリ(揮発性メモリ)でよいが、不揮発性メモリとしてもよい。この記憶手段71の詳細は後述する。
【0050】
バックエンドシステム80は、API実行者(各社員を含むAPI利用対象者のうちの実際にAPIを利用した者であり、人間だけではなく、システムも含む。)によるAPIリクエストに応じて各種の業務処理を実行するものであり、1台または複数台のコンピュータにより構成され、各種(
図3に示す業務α,β,γ,…)のバックエンド業務処理(例えば、顧客情報の参照対応、金融商品等に係る顧客の売買取引データの登録、更新、削除等)を実行する各種のバックエンド業務処理手段81と、これらの各種のバックエンド業務処理を実行するのに必要な各種のデータ(顧客情報、売買情報など)を記憶するバックエンド業務処理用データ記憶手段82とを備えている。
【0051】
ここで、バックエンド業務処理手段81は、バックエンドシステム80を構成するコンピュータの内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。また、バックエンド業務処理用データ記憶手段82は、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリで実現される。
【0052】
<オープンIDプロバイダシステム20/処理手段20A/ログイン処理手段21の構成>
【0053】
ログイン処理手段21は、各社員によるクライアント端末60でのログイン認証の処理を実行するものである。具体的には、ログイン処理手段21は、クライアント端末60で入力されてネットワーク1を介して送信されてくる社員IDおよびパスワード(
図2参照)を受信し、受信した社員IDに対応付けてユーザ情報記憶手段24(
図2参照)に記憶されているパスワードと、受信したパスワードとが一致するか否かにより、ログイン認証を行い、一致しない場合には、ログイン認証エラーを、ネットワーク1を介してクライアント端末60に送信する。
【0054】
<オープンIDプロバイダシステム20/処理手段20A/認可コード発行手段22の構成>
【0055】
認可コード発行手段22は、認可コード発行リクエスト送信手段63によりクライアント端末60からネットワーク1を介して送信されてくる認可コード発行リクエスト(クライアント端末60に搭載されたクライアントアプリケーション60B(
図2参照)を識別するアプリケーションIDを含む。)を受信し、クライアント端末60に対し、端末ログインに用いられた社員IDおよびパスワードの送信要求(取得要求)を、ネットワーク1を介してクライアント端末60に送信し、クライアント端末60からネットワーク1を介して送信されてくる社員IDおよびパスワードを受信し、認可コードを発行してこの認可コードを、受信した社員IDと関連付けて認可コード発行情報記憶手段26に記憶させるとともに、発行した認可コードを、ネットワーク1を介してクライアント端末60に送信する処理を実行するものである。
【0056】
<オープンIDプロバイダシステム20/処理手段20A/トークン発行手段23の構成>
【0057】
トークン発行手段23は、トークン発行リクエスト送信手段65によりクライアント端末60からネットワーク1を介して送信されてくるトークン発行リクエスト(認可コード、アプリケーションID、アプリケーション用シークレットを含む。)を受信し、受信したトークン発行リクエストに含まれるアプリケーションIDと対応付けてアプリケーション一覧記憶手段25に記憶されているアプリケーション用シークレットと、受信したトークン発行リクエストに含まれるアプリケーション用シークレットとが一致しているか否かにより、クライアントアプリケーションが正しいか否かの検証を行い、さらに、受信したトークン発行リクエストに含まれる認可コードを用いて認可コード発行情報記憶手段26から社員IDを取得し、取得した社員IDを用いてユーザ情報記憶手段24からユーザ名を取得し、取得したユーザ名を含むIDトークン、およびアクセストークンを発行し、発行したIDトークンおよびアクセストークンを、ネットワーク1を介してクライアント端末60に送信する処理を実行するものである。なお、IDトークンは、本発明で効果的に利用される本発明の特徴に係るものであるが、アクセストークンは、本発明の内容に直接関係するものではない。
【0058】
<オープンIDプロバイダシステム20/ユーザ情報記憶手段24、アプリケーション一覧記憶手段25、認可コード発行情報記憶手段26の構成>
【0059】
ユーザ情報記憶手段24は、
図2に示すように、社員を識別する社員ID(例えば、AXXXXXXX)、オープンIDプロバイダ用のユーザ名(例えば、AXXXXXXX@o365daiwa.co.jpであり、部分的に社員IDを含んでいる。)、表示名(本実施形態では、社員の氏名にしている。)、電子メールアドレス、社員が所属する会社名、従業員ID(社員IDとは異なるもの)、パスワード等を対応付けて記憶するものである。
【0060】
アプリケーション一覧記憶手段25は、
図2に示すように、クライアントアプリケーション毎に、アプリケーションIDと、アプリケーション用シークレットとを対応付けて記憶するものである。クライアントアプリケーションには、複数種類のアプリケーションX,Y,…がある。
【0061】
認可コード発行情報記憶手段26は、
図2に示すように、発行した認可コードと、社員IDとを対応付けて記憶するものである。
【0062】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/プリフロー処理手段41/URLマッチング手段41Aの構成>
【0063】
プリフロー処理手段41のURLマッチング手段41Aは、API呼出手段67によりクライアント端末60からネットワーク1を介して送信されてくるAPIリクエスト(ヘッダに、クライアントID、クライアントシークレット、IDトークンが設定されている。)を受信し、URLマッチング処理を実行するものである。
【0064】
具体的には、URLマッチング手段41Aは、受信したAPIリクエストに含まれるAPIのパス(URL)が、API社員利用カタログのパスであり、かつ、HTTPメソッドがOPTIONS以外であるという条件を満たすか否かのチェックを行う。ここで、API社員利用カタログのパスは、API社員利用カタログ記憶手段52に記憶されたデータ(
図3に示すように、製品と呼ばれている。)を使用する場合のパスであり、URLマッチング手段41Aを実現するプログラム内に記述(コーディング)されている。カタログには、API社員利用カタログ以外のカタログもあるので、そのようなカタログのパスの場合には上記の条件を満たさないことになる。また、OPTIONS以外というのは、GET、POST等のことである。
【0065】
そして、URLマッチング手段41Aは、上記の条件を満たす場合には、社員ID設定手段41Bに処理を移行させる。一方、上記の条件を満たさない場合には、リクエスト構文・サイズチェック手段41Eに処理を移行させる。
【0066】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/プリフロー処理手段41/社員ID設定手段41Bの構成>
【0067】
プリフロー処理手段41の社員ID設定手段41Bは、先ず、クライアント端末60から受信したAPIリクエストのヘッダにIDトークンが設定されていない場合には、認証エラーが発生した旨の情報を、ネットワーク1を介してクライアント端末60に送信し、次に、APIリクエストに含まれるIDトークン内のユーザ名から社員IDを切り取り(本実施形態では、
図2に示すように、@の前の部分を切り取る。)、切り取った社員IDを、APIリクエストのヘッダに設定する処理を実行するものである。
【0068】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/プリフロー処理手段41/トークン検証手段41Cの構成>
【0069】
プリフロー処理手段41のトークン検証手段41Cは、オープンIDプロバイダから受け取っている公開鍵およびパラメータ(キーID、アルゴリズム)を用いて、APIリクエストに含まれるIDトークンが、オープンIDプロバイダシステム20で発行されたものであるか否かを検証する処理(IDトークンの改ざん検知処理)を実行するものである。
【0070】
具体的には、トークン検証手段41Cは、先ず、IDトークンを、オープンIDプロバイダシステム20でのエンコードで使用されている定義(例えば、base64url)でデコードし、IDトークンのヘッダに含まれている2つのパラメータ(キーID、アルゴリズム)を、JSON形式のデータとして内容を把握できる状態にする。ここで、キーIDの値は、IDトークンのJSONウェブ署名(JWS)をセキュア化するために使用されたキーを示す。また、アルゴリズムは、署名のアルゴリズムである。なお、IDトークンには、ヘッダ、ペイロード、署名の各部がある。
【0071】
そして、トークン検証手段41Cは、パラメータ記憶手段45(
図1、
図2参照)に記憶されたキーIDおよびアルゴリズムと、APIリクエストのヘッダに含まれるIDトークン内のキーIDおよびアルゴリズム(デコードされた状態のキーIDおよびアルゴリズム)とが一致しているか否かを検証するとともに、APIリクエストのヘッダに含まれるIDトークン内の署名(デコードされた状態の署名)と、公開鍵記憶手段44(
図1、
図2参照)に記憶された公開鍵とを用いて、IDトークンがオープンIDプロバイダシステム20により発行されたものであるか否かを検証する。
【0072】
また、トークン検証手段41Cは、IDトークンがオープンIDプロバイダシステム20により発行されたものでないと判断した場合には、認証エラーが発生した旨の情報を、ネットワーク1を介してクライアント端末60に送信する。
【0073】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/プリフロー処理手段41/成りすましチェックAPI呼出手段41Dの構成:
図3>
【0074】
プリフロー処理手段41の成りすましチェックAPI呼出手段41Dは、API定義実行手段42の成りすましチェックAPI実行手段42Bとともに、本発明における「成りすましチェック手段」(請求項に記載された「成りすましチェック手段」)を構成するものである。
【0075】
具体的には、成りすましチェックAPI呼出手段41Dは、先ず、
図3に示すように、成りすましチェックAPI実行手段42Bに対し、成りすましチェックAPIの呼出処理、すなわち、成りすましチェックAPIリクエスト(ヘッダに、クライアントID、クライアントシークレット、ユーザ名から切り取った社員IDを設定する。)の送信処理を行うとともに、成りすましチェックAPI実行手段42Bから送信(返信)されてくる成りすましチェックAPI応答の受信処理を行う。この際、成りすましチェックAPIリクエストは、元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されているクライアントIDに関連付けてAPI利用対象者情報記憶手段54に記憶されているAPI利用対象者ID(社員ID)を取得するために実行する。つまり、この場合、成りすましチェックAPI実行手段42Bから返ってくる成りすましチェックAPI応答は、API利用対象者ID(社員ID)である。
【0076】
そして、成りすましチェックAPI呼出手段41Dは、元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されているクライアントIDに関連付けてAPI利用対象者情報記憶手段54に記憶されているAPI利用対象者ID(社員ID)、つまり、成りすましチェックAPI実行手段42Bから返ってきた成りすましチェックAPI応答として得られた社員IDと、元のAPIリクエストのヘッダに設定されている社員ID(社員ID設定手段41BによりIDトークン内のユーザ名から切り取った社員ID)とが一致しているか否かにより(一致していることを確認し)、API実行者が成りすましを行っていないことを検証する。
【0077】
また、成りすましチェックAPI呼出手段41Dは、API実行者が成りすましを行っていると判断した場合(一致しなかった場合)には、認証エラーが発生した旨の情報を、ネットワーク1を介してクライアント端末60に送信する。
【0078】
なお、社員IDとクライアントIDとの対応関係が、2系統で得られるが、それらの2系統で得られる対応関係が一致していることを検証できればよい。すなわち、第1の系統として、社員ID設定手段41Bにより元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されたIDトークン内のユーザ名から切り取った社員IDと、元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されたクライアントIDとの対応関係が得られる。また、第2の系統として、API利用対象者情報記憶手段54に記憶されているAPI利用対象者情報としてのAPI利用対象者ID(社員ID)と、クライアントIDとの対応関係が得られる。
【0079】
従って、成りすましチェックAPI呼出手段41Dは、成りすましチェックAPI実行手段42Bから返ってくる成りすましチェックAPI応答として、社員IDではなく、クライアントIDが得られるような、成りすましチェックAPIリクエストを行うようにしてもよい。すなわち、社員ID設定手段41Bにより元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されたIDトークン内のユーザ名から切り取った社員IDに関連付けてAPI利用対象者情報記憶手段54に記憶されているクライアントIDを取得するために、成りすましチェックAPIリクエストを行ってもよい。この場合、成りすましチェックAPI呼出手段41Dは、社員ID設定手段41Bにより元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されたIDトークン内のユーザ名から切り取った社員IDに関連付けてAPI利用対象者情報記憶手段54に記憶されているクライアントID、つまり、成りすましチェックAPI実行手段42Bから返ってきた成りすましチェックAPI応答として得られたクライアントIDと、元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されたクライアントIDとが一致しているか否かにより(一致していることを確認し)、API実行者が成りすましを行っていないことを検証することになる。
【0080】
2系統で得られる社員IDとクライアントIDとの対応関係の一致を検証すればよいので、社員IDの一致を確認するか、クライアントIDの一致を確認するかは等価である。このため、本発明における「成りすましチェック手段」(請求項に記載された「成りすましチェック手段」)では、社員IDの一致を中心とした記載表現になっているが、クライアントIDの一致を確認する場合も、本発明の請求項の記載内容に含まれる。
【0081】
また、成りすましチェックAPI呼出手段41Dと、成りすましチェックAPI実行手段42Bとの処理の分担は、以上に述べた分担内容に限定されるものではなく、例えば、以上の説明では、成りすましチェックAPI呼出手段41Dが、社員IDの一致(またはクライアントIDの一致)を検証することになっているが、成りすましチェックAPI実行手段42Bが社員IDの一致(またはクライアントIDの一致)を検証し、その検証結果(一致したか否か)を、成りすましチェックAPI応答として、成りすましチェックAPI呼出手段41Dに返すようにしてもよい。
【0082】
よって、成りすましチェックAPIリクエストのヘッダに含める情報は、上述したように、元のAPIリクエストに設定されているクライアントID、クライアントシークレット、ユーザ名から切り取った社員IDの全部としているが、成りすましチェックAPI呼出手段41Dと、成りすましチェックAPI実行手段42Bとの処理の分担の仕方によっては、一部(クライアントID、ユーザ名から切り取った社員IDのいずれか)としてもよい。
【0083】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/プリフロー処理手段41/リクエスト構文・サイズチェック手段41Eの構成>
【0084】
プリフロー処理手段41のリクエスト構文・サイズチェック手段41Eは、クライアント端末60から受け取ったAPIリクエストについての構文のチェックおよびサイズのチェックを実行するものである。
【0085】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/API定義実行手段42/業務API定義実行手段42Aの構成>
【0086】
API定義実行手段42における各種の業務API定義実行手段42Aは、リクエスト構文・サイズチェック手段41Eによる処理を経たAPIリクエストに従って、API管理サーバ50のAPI社員利用カタログ記憶手段52から、API実行者が要求している業務(
図3に示す業務α,β,γ,…のいずれか)についての業務API定義データ(ヤムルファイル)52Aを取得し、取得した業務API定義データ52Aに従って、API実行者の要求に係る業務処理(APIリクエストに設定されている。)を実行するものである。
【0087】
この際、業務API定義データ(ヤムルファイル)52Aには、
図3に示すように、業務API定義実行手段42Aにより実行される複数の処理(
図3の例では、処理1,2,3,…と記載されている。)が定義され、その中にバックエンドの業務(業務α,β,γ,…のいずれか)の業務処理の呼出が含まれているので、業務API定義実行手段42Aは、バックエンドシステム80に対し、ネットワーク1を介してAPI実行者の要求に係る業務処理の呼出を行う。これにより、
図3に示すように、バックエンド業務処理手段81による業務処理(
図1に示すバックエンド業務処理用データ記憶手段82に記憶されたデータを使用する業務処理)が実行され、その業務処理の結果として得られた情報(例えば、顧客情報等)が、バックエンド業務処理手段81により、バックエンドシステム80からネットワーク1を介してゲートウェイサーバ40のポストフロー処理手段43のAPI事後処理手段43Aに送信され、さらにAPI事後処理手段43Aにより、ネットワーク1を介してクライアント端末60に送信される。
【0088】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/API定義実行手段42/成りすましチェックAPI実行手段42Bの構成:
図3>
【0089】
API定義実行手段42の成りすましチェックAPI実行手段42Bは、プリフロー処理手段41の成りすましチェックAPI呼出手段41Dとともに、本発明における「成りすましチェック手段」(請求項に記載された「成りすましチェック手段」)を構成するものである。
【0090】
具体的には、成りすましチェックAPI実行手段42Bは、
図3に示すように、成りすましチェックAPI呼出手段41Dからの成りすましチェックAPIリクエストを受信し、API社員利用カタログ記憶手段52にヤムルファイルとして記憶された成りすましチェックAPI定義データ52Bに従った処理を実行する。この際、成りすましチェックAPI実行手段42Bは、API定義データ送信手段51(
図1参照)に対して成りすましチェックAPI定義データ52Bの取得要求を送信し、API定義データ送信手段51から送信されてくる成りすましチェックAPI定義データ52Bを受信する。受信したヤムルファイルの成りすましチェックAPI定義データ52Bには、成りすましチェックAPI実行手段42Bにより実行される複数の処理(
図3では、処理1,2,3,…と記載されている。)が定義され、その中にAPI利用対象者情の取得という処理が含まれているので、成りすましチェックAPI実行手段42Bは、API管理サーバ50にアクセスし、API利用対象者情報送信手段53(
図1参照)から送信されてくるAPI利用対象者情報(成りすましチェックAPIリクエストによる取得要求に係る社員ID若しくはクライアントID、または、社員IDおよびクライアントID)を受信し、受信したAPI利用対象者情報を、成りすましチェックAPI呼出手段41Dに送信する。
【0091】
なお、成りすましチェックAPI呼出手段41Dの説明で既に述べたように、成りすましチェックAPI実行手段42Bが社員IDの一致(またはクライアントIDの一致)を検証してもよいので、その場合には、その検証結果(一致したか否か)を、成りすましチェックAPI応答として、成りすましチェックAPI呼出手段41Dに送信することになる。
【0092】
<API基盤システム30/ゲートウェイサーバ40/処理手段40A/ポストフロー処理手段43/API事後処理手段43Aの構成>
【0093】
ポストフロー処理手段43における各種のAPI事後処理手段43Aは、バックエンドシステム80からネットワーク1を介して送信されてくる各種(業務α,β,γ,…)の業務処理(バックエンド業務処理手段81による処理)の結果として得られた情報(例えば、顧客情報等)を受信し、ネットワーク1を介してクライアント端末60に送信する処理を実行するものである。
【0094】
<API基盤システム30/ゲートウェイサーバ40/公開鍵記憶手段44、パラメータ記憶手段45の構成>
【0095】
公開鍵記憶手段44は、トークン検証手段41Cによるトークン検証処理で使用するために、オープンIDプロバイダシステム20から受け取っているオープンIDプロバイダの公開鍵を記憶するものである。
【0096】
パラメータ記憶手段45は、トークン検証手段41Cによるトークン検証処理で使用するために、オープンIDプロバイダシステム20で発行されるIDトークンで採用しているパラメータ(キーIDおよびアルゴリズムを含む。)を記憶するものである。
【0097】
<API基盤システム30/API管理サーバ50/API定義データ送信手段51、API社員利用カタログ記憶手段52の構成>
【0098】
API定義データ送信手段51(
図1参照、但し、
図2および
図3では記載を省略している。)は、API定義実行手段42の各種(業務α,β,γ,…)の業務API定義実行手段42Aからの該当する業務API定義データ(ヤムルファイル)52Aの取得要求に応じ、該当する業務API定義データ52A(API実行者である社員について用意されている業務α,β,γ,…のいずれかの業務API定義データ52A)を、API社員利用カタログ記憶手段52から取得し、業務API定義実行手段42Aに送信する処理を実行するものである。なお、APIで実行しようとしている業務(業務α,β,γ,…のいずれか)は、クライアント端末60から受け取るAPIリクエストに設定されている。また、API実行者である社員(社員A,B,…のいずれか)は、APIリクエストに設定されている社員IDで特定される。
【0099】
また、API定義データ送信手段51は、API定義実行手段42の成りすましチェックAPI実行手段42Bからの成りすましチェックAPI定義データ(ヤムルファイル)52Bの取得要求に応じ、成りすましチェックAPI定義データ52Bを、API社員利用カタログ記憶手段52から取得し、成りすましチェックAPI実行手段42Bに送信する処理も実行する。
【0100】
API社員利用カタログ記憶手段52(
図1、
図2、
図3参照)は、API利用対象者(各社員、各部署、各システム等)が利用可能な製品(API社員利用製品)と呼ばれるデータを、API利用対象者毎に記憶するものである。
図3の例では、社員A用、社員B用、J部K課用、…のAPI社員利用製品が用意されている。
【0101】
各API社員利用製品には、API利用対象者(各社員、各部署、各システム等)が利用できる業務α,β,γ,…の業務API定義データ52A、および成りすましチェックAPI定義データ52Bがあり、いずれもヤムルファイルで記憶されている。
【0102】
<API基盤システム30/API管理サーバ50/API利用対象者情報送信手段53、API利用対象者情報記憶手段54の構成>
【0103】
API利用対象者情報送信手段53(
図1参照、但し、
図2および
図3では記載を省略している。)は、API定義実行手段42の成りすましチェックAPI実行手段42BからのAPI利用対象者情報の取得要求に応じ、成りすましチェックAPI実行手段42Bから送信されてきたクライアントIDに関連付けてAPI利用対象者情報記憶手段54に記憶されているAPI利用対象者ID(社員ID)を、成りすましチェックAPI実行手段42Bに送信する処理を実行するものである。
【0104】
また、API利用対象者情報送信手段53は、成りすましチェックAPI実行手段42Bから送信されてきた社員IDに関連付けてAPI利用対象者情報記憶手段54に記憶されているクライアントIDを、成りすましチェックAPI実行手段42Bに送信する処理を実行してもよく、あるいは、成りすましチェックAPI実行手段42Bから送信されてきた社員ID若しくはクライアントIDを含む社員IDとクライアントIDとの組合せをAPI利用対象者情報記憶手段54から抽出し、抽出した社員IDとクライアントIDとの組合せ(正しい組合せ)を、成りすましチェックAPI実行手段42Bに送信する処理を実行してもよい。
【0105】
API利用対象者情報記憶手段54(
図1、
図2、
図3参照)は、API利用対象者情報として、API利用対象者ID(社員ID)と対応付けて、その社員IDの社員に払い出したクライアントIDおよびクライアントシークレットを記憶するものである。
【0106】
<クライアント端末60/処理手段60A/端末ログイン手段61の構成>
【0107】
端末ログイン手段61は、
図2に示すように、社員による端末ログインのための社員IDおよびパスワードの入力を受け付け、受け付けた社員IDおよびパスワードを、ネットワーク1を介してオープンIDプロバイダシステム20に送信する処理を実行するものである。そして、端末ログイン手段61は、オープンIDプロバイダシステム20でのログイン処理手段21による認証処理が成功した場合には、ログインに使用された社員IDおよびパスワードを、一時的にログイン社員ID・パスワード記憶手段71に記憶させる。一方、ログイン処理手段21による認証処理が失敗した場合には、オープンIDプロバイダシステム20からネットワーク1を介して送信されてくるログイン認証エラーの情報を受信し、その旨をクライアント端末60に画面表示する。
【0108】
<クライアント端末60/処理手段60A/クライアントID・クライアントシークレット入力受付手段62の構成>
【0109】
クライアントID・クライアントシークレット入力受付手段62は、クライアントアプリケーション60B(
図2参照)により実現され、社員によるクライアントIDおよびクライアントシークレットの入力を受け付け、受け付けたクライアントIDおよびクライアントシークレットを、クライアントID・クライアントシークレット記憶手段70に記憶させる。このクライアントIDおよびクライアントシークレットは、社員1人1人に対し、API基盤システム30から払い出されたものである。なお、各社員は、自分に払い出されたクライアントIDおよびクライアントシークレットを、自分が操作するクライアント端末60に搭載されるクライアントアプリケーション60Bのプログラムの中に記述(コーディイング)しておいてもよい。
【0110】
<クライアント端末60/処理手段60A/認可コード発行リクエスト送信手段63の構成>
【0111】
認可コード発行リクエスト送信手段63は、認可コード発行リクエスト用ライブラリ60Fをインポートしたクライアントアプリケーション60B(
図2参照)により実現され、社員IDおよびパスワードを用いて社員がログインしたクライアント端末60から、認可コード発行リクエスト(クライアントアプリケーション60BについてのアプリケーションIDを含む。)を、ネットワーク1を介してオープンIDプロバイダシステム20に送信する処理を実行するものである。このアプリケーションIDは、クライアントアプリケーション60Bのプログラムの中に記述されている。
【0112】
なお、本願でいうクライアントアプリケーションについてのアプリケーションIDおよびアプリケーション用シークレットは、クライアントアプリケーションを識別するために、オープンIDプロバイダシステム20で発行されたものであるが、一般的には、クライアントIDおよびクライアントシークレットとも称される。しかし、本願では、API基盤システム30から各社員に払い出したクライアントIDおよびクライアントシークレットもあることから、これらと呼び名の区別を付けて混乱を避けるために、アプリケーションIDおよびアプリケーション用シークレットと呼んでいる。
【0113】
<クライアント端末60/処理手段60A/認可コード受信手段64の構成>
【0114】
認可コード受信手段64は、認可コード発行手段22によりオープンIDプロバイダシステム20からネットワーク1を介して送信されてくる認可コードを受信する処理を実行するものである。
【0115】
<クライアント端末60/処理手段60A/トークン発行リクエスト送信手段65の構成>
【0116】
トークン発行リクエスト送信手段65は、トークン発行リクエスト用ライブラリ60Gをインポートしたクライアントアプリケーション60B(
図2参照)により実現され、認可コード受信手段64により受信した認可コード、並びに、アプリケーションIDおよびアプリケーション用シークレットを含むトークン発行リクエストを、クライアント端末60からネットワーク1を介してオープンIDプロバイダシステム20に送信する処理を実行するものである。なお、アプリケーションIDおよびアプリケーション用シークレットは、クライアントアプリケーション60Bのプログラムの中に記述されている。
【0117】
<クライアント端末60/処理手段60A/トークン受信手段66の構成>
【0118】
トークン受信手段66は、トークン発行手段23によりオープンIDプロバイダシステム20からネットワーク1を介して送信されてくるIDトークン(社員IDを部分的に含んでいるユーザ名を含む。)およびアクセストークンを受信する処理を実行するものである。
【0119】
<クライアント端末60/処理手段60A/API呼出手段67の構成>
【0120】
API呼出手段67は、API呼出用ライブラリ60Hをインポートしたクライアントアプリケーション60B(
図2参照)により実現され、クライアントID・クライアントシークレット入力受付手段62により受け付けてクライアントID・クライアントシークレット記憶手段70に記憶されているか、またはクライアントアプリケーション60B(
図2参照)のプログラム内に記述されているクライアントIDおよびクライアントシークレット、並びに、トークン受信手段66により受信したIDトークン(社員IDを部分的に含んでいるユーザ名を含む。)を含むAPIリクエストを作成し、クライアント端末60から、作成したAPIリクエストを、ネットワーク1を介してAPI基盤システム30のゲートウェイサーバ40に送信する処理を実行するものである。
【0121】
また、API呼出手段67は、ゲートウェイサーバ40からネットワーク1を介して認証エラーが発生した旨の情報が送信されてきた場合には、それを受信し、その旨をクライアント端末60に画面表示する。
【0122】
<クライアント端末60/処理手段60A/API応答受信手段68の構成>
【0123】
API応答受信手段68は、API基盤システム30のポストフロー処理手段43のAPI事後処理手段43Aからネットワーク1を介して送信されてくるAPI応答(上記のAPI呼出手段67によるAPIリクエストで要求した業務処理に係る内容を示すデータ)を受信する処理を実行するものである。
【0124】
<クライアント端末60/処理手段60A/クライアントID・クライアントシークレット記憶手段70、ログイン社員ID・パスワード記憶手段71の構成>
【0125】
クライアントID・クライアントシークレット記憶手段70は、クライアントID・クライアントシークレット入力受付手段62により社員からの入力を受け付けたクライアントIDおよびクライアントシークレットを記憶するものである。但し、クライアントIDおよびクライアントシークレットは、クライアントアプリケーション60B(
図2参照)のプログラムの中に記述(コーディング)しておいてもよい。
【0126】
ログイン社員ID・パスワード記憶手段71は、社員により端末ログイン時に使用された社員IDおよびパスワードを一時的に記憶するものである。
【0127】
<社員によるAPI実行時の成りすまし防止処理の流れ:
図4、
図5>
【0128】
このような本実施形態においては、
図4および
図5に示すように、以下のようにして、成りすまし防止システム10により、社員によるAPI実行時の成りすまし防止処理が行われる。
【0129】
図4において、先ず、API実行者である社員は、クライアント端末60で、ログインのために、社員IDおよびパスワードを入力する(ステップS1)。この入力は、端末ログイン手段61により受け付けられ、入力された社員IDおよびパスワードが、ネットワーク1を介してオープンIDプロバイダシステム20に送信される。オープンIDプロバイダシステム20では、ログイン処理手段21により、ユーザ情報記憶手段24に記憶された情報を用いてログインのための認証処理が行われる(ステップS2)。この認証結果は、ログイン処理手段21により、ネットワーク1を介してクライアント端末60に送信され、ログイン認証が成功した場合には、端末ログイン手段61により、端末ログインに使用された社員IDおよびパスワードが、ログイン社員ID・パスワード記憶手段71に一時的に記憶される。
【0130】
続いて、クライアントID・クライアントシークレット入力受付手段62により、API実行者である社員によるクライアントIDおよびクライアントシークレットの入力を受け付け、受け付けたクライアントIDおよびクライアントシークレットを、クライアントID・クライアントシークレット記憶手段70に記憶させる(ステップS3)。なお、クライアントIDおよびクライアントシークレットが、クライアントアプリケーション60B(
図2参照)のプログラム内に記述(コーディイング)されている場合は、この入力を行う必要はない。
【0131】
それから、認可コード発行リクエスト送信手段63により、クライアント端末60から、認可コード発行リクエスト(クライアントアプリケーション60B(
図2参照)についてのアプリケーションIDを含む。)を、ネットワーク1を介してオープンIDプロバイダシステム20に送信する(ステップS4)。
【0132】
オープンIDプロバイダシステム20では、認可コード発行手段22により、クライアント端末60からネットワーク1を介して送信されてくる認可コード発行リクエスト(クライアント端末60に搭載されたクライアントアプリケーション60B(
図2参照)を識別するアプリケーションIDを含む。)を受信し(ステップS5)、端末ログインに用いられた社員IDおよびパスワードの送信要求(取得要求)を、ネットワーク1を介してクライアント端末60に送信する(ステップS6)。
【0133】
クライアント端末60では、認可コード発行リクエスト送信手段63により、社員IDおよびパスワードの送信要求(取得要求)を受信し(ステップS7)、ログイン社員ID・パスワード記憶手段71に一時的に記憶されているログイン時に使用した社員IDおよびパスワードを、ネットワーク1を介してオープンIDプロバイダシステム20に送信する(ステップS8)。
【0134】
オープンIDプロバイダシステム20では、認可コード発行手段22により、社員IDおよびパスワードを受信し(ステップS9)、認可コードを発行してこの認可コードを、受信した社員IDと関連付けて認可コード発行情報記憶手段26に記憶させるとともに、発行した認可コードを、ネットワーク1を介してクライアント端末60に送信する(ステップS10)。クライアント端末60では、認可コード受信手段64により、オープンIDプロバイダシステム20から送信されてくる認可コードを受信する(ステップS11)。
【0135】
続いて、トークン発行リクエスト送信手段65により、受信した認可コード、並びに、アプリケーションIDおよびアプリケーション用シークレットを含むトークン発行リクエストを、クライアント端末60からネットワーク1を介してオープンIDプロバイダシステム20に送信する(ステップS12)。
【0136】
オープンIDプロバイダシステム20では、トークン発行手段23により、クライアント端末60から送信されてくるトークン発行リクエスト(認可コード、アプリケーションID、アプリケーション用シークレットを含む。)を受信し(ステップS13)、受信したトークン発行リクエストに含まれるアプリケーションIDと対応付けてアプリケーション一覧記憶手段25に記憶されているアプリケーション用シークレットと、受信したトークン発行リクエストに含まれるアプリケーション用シークレットとが一致しているか否かにより、クライアントアプリケーションが正しいか否かの検証を行う(ステップS14)。さらに、トークン発行手段23により、受信したトークン発行リクエストに含まれる認可コードを用いて認可コード発行情報記憶手段26から社員IDを取得し、取得した社員IDを用いてユーザ情報記憶手段24からユーザ名を取得し、取得したユーザ名を含むIDトークン、およびアクセストークンを発行し、発行したIDトークンおよびアクセストークンを、ネットワーク1を介してクライアント端末60に送信する(ステップS14)。
【0137】
クライアント端末60では、トークン受信手段66により、オープンIDプロバイダシステム20から送信されてくるIDトークン(社員IDを部分的に含んでいるユーザ名を含む。)およびアクセストークンを受信する(ステップS15)。
【0138】
その後、クライアント端末60で、API呼出手段67により、クライアントID・クライアントシークレット入力受付手段62により受け付けてクライアントID・クライアントシークレット記憶手段70に記憶されているか、またはクライアントアプリケーション60B(
図2参照)のプログラム内に記述されているクライアントIDおよびクライアントシークレット、並びに、トークン受信手段66により受信したIDトークン(社員IDを部分的に含んでいるユーザ名を含む。)を含むAPIリクエストを作成し、作成したAPIリクエストを、ネットワーク1を介してAPI基盤システム30のゲートウェイサーバ40に送信する(ステップS16)。
【0139】
API基盤システム30のゲートウェイサーバ40では、プリフロー処理手段41のURLマッチング手段41Aにより、クライアント端末60から送信されてくるAPIリクエスト(ヘッダに、クライアントID、クライアントシークレット、IDトークンが設定されている。)を受信し(
図4のステップS17)、
図15に示すURLマッチング処理を実行する。
【0140】
図15において、のURLマッチング手段41Aは、受信したAPIリクエストに含まれるAPIのパス(URL)が、API社員利用カタログのパスであり、かつ、HTTPメソッドがOPTIONS以外であるという条件を満たすか否かのチェックを行う(
図15のステップS18)。
【0141】
ここで、URLマッチング手段41Aにより上記の条件を満たすと判断した場合(ステップS19)には、社員ID設定手段41Bによる処理(ステップS20)に移行する。一方、上記の条件を満たさないと判断した場合(ステップS19)には、リクエスト構文・サイズチェック手段41Eによる処理(ステップS32)に移行する。
【0142】
そして、上記の条件を満たすと判断した場合(ステップS19)には、社員ID設定手段41Bにより、先ず、クライアント端末60から受信したAPIリクエストのヘッダにIDトークンが設定されているか否かを判断し(ステップS20)、設定されていない場合には、認証エラーが発生した旨の情報を、ネットワーク1を介してクライアント端末60に送信する(ステップS21)。クライアント端末60では、API呼出手段67により、ゲートウェイサーバ40から送信されてくる認証エラーが発生した旨の情報を受信した場合には、その旨の情報をクライアント端末60に画面表示する(ステップS22)。
【0143】
次に、受信したAPIリクエストにIDトークンが設定されていると判断した場合(ステップS20)には、社員ID設定手段41Bにより、APIリクエストに含まれるIDトークン内のユーザ名から社員IDを切り取り(本実施形態では、
図2に示すように、@の前の部分を切り取る。)、切り取った社員IDを、APIリクエストのヘッダに設定する(ステップS23)。
【0144】
続いて、トークン検証手段41Cにより、オープンIDプロバイダから受け取っている公開鍵およびパラメータ(キーID、アルゴリズム)を用いて、APIリクエストに含まれるIDトークンが、オープンIDプロバイダシステム20で発行されたものであるか否かを検証する処理(IDトークンの改ざん検知処理)を実行する(ステップS24)。
【0145】
具体的には、トークン検証手段41Cにより、IDトークンをデコードし、パラメータ記憶手段45(
図1、
図2参照)に記憶されたキーIDおよびアルゴリズムと、APIリクエストのヘッダに含まれるIDトークン内のキーIDおよびアルゴリズム(デコードされた状態のキーIDおよびアルゴリズム)とが一致しているか否かを検証する(ステップS24)。また、APIリクエストのヘッダに含まれるIDトークン内の署名(デコードされた状態の署名)と、公開鍵記憶手段44(
図1、
図2参照)に記憶された公開鍵とを用いて、IDトークンがオープンIDプロバイダシステム20により発行されたものであるか否かを検証する(ステップS24)。
【0146】
そして、トークン検証手段41Cにより、IDトークンがオープンIDプロバイダシステム20により発行されたものでないと判断した場合(ステップS25)には、認証エラーが発生した旨の情報を、ネットワーク1を介してクライアント端末60に送信する(ステップS26)。クライアント端末60では、API呼出手段67により、ゲートウェイサーバ40から送信されてくる認証エラーが発生した旨の情報を受信した場合には、その旨の情報をクライアント端末60に画面表示する(ステップS27)。
【0147】
それから、IDトークンがオープンIDプロバイダシステム20により発行されたものであると判断した場合(ステップS25)には、プリフロー処理手段41の成りすましチェックAPI呼出手段41D、およびAPI定義実行手段42の成りすましチェックAPI実行手段42Bにより、成りすましチェックAPIを実行して成りすましチェック処理を実行する(ステップS28)。これらの成りすましチェックAPI呼出手段41Dおよび成りすましチェックAPI実行手段42Bの各々の処理内容は、各々の構成の説明で既に詳述しているので、ここでは詳しい説明を省略する。
【0148】
具体的には、これらの各手段41D,42Bによる成りすましチェック処理では、元のAPIリクエスト(クライアント端末60からのAPIリクエスト)のヘッダに設定されているクライアントIDに関連付けてAPI利用対象者情報記憶手段54に記憶されているAPI利用対象者ID(社員ID)と、元のAPIリクエストのヘッダに設定されている社員ID(社員ID設定手段41BによりIDトークン内のユーザ名から切り取った社員ID)とが一致しているか否かにより(一致していることを確認し)、API実行者が成りすましを行っていないことを検証する(ステップS28)。
【0149】
また、成りすましチェックAPI呼出手段41Dにより、上記の比較検証で一致しているか否かを判断し(ステップS29)、API実行者が成りすましを行っていると判断した場合(一致しなかった場合)には、認証エラーが発生した旨の情報を、ネットワーク1を介してクライアント端末60に送信する(ステップS30)。クライアント端末60では、API呼出手段67により、ゲートウェイサーバ40から送信されてくる認証エラーが発生した旨の情報を受信した場合には、その旨の情報をクライアント端末60に画面表示する(ステップS31)。
【0150】
続いて、リクエスト構文・サイズチェック手段41Eにより、クライアント端末60から受け取ったAPIリクエストについての構文のチェックおよびサイズのチェックを実行する(ステップS32)。
【0151】
その後、API定義実行手段42の業務API定義実行手段42Aにより、API社員利用カタログ記憶手段52に記憶されている、API実行者である社員の要求に係る業務(
図3に示す業務α,β,γ,…のいずれか)の業務API定義データ(ヤムルファイル)52Aに従って、バックエンドシステム80のバックエンド業務処理手段81に対し、ネットワーク1を介して業務APIの呼出(業務APIリクエストの送信)を行い、バックエンド業務処理用データ記憶手段82(
図1参照)に記憶されたデータを用いた業務処理を実行させることにより、業務APIを実行する(ステップS33)。
【0152】
続いて、ポストフロー処理手段43のAPI事後処理手段43Aにより、バックエンドシステム80のバックエンド業務処理手段81からネットワーク1を介して送信されてくる業務API応答(バックエンド業務処理手段81による業務処理の結果として得られた情報)を受信し、受信した業務API応答(業務処理結果)を、ネットワーク1を介してクライアント端末60に送信する(ステップS33)。クライアント端末60では、API応答受信手段68により、ゲートウェイサーバ40からの業務処理結果を受信する(ステップS34)。これにより、社員による一連のAPI実行に関する処理が終了する。
【0153】
<社員Bが社員Aに成りすます不正行為を防止する処理の流れ>
【0154】
社員Bが社員Aに成りすます不正行為を行い、APIを実行した場合において、その成りすましを防止する処理の流れは、以下の通りである。
【0155】
図4のステップS1において、不正行為者である社員Bは、自分(社員B)の社員IDおよびパスワードを用いて、自分が操作するクライアント端末60にログインする。オープンIDプロバイダシステム20のログイン処理手段21によるログイン認証(
図4のステップS2)は、社員IDおよびパスワードの組合せが正しいので(社員Bの組合せとして正しいので)、成功する。
【0156】
図4のステップS3において、不正行為者である社員Bは、不正な方法で知り得た他人(社員A)のクライアントIDおよびクライアントシークレットを入力し、自分(社員B)が操作するクライアント端末60のクライアントID・クライアントシークレット記憶手段70に記憶させるか、または自分(社員B)が操作するクライアント端末60に搭載されるクライアントアプリケーション60B(
図2参照)に記述されているクライアントIDおよびクライアントシークレットを、他人(社員A)のクライアントIDおよびクライアントシークレットに書き換える。
【0157】
図4のステップS4において、認可コード発行リクエストに、アプリケーションIDを含めるが、このアプリケーションIDは、自分(社員B)が操作するクライアント端末60に搭載されるクライアントアプリケーション60BについてのアプリケーションIDである。
【0158】
図4のステップS8において、ログイン社員ID・パスワード記憶手段71に記憶されている端末ログイン時に使用した社員IDおよびパスワードが、オープンIDプロバイダシステム20に送信されるが、この社員IDおよびパスワードは、不正行為者である社員Bの社員IDおよびパスワードである。
【0159】
図4のステップS10において、発行した認可コードと、社員IDとの対応関係が、認可コード発行情報記憶手段26に記憶されるが、このときの社員IDは、不正行為者である社員Bの社員IDである。
【0160】
図4のステップS12において、トークン発行リクエストに、認可コード、アプリケーションID、アプリケーション用シークレットを含めるが、このときのアプリケーションIDおよびアプリケーション用シークレットは、不正行為者である社員Bが操作するクライアント端末60に搭載されるクライアントアプリケーション60BについてのアプリケーションIDおよびアプリケーション用シークレットである。
【0161】
図4のステップS14において、アプリケーションIDおよびアプリケーション用シークレットを用いてクライアントが正しいか否かの検証を行うが、この際、アプリケーション一覧記憶手段25に記憶されているアプリケーションIDおよびアプリケーション用シークレットの組合せを用いる。アプリケーションIDおよびアプリケーション用シークレットの組合せは、正しいので(社員Bが操作するクライアント端末60に搭載されるクライアントアプリケーション60Bについての組合せとして正しいので)、この検証で不正は検知されない。
【0162】
また、
図4のステップS14では、トークン発行リクエストに含まれる認可コード用いて認可コード発行情報記憶手段26から社員IDを取得するが、このときに取得される社員IDは、不正行為者である社員Bの社員IDである。さらに、取得した社員ID(社員Bの社員ID)を用いてユーザ情報記憶手段24からオープンIDプロバイダ用のユーザ名を取得するが、このときのユーザ名は、社員Bのユーザ名であり、社員Bの社員IDを部分的に含んでいる。そして、そのユーザ名(社員Bの社員IDを部分的に含む。)を含むIDトークンおよびアクセストークンを発行する。
【0163】
図4のステップS16において、APIリクエストのヘッダに、クライアントID、クライアントシークレット、IDトークンを設定するが、このときのクライアントIDおよびクライアントシークレットは、不正な方法で知り得た他人(社員A)のクライアントIDおよびクライアントシークレットである。また、IDトークンには、社員Bのユーザ名が含まれ、そのユーザ名には、社員Bの社員IDが部分的に含まれている。
【0164】
図5のステップS23において、APIリクエストに含まれるIDトークン内のユーザ名(社員Bのユーザ名)から社員ID(社員Bの社員ID)を切り取り、切り取った社員ID(社員Bの社員ID)を、APIリクエストのヘッダに設定する。これにより、APIリクエストのヘッダには、不正行為者である社員Bの社員IDと、不正な方法で知り得た他人(社員A)のクライアントIDおよびクライアントシークレットとが設定されている状態となる。
【0165】
図5のステップS24において、オープンIDプロバイダから受け取っている公開鍵およびパラメータ(キーID、アルゴリズム)を用いて、APIリクエストに含まれるIDトークンの検証が行われるが、不正行為者である社員Bが、IDトークンの改ざんを行っていなければ、ここでのIDトークンの改ざん検知処理では、不正は検知されない。
【0166】
図5のステップS28における成りすましチェック処理では、APIリクエストのヘッダに設定されているクライアントID(不正な方法で知り得た他人(社員A)のクライアントID)に関連付けてAPI利用対象者情報記憶手段54に記憶されているAPI利用対象者ID(社員Aの社員ID)と、APIリクエストのヘッダに設定されている社員ID(IDトークン内の社員Bのユーザ名から切り取った社員Bの社員ID)とは一致しないので、ここで初めて、成りすましが行われていると判断される。
【0167】
<本実施形態の効果>
【0168】
このような本実施形態によれば、次のような効果がある。すなわち、成りすまし防止システム10では、IDトークンの発行のための仕様であるオープンIDコネクト(OpenID Connect)の活用により、クライアントIDおよびクライアントシークレット以外の情報として、オープンIDプロバイダシステム20で発行されるIDトークンを利用してAPI実行時のクライアントIDが実行者本人のものであることのチェック(社員による成りすましチェック)を行うことができる。
【0169】
なお、オープンIDプロバイダシステム20でIDトークンを発行することは、オープンIDコネクト(OpenID Connect)の仕様に従った既存の処理であるが、発行されたIDトークンを利用して社員による成りすましの防止処理を行うことや、そのための情報をIDトークンに設定することは、本発明に固有の特徴である。
【0170】
すなわち、オープンIDプロバイダシステム20に設けられたトークン発行手段23により、クライアント端末60からのトークン発行リクエストを受信した場合に、受信したトークン発行リクエストに含まれる認可コードを用いて認可コード発行情報記憶手段26から社員IDを取得し、取得した社員IDを用いてユーザ情報記憶手段24からユーザ名(社員IDを部分的に含んで構成されるオープンIDプロバイダ用のユーザ名)を取得し、取得したユーザ名を含むIDトークンを発行し、発行したIDトークンをクライアント端末60に送信するので、IDトークン内に、成りすましが行われているか否かの検証に必要な情報を設定することができる。
【0171】
また、社員がAPIを実行する際には、自分がログインしたクライアント端末60で、API呼出手段67により、クライアントIDおよびクライアントシークレット、並びにIDトークンを含むAPIリクエストを作成し、作成したAPIリクエストを、クライアント端末60からAPI基盤システム30に送信するので、APIリクエスト内に、成りすましが行われているか否かの検証に必要な情報を設定することができる。
【0172】
さらに、API基盤システム30では、社員ID設定手段41Bにより、クライアント端末60から受信したAPIリクエストに設定されたIDトークンに含まれるオープンIDプロバイダ用のユーザ名(このユーザ名は、社員IDを部分的に含んでいる。)から社員IDを切り取り、切り取った社員IDを、APIリクエストに設定するので、APIリクエスト内に含まれる情報を、成りすましが行われているか否かの検証に使用しやすい状態に整備することができる。
【0173】
そして、API基盤システム30内で、成りすましチェック手段を構成するプリフロー処理手段41の成りすましチェックAPI呼出手段41D、およびAPI定義実行手段42の成りすましチェックAPI実行手段42Bにより、APIリクエストに設定されたクライアントIDと関連付けられてAPI利用対象者情報記憶手段54に記憶されている社員IDと、APIリクエストに設定された社員ID(オープンIDプロバイダ用のユーザ名から切り取った社員ID)とが一致しているか否かを判断し、一致していない場合に、他の社員への成りすましが行われていると判断することができる。
【0174】
このため、他の社員への成りすましを行う不正行為者である社員が、自分(不正行為者自身)の社員IDと、不正に入手した他の社員のクライアントIDおよびクライアントシークレットとを使ってAPIを実行しようとしても、成りすましチェック手段により、その不正行為が発覚することになる。つまり、APIリクエストに設定された社員IDは、端末ログインを行った不正行為者自身の社員IDであり、一方、不正に入手した他の社員のクライアントIDと関連付けられてAPI利用対象者情報記憶手段に記憶されている社員IDは、他の社員の社員IDであるから、一致しないので、成りすましの行為を見つけることができる。
【0175】
よって、不正行為者である社員が、バックエンドシステム80に記憶されている顧客情報などを不正に入手することを防止することができ、また、更新系の業務処理を行うAPIの場合は、不正行為者である社員が、データを不正に登録・更新・削除することを防止することができる。
【0176】
また、クライアントIDおよびクライアントシークレットを払い出したAPI利用対象者が増加した場合でも、成りすましを防止するための追加メンテナンスは不要である。
【0177】
また、社員ID設定手段41Bは、APIリクエストにIDトークンが設定されていない場合には、認証エラーをクライアント端末60に送信する構成とされているので、成りすましチェックAPI呼出手段41Dおよび成りすましチェックAPI実行手段42Bによる成りすましチェック処理に必要な情報が欠落していることを判断することができ、欠落している場合に、成りすましチェック処理に進む前に、不正なAPIの実行を防ぐことができる。
【0178】
さらに、成りすまし防止システム10は、トークン検証手段41Cを備えているので、IDトークンがオープンIDプロバイダシステム20により発行されたものであるか否かを検証することができるため、より一層、セキュリティ機能を向上させることができる。
【0179】
<変形の形態>
【0180】
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
【0181】
例えば、前記実施形態では、社員ID設定手段41Bは、
図2に示されたユーザ情報記憶手段24のように、オープンIDプロバイダ用のユーザ名におけるアットマークの前の部分の全部を、社員IDに相当する部分として切り取っていたが、切り取る部分(すなわち、社員IDに相当する部分)は、この位置に限定されるものではなく、ユーザ名に社員IDが含まれていてその部分を切り取るようになっていればよい。
【0182】
また、前記実施形態では、プリフロー処理手段41の成りすましチェックAPI呼出手段41Dが、API定義実行手段42の成りすましチェックAPI実行手段42Bとの間で、成りすましチェックAPIリクエストの送信、成りすましチェックAPI応答の受信を行う構成とされていたが、本発明における「成りすましチェック手段」(請求項に記載された「成りすましチェック手段」)は、このような構成に限定されるものではなく、成りすましチェックAPIを使用しない構成(プリフロー処理手段41に、成りすましチェックAPI実行手段42Bの機能を含む「成りすましチェック手段」を設ける構成)としてもよい。
【産業上の利用可能性】
【0183】
以上のように、本発明の成りすまし防止システムおよびプログラムは、例えば、各社員がクライアントアプリケーションを搭載したクライアント端末から業務APIを利用してバックエンドシステムの各種のデータにアクセスし、業務処理を行う場合等に用いるのに適している。
【符号の説明】
【0184】
1 ネットワーク
10 成りすまし防止システム
20 オープンIDプロバイダシステム
22 認可コード発行手段
23 トークン発行手段
24 ユーザ情報記憶手段
25 アプリケーション一覧記憶手段
26 認可コード発行情報記憶手段
30 API基盤システム
40 ゲートウェイサーバ
41B 社員ID設定手段
41C トークン検証手段
41D 「成りすましチェック手段」を構成する成りすましチェックAPI呼出手段
42B 「成りすましチェック手段」を構成する成りすましチェックAPI実行手段
44 公開鍵記憶手段
45 パラメータ記憶手段
50 API管理サーバ
54 API利用対象者情報記憶手段
60 クライアント端末
63 認可コード発行リクエスト送信手段
64 認可コード受信手段
65 トークン発行リクエスト送信手段
66 トークン受信手段
67 API呼出手段
80 バックエンドシステム
【要約】
【課題】社員によるAPI実行時の成りすましを防止することができる成りすまし防止システムを提供する。
【解決手段】成りすまし防止システム10では、オープンIDプロバイダシステム20で、社員IDを部分的に含んで構成されるユーザ名を含むIDトークンを発行し、クライアント端末60で、クライアントID、IDトークン等を含むAPIリクエストを作成してAPI基盤システム30に送信し、API基盤システム30で、IDトークンに含まれるユーザ名から社員IDを切り取ってこれをAPIリクエストに設定し、成りすましチェック手段(41D、42B)により、API利用対象者情報記憶手段54を用いて、APIリクエスト内のクライアントIDと社員IDとが対応しているか否かを判断する。
【選択図】
図1