(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022116431
(43)【公開日】2022-08-10
(54)【発明の名称】ライセンス管理システム、ライセンス管理方法
(51)【国際特許分類】
G06F 21/33 20130101AFI20220803BHJP
G06F 21/10 20130101ALI20220803BHJP
【FI】
G06F21/33 350
G06F21/10 350
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021012591
(22)【出願日】2021-01-29
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】519010617
【氏名又は名称】ジーエムオーグローバルサイン ピーティーイー リミテッド
(74)【代理人】
【識別番号】100085660
【弁理士】
【氏名又は名称】鈴木 均
(74)【代理人】
【識別番号】100149892
【弁理士】
【氏名又は名称】小川 弥生
(74)【代理人】
【識別番号】100185672
【弁理士】
【氏名又は名称】池田 雅人
(72)【発明者】
【氏名】杉本 浩一
(72)【発明者】
【氏名】山田 匡志
(57)【要約】
【課題】サービスに関するライセンス管理の負担を低減する。
【解決手段】サービスを実行するサービス実行サーバ50と、端末装置10に対する提供のためにサービスの実行を要求するサービス提供サーバ40と、サービスの提供に係るライセンス情報を管理するライセンス管理部30と、を備え、サービス提供サーバ40は、ライセンス管理部30が管理するライセンス情報を含むアクセストークンをサービス実行サーバ50に提示することにより、サービスの実行を要求し、サービス実行サーバ50は、アクセストークンを提示してサービスの提供を要求したサービス提供サーバ40に対してサービスを提供する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
サービスの提供を行うサービス提供部と、
前記サービスの提供を要求するサービス要求部と、
前記サービスの提供に係るライセンスを管理するライセンス管理部と、
を備え、
前記サービス要求部は、ライセンスと関連するアクセストークンを前記サービス提供部に提示することにより、前記サービスの提供を要求し、
前記サービス提供部は、前記アクセストークンを提示して前記サービスの提供を要求した前記サービス要求部に対して、前記サービスを提供する、
ことを特徴とするライセンス管理システム。
【請求項2】
前記サービスは、タイムスタンプの提供に関するサービスであり、
前記サービス提供部は、前記アクセストークンを提示してタイムスタンプの提供を要求した前記サービス要求部に対して前記サービスを提供する、
ことを特徴とする請求項1に記載のライセンス管理システム。
【請求項3】
前記サービスは、電子署名の提供に関するサービスであり、
前記サービス提供部は、前記アクセストークンを提示して電子署名の提供を要求した前記サービス要求部に対して前記サービスを提供する、
ことを特徴とする請求項1に記載のライセンス管理システム。
【請求項4】
前記ライセンス管理部は、前記サービスを利用する利用者の認証情報と、前記利用者に対して登録されたライセンスと、を関連づけて管理しており、
前記利用者に対して登録されたライセンスを前記ライセンス管理部に確認し、前記アクセストークンを発行するライセンス確認部をさらに備え、
前記ライセンス確認部は、前記利用者の端末装置による認証要求に対して前記利用者の認証を行い、前記認証が成功した場合、前記利用者のライセンスに基づく前記アクセストークンを発行する、
ことを特徴とする請求項1乃至3の何れか一項に記載のライセンス管理システム。
【請求項5】
前記サービス提供部は、前記アクセストークンに応じたライセンスを、前記ライセンス管理部との間で同期して保持することを特徴とする請求項1乃至4の何れか一項に記載のライセンス管理システム。
【請求項6】
サービスの提供を行うサービス提供部と、前記サービスの提供を要求するサービス要求部と、前記サービスの提供に係るライセンスを管理するライセンス管理部と、を備えるライセンス管理システムのライセンス管理方法であって、
前記サービス要求部が、ライセンスと関連するアクセストークンを前記サービス提供部に提示することにより、前記サービスの提供を要求するステップと、
前記サービス提供部が、前記アクセストークンを提示して前記サービスの提供を要求した前記サービス要求部に対して、前記サービスを提供するステップと、
を含むことを特徴とするライセンス管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ライセンス管理システム、ライセンス管理方法に係り、特に、一般的なサービスにて使用される、ライセンス管理を目的としたアクセストークンの使用に関する。
【背景技術】
【0002】
近年、世界的にインターネットが普及し、インターネット上で様々なサービスが展開されている。インターネット上のサービスは、無料で利用可能なもの、有料のもの、様々であるが、特に有料サービスにおいては、サービス利用ユーザに対し、ライセンス登録を前提とし、サービスを受けるためには、事前に登録した、ライセンスを提示することを要求するシステムが多く存在する。ライセンスの提示やチェックの方法は様々で、一般的には、サービスを提供するベンダーが独自のAPIを提供し、サービスを受けるクライアントはベンダーの提供する独自のAPIを実装しなければならない。
一方で、インターネット上で利用される認証・認可の仕組みは、ID/パスワードによる基本認証や、HTTPSによるクライアント認証など、従来より標準化されているものも多く、独自のAPIを実装しなくても利用可能なサービスが多く存在する。さらに、最近のテクノロジーとして、認証・認可をシステム連携する仕組みも普及してきており、特に、HTTPプロトコル上で簡易に実現できるOAuth2と呼ばれる技術も標準化されて利用されるようになってきた。
OAuth2を用いると、ユーザは、認可サーバに、ID/パスワード等の認証情報を提供することになる。サービスプロバイダは、ユーザに対し、個々の認証情報を要求する必要はなく、認可サーバから与えられた情報に基づいて、保護されたリソースへのアクセスができるようになる。
すなわち、OAuth2では、保護されたリソースへのアクセス制御に対する認証・認可を認可サーバに委ね、認可サーバから提供された認可済み情報を元に作成されたトークン(アクセストークンと呼ぶ)を提示することによって、サービスプロバイダは保護されたリソースにアクセスできる。
このように、OAuth2は認証済み情報を元に作成されたトークンをシステム間で連携することによりSSO(シングルサインオン)を実現する(特許文献1参照)。
先に述べたように、一般的にはライセンス管理はサービスプロバイダごとに提供される。認証後、アプリケーションレベルでのライセンス管理する、という実装が主である。
ライセンスとはサービスを使用するうえで必要な概念であり、ライセンスを提示することによりサービスプロバイダはサービスを提供することが可能になる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、ライセンスはサービスプロバイダのシステムと密になっており、例えば外部のアプライアンスを用いた場合などは、既存のライセンス管理の仕組みとアプライアンスの仕様により、連携がうまくとれず管理が煩雑になるという問題がある。
本来しかるべきプロトコルやAPI(アプリケーション・プログラミング・インターフェース)の仕様を阻害するような実装、または開発者、利用者に負荷をかけるといったサービスが多々あるのが現状である。
本発明は上記の問題点を解決するために発明されたものであり、アクセストークンを用いてラインセンス管理を行うことにより、利用者や開発者の負担の軽減及びライセンス管理の煩雑さを解決すること目的とする
【課題を解決するための手段】
【0005】
上記の課題を解決するために、本発明は、サービスの提供を行うサービス提供部と、前記サービスの提供を要求するサービス要求部と、前記サービスの提供に係るライセンスを管理するライセンス管理部と、を備え、前記サービス要求部は、ライセンスと関連するアクセストークンを前記サービス提供部に提示することにより、前記サービスの提供を要求し、前記サービス提供部は、前記アクセストークンを提示して前記サービスの提供を要求した前記サービス要求部に対して、前記サービスを提供する、ライセンス管理システムを特徴とする。
【発明の効果】
【0006】
上記のように構成することにより、ライセンスに応じたサービスの提供を行うにあたりライセンス情報が連携されたアクセストークンを提示することにより、利用者、開発者の負荷を軽減可能なライセンス管理を実現することができる。
【図面の簡単な説明】
【0007】
【
図1】本実施形態のシステム構成を説明する図である。
【
図4】ライセンス管理サーバの機能構成を説明する図である。
【
図5】サービス提供サーバの機能構成を説明する図である。
【
図6】サービス実行サーバの機能構成を説明する図である。
【
図7】本実施形態のサービス提供処理を説明するシーケンス図である。
【
図8】
図7の処理に先立って行われる装置間の事前登録処理を説明する図である。
【
図9】タイムスタンプサーバの機能構成を示す図である。
【
図10】本実施形態のタイムスタンプ提供処理を説明するシーケンス図である。
【
図11】タイムスタンプサービスに関するアクセストークンを示す図である。
【
図12】タイムスタンプサービスに関してライセンス管理サーバが備えるライセンス管理データベースを示す図である。
【
図13】電子署名サーバの機能構成を示す図である。
【
図14】本実施形態の電子署名提供処理を説明するシーケンス図である。
【発明を実施するための形態】
【0008】
以下に、図面を参照して本発明の実施の形態を詳細に説明する。
本実施形態の説明に先立ち、前提技術を説明する
[OAuth2.0]
ここでは、RFC6749で述べられているOAuth2.0の認可グラントが認可コードである例を説明する。
OAuth2.0における認可コード処理においては、認可サーバが、クライアント、端末装置を仲介し、認可サーバが直接端末装置に対し認証を要求する。
クライアントはあらかじめscopeと呼ばれる権限の範囲を認可サーバにリクエストする。端末装置と認可サーバとの間での認証が成功すると、クライアントは、権限に応じた情報をリソースサーバーから(一般的にはAPIを通じて)取得することが可能になる。
なお権限については、複数の指定をすることが可能である。
【0009】
ここで必要となる情報がアクセストークンである。アクセストークンは、認可サーバより提供される認可コードを認可サーバに提示することによって得ることができる。即ち、利用者と認可サーバ間の認証が成功した際に、認可サーバより認可コードが与えられ、クライアントは認可コードを認可サーバに提供することによって、アクセストークンを得る。
クライアントにはクライアントタイプという定義が存在し、クライアントタイプにはコンフィデンシャルとパブリックがある。
クライアントタイプがコンフィデンシャルの場合には、クライアントが認可コードを認可サーバに送信する際にシークレット情報が用いられ、クライアントタイプがパブリックの場合よりもセキュアである。しかしJavascriptなど、フロントエンドのみで完結する場合には、パブリックのクライアントタイプが用いられることが多い。
【0010】
OAuth2.0は通常、利用者の特定情報をアクセストークンに保持しシステム連携を図るものだが、アクセストークンの検証自体には複数の方法が用いられる。
例として挙げられるのがRFC7519にて規定されているJWTという方法である。RFC7519にはRFC7517に記載のあるJWK、RFC7515のJWS、とRFC7516JWEという方法も記載され、デジタル署名、MAC計算を使用、エンコーディングを暗号化などの違いが存在する。
【0011】
[ライセンス管理サーバ]
ライセンス管理サーバは、顧客ごとにどの商材の何の項目がいくつあるかというデータの保持、更新などを行い、決済と結びつけるために存在する。ここでは便宜的にライセンス管理サーバとしているが、多数の別の呼称があるためここでは割愛する。
ライセンス管理サーバは一般的なサービスにおいて企業ごとに独自の形態が存在しており、サービス間の連携の際には都度特別なインターフェースを要求することが多い。また外部システムとの連携の際には特にデータのフォーマットの違いなどにより連携をしづらいものである。
本実施形態のシステムでは、OAuth2.0を使用したアクセストークンとライセンス管理サーバが提供するライセンスデータとを紐づけることにより、ライセンス情報の相互運用性を向上し、利用者、開発者の負担を軽減することが出来る。
【0012】
以下に本実施形態を詳細に説明する。
図1は、本実施形態のシステム構成を説明する図である。
図1に示すように、本実施形態のシステム1は、端末装置10と、認可サーバ20と、ライセンス管理サーバ30と、サービス提供サーバ40と、サービス実行サーバ50と、を備えている。
端末装置10は、タイムスタンプや電子署名などのサービスを利用する利用者が用いる一般的なPCやスマートフォンである。
サービス提供サーバ40は、上記に説明したOAuth2.0のクライアントに該当し、サービス実行サーバ50からサービスの提供をうける端末装置10が最初にアクセスするフロントエンドとなる。端末装置10は、後述するサービス実行サーバ50によるタイムスタンプや電子署名などのサービスを、サービス実行サーバ50ではなくサービス提供サーバ40に対して要求する。
【0013】
サービス実行サーバ50は、タイムスタンプや電子署名などのサービスを実行し、サービス実行結果を、サービス提供サーバ40に供給する。
ライセンス管理サーバ30は、端末装置10又はその利用者と、サービス種別や、ライセンスID、登録済ライセンス数を関連付けたライセンスデータを、ライセンス管理データベースで管理している。
認可サーバ20は、サービス提供サーバ40の要求を受けて端末装置10を認証し、認証が成功したときに、認可コードを端末装置10に供給する。端末装置10は認可コードをサービス提供サーバ40に提供する。サービス提供サーバ40は端末装置10から提供された認可コードを認可サーバ20に送ることによって、認可サーバ20よりアクセストークン(Access token)を得ようとする。
認可サーバ20は、ライセンス管理サーバ30に対してライセンス確認を行い、ライセンスデータに基づいてアクセストークンを発行する。
サービス提供サーバ40が、アクセストークンを提示してサービス実行装置50にサービス要求を行うと、サービス実行サーバ50は、提示されたアクセストークンに応じてサービスを実行し、サービス実行結果をサービス提供サーバ40に返却するとともに、ライセンスサーバに対して、ライセンス情報を更新する。
【0014】
図1では、ライセンス管理サーバ30と認可サーバ20とは分離した構成として説明しているが、それに限らず一つのサーバとして統合されてもよい。この場合、ライセンス管理サーバ30が、ライセンス管理のみならず端末装置10又はその利用者の認証及びアクセストークンの発行までを行うということである。
以下では、ライセンス管理サーバ30と認可サーバ20の機能を個別に説明していくが、一つのサーバとして構成される場合、ライセンス管理サーバ30が、下記に説明する認可サーバ20の各制御部を備え、各制御部の処理を実行するものとする。
【0015】
端末装置10と、認可サーバ20と、ライセンス管理サーバ30と、サービス提供サーバ40と、サービス実行サーバ50と、はいずれもインターネットに接続され、互いに通信可能に構成されている。
これらの装置、システム間でやり取りされるデータの類は、おもにHTTPリクエストやHTTPレスポンスのパラメータとして(HTTPプロトコルを利用して)送受信される。ただし、セキュリティ確保が必要な部分においては、通信自体を、HTTPSやVPNを利用するなどして保護する。
【0016】
図2は、端末装置の機能構成を説明する図であり、(a)はハードウェアによる機能構成を示し、(b)はソフトウェアによる機能構成を示している。
図2(a)に示すように、端末装置10は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、端末装置10の機能を実現するプログラムを実行するCPU(Central Processing Unit)101と、CPU101による処理のために各種のプログラムや一時データ、変数が展開されるRAM(Random Access Memory)102と、プログラムやデータが格納されるHDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置103や不図示のROM(Read Only Memory)と、を備えている。
端末装置10は、ネットワークI/F104を備え、インターネットに接続可能である。端末装置10は、表示装置106を備え、各種の情報を表示する。
【0017】
CPU101は、端末装置10が備えて制御部を実現する制御回路の一例であり、制御回路としては、その他にマルチコアCPU、FPGA(Field Programmable Gate Array)、PLD(Programmable Logic Device)などのプロセッサを適用することが出来る。
記憶装置103として代表的なものはHDDである。HDDは、内蔵するハードディスク(Hard Disk)を駆動するドライブ装置であり、HDDは記憶媒体としてのハードディスクに格納されたプログラムやデータを読み出し、またハードディスクにデータを書き込む。
【0018】
また、端末装置10は、FD(Floppy Disk)、CD(Compact Disc)やDVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disk)などの光学ディスク、フラッシュメモリなどの着脱可能な記憶媒体107に対してプログラムやデータを読み書きする読書装置105を備えてもよい。
読書装置105は、FDD(Floppy Disk Drive)、CDD(Compact Disc Drive)、DVDD(Digital Versatile Disc Drive)、BDD(Blu-ray(登録商標) Disk Drive)、USB(Universal Serial Bus)などである。
CPU101、RAM102、記憶装置103、ネットワークI/F104、読書装置105は例えば内部バスを介して接続されている。
【0019】
図2(b)に示すように、端末装置10は、制御部10Aとして、サービス要求部11、認証部12、サービスデータ取得部13、ライセンス登録部14、認証情報登録部15と、を備える。
これらの処理部は、端末装置10の制御部10Aの機能を実現するプログラムであり、当該プログラムは、記憶装置103に含まれるハードディスクや記憶媒体107に格納され得る。プログラムは、記憶装置103や読書装置105によって記憶装置103や記憶媒体107からRAM102に読み出されてCPU101によって実行される。記憶装置103やRAM102は、端末装置10の記憶部10Bを構成する。
【0020】
サービス要求部11は、サービス提供サーバ40にアクセスし、サービス実行サーバ50に対してサービス実行を要求する処理を行う。
認証部12は、認可サーバ20に対し、端末装置10又はその利用者の認証を行う。
サービスデータ取得部13は、サービス提供サーバ40からサービスデータを取得する処理を行う。サービスデータとは、サービス実行サーバ50で実行されたサービスの結果データ(下記に説明する、タイムスタンプや電子署名)である。
ライセンス登録部14は、ライセンス管理サーバ30に対してライセンス情報(サービス種別やライセンスIDなど)を登録する処理を行う。
認証情報登録部15は、認可サーバ20に対して認証情報を登録する処理を行う。
【0021】
図3は、認可サーバの機能構成を説明する図であり、(a)はハードウェアによる機能構成を示し、(b)はソフトウェアによる機能構成を示している。
図3(a)に示すように、認可サーバ20は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、認可サーバ20の機能を実現するプログラムを実行するCPU111と、CPU111による処理のために各種のプログラムや一時データ、変数が展開されるRAM112と、プログラムやデータが格納されるHDDやSSDなどの記憶装置113や不図示のROMと、を備えている。
認可サーバ20は、ネットワークI/F114を備え、インターネットに接続可能である。認可サーバ20は、表示装置116を備え、各種の情報を表示する。
【0022】
CPU111は、認可サーバ20が備えて制御部を実現する制御回路の一例であり、制御回路としては、その他にマルチコアCPU、FPGA、PLDなどのプロセッサを適用することが出来る。
記憶装置113として代表的なものはHDDである。HDDは、内蔵するハードディスクを駆動するドライブ装置であり、HDDは記憶媒体としてのハードディスクに格納されたプログラムやデータを読み出し、またハードディスクにデータを書き込む。
【0023】
また、認可サーバ20は、FD、CDやDVD、BDなどの光学ディスク、フラッシュメモリなどの着脱可能な記憶媒体117に対してプログラムやデータを読み書きする読書装置115を備えてもよい。
読書装置115は、FDD、CDD、DVDD、BDD、USBなどである。
CPU111、RAM112、記憶装置113、ネットワークI/F114、読書装置115は例えば内部バスを介して接続されている。
【0024】
図3(b)に示すように、認可サーバ20は、制御部20Aとして、認可要求受付部21と、認可コード発行部22と、トークン要求受付部23と、トークン発行部24、端末装置登録部25と、を備える。
これらの処理部は、認可サーバ20の制御部20Aの機能を実現するプログラムであり、当該プログラムは、記憶装置113に含まれるハードディスクや記憶媒体117に格納され得る。プログラムは、記憶装置113や読書装置115によって記憶装置113や記憶媒体117からRAM112に読み出されてCPU111によって実行される。
記憶装置113やRAM112は、認可サーバ20の記憶部20Bを構成する。
【0025】
認可要求受付部21は、認証画面を端末装置10に対して提示する処理を行う。
認可コード発行部22は、サービス提供サーバ40に対して(端末装置10を経由して)認可コードを発行する処理を行う。
トークン要求受付部23は、アクセストークン要求を受け付け、認証した端末装置10のライセンス情報をライセンス管理サーバ30に対して要求する処理を行う。
トークン発行部24は、ライセンス管理サーバ30から取得したライセンス情報を付与したアクセストークンを発行し、サービス提供サーバ40に対して送信する処理を行う。
端末装置登録部25は、端末装置10から認証情報を受け付けてデータベースに登録する処理を行う。
【0026】
図4は、ライセンス管理サーバの機能構成を説明する図であり、(a)はハードウェアによる機能構成を示し、(b)はソフトウェアによる機能構成を示している。
図4(a)に示すように、ライセンス管理サーバ30は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、ライセンス管理サーバ30の機能を実現するプログラムを実行するCPU121と、CPU121による処理のために各種のプログラムや一時データ、変数が展開されるRAM122と、プログラムやデータが格納されるHDDやSSDなどの記憶装置123や不図示のROMと、を備えている。
ライセンス管理サーバ30は、ネットワークI/F124を備え、インターネットに接続可能である。ライセンス管理サーバ30は、表示装置126を備え、各種の情報を表示する。
【0027】
CPU121は、ライセンス管理サーバ30が備えて制御部を実現する制御回路の一例であり、制御回路としては、その他にマルチコアCPU、FPGA、PLDなどのプロセッサを適用することが出来る。
記憶装置123として代表的なものはHDDである。HDDは、内蔵するハードディスクを駆動するドライブ装置であり、HDDは記憶媒体としてのハードディスクに格納されたプログラムやデータを読み出し、またハードディスクにデータを書き込む。
【0028】
また、ライセンス管理サーバ30は、FD、CDやDVD、BDなどの光学ディスク、フラッシュメモリなどの着脱可能な記憶媒体127に対してプログラムやデータを読み書きする読書装置125を備えてもよい。
読書装置125は、FDD、CDD、DVDD、BDD、USBなどである。
CPU121、RAM122、記憶装置123、ネットワークI/F124、読書装置125は例えば内部バスを介して接続されている。
【0029】
図4(b)に示すように、ライセンス管理サーバ30は、制御部30Aとして、端末装置検索部31と、ライセンス検索部32と、ライセンス発行部33と、ライセンス同期部34と、ライセンス登録部35と、を備える。
これらの処理部は、ライセンス管理サーバ30の制御部30Aの機能を実現するプログラムであり、当該プログラムは、記憶装置123に含まれるハードディスクや記憶媒体127に格納され得る。プログラムは、記憶装置123や読書装置125によって記憶装置123や記憶媒体127からRAM122に読み出されてCPU121によって実行される。記憶装置123やRAM122は、ライセンス管理サーバ30の記憶部30Bを構成する。記憶部30Bは、ライセンス管理データベース80を格納する。
【0030】
端末装置検索部31は、認可サーバ20よるライセンス要求を受けてライセンス管理データベースを検索し、端末装置10又はその利用者を特定する処理を行う。
ライセンス検索部32は、特定された端末装置についてライセンス管理データベースを検索し、端末装置に対して登録されているライセンス情報(サービス種別やライセンスIDなど)を検索する処理を行う。
ライセンス発行部33は、検索の結果特定されたライセンス情報(サービス種別やライセンスIDなど)を認可サーバ20に送信する。
ライセンス同期部34は、サービス実行サーバ50によるライセンス同期要求を受けて、ライセンス管理データベースの更新情報をサービス実行サーバ50に提供する(ライセンス管理データベースの内容をサービス実行サーバ50と同期する)。
ライセンス登録部35は、端末装置10などからライセンス情報(サービス種別やライセンスIDなど)を受け付け、ライセンス管理データベースに登録する処理を行う。
【0031】
図5は、サービス提供サーバの機能構成を説明する図であり(a)はハードウェアによる機能構成を示し、(b)はソフトウェアによる機能構成を示している。
図5(a)に示すように、サービス提供サーバ40は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、サービス提供サーバ40の機能を実現するプログラムを実行するCPU131と、CPU131による処理のために各種のプログラムや一時データ、変数が展開されるRAM132と、プログラムやデータが格納されるHDDやSSDなどの記憶装置133や不図示のROMと、を備えている。
サービス提供サーバ40は、ネットワークI/F134を備え、インターネットに接続可能である。サービス提供サーバ40は、表示装置136を備え、各種の情報を表示する。
【0032】
CPU131は、サービス提供サーバ40が備えて制御部を実現する制御回路の一例であり、制御回路としては、その他にマルチコアCPU、FPGA、PLDなどのプロセッサを適用することが出来る。
記憶装置133として代表的なものはHDDである。HDDは、内蔵するハードディスクを駆動するドライブ装置であり、HDDは記憶媒体としてのハードディスクに格納されたプログラムやデータを読み出し、またハードディスクにデータを書き込む。
【0033】
また、サービス提供サーバ40は、FD、CDやDVD、BD)などの光学ディスク、フラッシュメモリなどの着脱可能な記憶媒体137に対してプログラムやデータを読み書きする読書装置135を備えてもよい。
読書装置135は、FDD、CDD、DVDD、BDD、USBなどである。
CPU131、RAM132、記憶装置133、ネットワークI/F134、読書装置135は例えば内部バスを介して接続されている。
図5(b)に示すように、サービス提供サーバ40は、制御部40Aとして、サービス要求受付部41と、リダイレクト部42と、認可コード取得部43と、トークン要求部44と、サービス要求部45と、サービス応答部46と、を備える。
これらの処理部は、サービス提供サーバ40の制御部40Aの機能を実現するプログラムであり、当該プログラムは、記憶装置133に含まれるハードディスクや記憶媒体137に格納され得る。プログラムは、記憶装置133や読書装置135によって記憶装置133や記憶媒体137からRAM132に読み出されてCPU131によって実行される。
記憶装置133やRAM132は、サービス提供サーバ40の記憶部40Bを構成する。
【0034】
サービス要求受付部41は、端末装置10によるサービス実行サーバ50対するサービス実行要求を受け付ける処理を行う。
リダイレクト部42は、端末装置10によるサービス実行要求を認可サーバ20にリダイレクトする処理を行う。
認可コード取得部43は、認可サーバ20による認証が成功した場合に(端末装置10を経由して)認可サーバ20により発行された認可コードを取得する。
【0035】
トークン要求部44は、取得した認可コードに基づいて、アクセストークン要求を認可サーバ20に送信し、認可サーバ20からライセンス情報を含むアクセストークンを取得する処理を行う。
サービス要求部45は、アクセストークンを用いて、サービス実行サーバ50に対してサービス実行要求を行う。
サービス応答部46は、サービス実行サーバ50からサービス応答(サービス実行結果)を取得し、端末装置10に送信する処理を行う。
【0036】
図6は、サービス実行サーバの機能構成を説明する図であり、(a)はハードウェアによる機能構成を示し、(b)はソフトウェアによる機能構成を示している。
図6(a)に示すように、サービス実行サーバ50は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、サービス実行サーバ50の機能を実現するプログラムを実行するCPU141と、CPU141による処理のために各種のプログラムや一時データ、変数が展開されるRAM142と、プログラムやデータが格納されるHDDやSSDなどの記憶装置143や不図示のROMと、を備えている。
サービス実行サーバ50は、ネットワークI/F144を備え、インターネットに接続可能である。サービス実行サーバ50は、表示装置146を備え、各種の情報を表示する。
【0037】
CPU141は、サービス実行サーバ50が備えて制御部を実現する制御回路の一例であり、制御回路としては、その他にマルチコアCPU、FPGA、PLDなどのプロセッサを適用することが出来る。
記憶装置143として代表的なものはHDDである。HDDは、内蔵するハードディスクを駆動するドライブ装置であり、HDDは記憶媒体としてのハードディスクに格納されたプログラムやデータを読み出し、またハードディスクにデータを書き込む。
【0038】
また、サービス実行サーバ50は、FD、CDやDVD、BDなどの光学ディスク、フラッシュメモリなどの着脱可能な記憶媒体147に対してプログラムやデータを読み書きする読書装置145を備えてもよい。
読書装置145は、FDD、CDD、DVDD、BDD、USBなどである。
CPU141、RAM142、記憶装置143、ネットワークI/F144、読書装置145は例えば内部バスを介して接続されている。
図6(b)に示すように、サービス実行サーバ50は、制御部60Aとして、トークン検証部51と、サービス要求受付部52と、サービス実行部53と、サービス応答部54と、ライセンス同期部55と、を備えている。
これらの処理部は、サービス実行サーバ50の制御部50Aの機能を実現するプログラムであり、当該プログラムは、記憶装置143に含まれるハードディスクや記憶媒体147に格納され得る。プログラムは、記憶装置143や読書装置145によって記憶装置143や記憶媒体147からRAM142に読み出されてCPU141によって実行される。記憶装置143やRAM142は、サービス実行サーバ50の記憶部50Bを構成する。
【0039】
トークン検証部51は、サービス提供サーバ40から送信されたアクセストークンを検証する処理を行う。
サービス要求受付部52は、サービス提供サーバ40からのサービス要求を受け付け、検証する処理を行う。
サービス実行部53は、タイムスタンプや電子署名など要求されたサービスを実際に実行する処理を行う。
サービス応答部54は、サービス実行結果をサービス提供サーバ40に返却する処理を行う。
ライセンス同期部55は、ライセンス管理サーバ30に対してライセンスデータの同期要求を行う。
【0040】
上記の構成を示す各装置による本実施形態の処理を概説する。
端末装置10が、サービス要求部11により、サービス提供サーバ40にアクセスし、サービス実行を要求すると、サービス提供サーバ40は、サービス要求受付部41によりサービス要求を受け付け、リダイレクト部42により認可サーバ20にアクセスをリダイレクトする。
認可サーバ20は、認可要求受付部21により、認証画面を端末装置10に対して提示する。
端末装置10において、事前に認可サーバ20に対して登録した認証情報を認証画面に入力すると、認証部12により、認可サーバ20に対し認証を行うことができる。
認証が成功した場合、認可サーバ20は認可コード発行部22により、サービス提供サーバ40に対して(端末装置10を経由して)認可コードを発行する。
サービス提供サーバ40は、認可コード取得部43により受信した認可コードを、トークン要求部44によって認可サーバ20に対し送信する。
事前に取得しているクライアントID及びクライアントシークレットを用いることで認証を行い、サービス提供サーバ40は、認可サーバ20からアクセストークンを受信することができる。
【0041】
認可サーバ20は、アクセストークンを発行する前にトークン要求受付部23により、ライセンス管理サーバ30と通信を行い、認証した端末装置10のライセンス情報をトークン発行部24によりアクセストークンに付与する。
その際、ライセンス管理サーバ30は、認可サーバ20から送られてくるライセンス要求を受け、端末装置検索部31及びライセンス検索部32により、端末装置10に関するライセンスデータの特定を行い、ライセンス発行部33により、正規のライセンスを有することを示すライセンス情報(サービス種別やライセンスIDなど)を出力して認可サーバ20に送信する。
認可サーバ20は、ライセンス情報(サービス種別やライセンスIDなど)をアクセストークンに付与する。ライセンス情報のアクセストークンへの付与の方法は上記以外にも存在するが、例としてアクセストークン中に付与する方法として説明をしていく。
【0042】
サービス提供サーバ40は、ライセンス情報(サービス種別やライセンスIDなど)を含むアクセストークンを認可サーバ20より受け、受信したアクセストークンを用いて、サービス要求部によってサービス実行サーバ50に対してサービス実行要求を行う。
サービス実行サーバ50はOAuth2.0のリソースサーバーという位置づけであり、アクセストークンの検証を行わなければならない。
【0043】
一般的にアクセストークンの検証において用いられる手法としては公開鍵認証方式がとられるケースが多い。
事前に認可サーバ20にて秘密鍵と公開鍵のペアの生成を行いサービス実行サーバ50は公開鍵を保持し、ハッシュ値の計算と暗号化処理を行うことで安全なアクセストークンであることを証明することができる。この処理はトークン検証部51により実行される。
アクセストークンに使用される認証方式には複数あるが、ここでは公開鍵認証のみの説明とする。
【0044】
公開鍵認証にてアクセストークンの検証に成功したサービス実行サーバ50は、アクセストークンに含まれるライセンス情報(サービス種別やライセンスIDなど)の確認を行う。
ライセンス管理サーバ30とサービス実行サーバ50との間の同期処理により、事前に登録している範囲にて、ライセンスの種類、属性が共有されている。サービス実行サーバ50は、端末装置10のライセンス情報をデータベースまたはストレージ、テンポラリ領域に一時的に保管をしている。
事前に付与されているライセンスデータを元に、サービス実行サーバ50は、サービス実行部53によりアクセストークンの範囲でサービスを実行し、実行結果をサービス応答部54によりサービス提供サーバ40へ返却する。
【0045】
サービス実行サーバ50より戻り値(実行結果)を受信したサービス提供サーバ40は、サービス応答部46により、データの加工、処理等を行い、最終結果を端末装置10に返却する。
端末装置10はサービスデータ取得部13により、サービス提供サーバ40からサービスデータを取得する処理を行い、ライセンス管理がされたサービス提供の一連の流れが完結する。
【0046】
ライセンス情報は、基本的にはサービス実行サーバ50とライセンス管理サーバ30との間で分離しているので、サービス実行サーバ50とライセンス管理サーバ30との間で、別途、定期的なライセンスデータの同期処理を行うことでライセンスデータの整合性を担保する必要がある。
サービス実行サーバ50は、ライセンス管理サーバ30に定期的にライセンスデータの同期を要求し、ライセンス管理サーバ30がライセンス管理データベースで管理するライセンスデータ(サービス種別やライセンスIDなど)を提供される。
ライセンス管理サーバ30は、ライセンス登録時にサービス実行サーバ50から同期要求があると、正しいライセンスデータ(サービス種別やライセンスIDなど)がサービス実行サーバ50にいかない場合があるので、同期中にはライセンス登録を受け付けないか、ライセンス登録中には同期要求を受けないようにする(排他処理)ことが望ましい。
この処理は、サービス実行サーバ50のライセンス同期部55によりライセンスデータの同期要求が発行され、ライセンス管理サーバ30のライセンス同期部34により更新処理(ライセンス管理データベースで管理するライセンスデータの新規差分の送信など)が行われる。
【0047】
図7は、本実施形態のサービス提供処理を説明するシーケンス図である。
シングルサインオンの技術において、認可サーバ20は、認証情報を提供するIdentity Provider(IdP)であり、サービス提供サーバ40は、認証情報を利用するService Provider(SP)である。
ステップS1において、利用者が使用する端末装置10(ウェブブラウザ)は、サービス要求のため、サービス提供サーバ40にアクセスする。
サービス要求を受けたサービス提供サーバ40は、ステップS2において、利用者を認可サーバ20にリダイレクトするページを端末装置10に供給する。
利用者の操作により、端末装置10は、ステップS3において、認可サーバ20に対して、認可要求(Authorization request)の送信を行う(RFC6749#4.1.1.)。これは、シングルサインオンの仕組みにおいて利用者の認証を要求するための手続である。
【0048】
ステップS4の認証処理において、認可サーバ20は、認証情報(例えば、利用者IDとパスワード)の入力を利用者に要求する。なお、ステップS4の認証処理において、認証情報の入力はRFC6749(OAuth2.0)で規定される処理とは異なり、認可サーバ20と端末装置10との間で別途確立されるセッションにおいて行われる。
利用者の認証が正常に行われると、認可サーバ20は、利用者の確認を得たうえで認可を確立し、ステップS5において、認可応答(Authorization response)として、認可コード(Authorization code)を端末装置10に送信する(RFC6749#4.1.2.)。
【0049】
認可サーバ20から送信された認可コードを受信した端末装置10(ウェブブラウザ)は、ステップS6において、認可コードをサービス提供サーバ40に転送(Redirect)する。
端末装置10から転送された認可コードを取得したサービス提供サーバ40は、ステップS7において、この認可コードを用いて、アクセストークン要求(Access token request)を認可サーバ20に対して行う(RFC6749#4.1.3.)。
アクセストークン要求を受け付けた認可サーバ20は、ステップS8において、端末装置10又はその利用者のID情報に基づくライセンス管理サーバ30に対してライセンス要求を行う。
【0050】
ライセンス管理サーバ30は、認可サーバ20によるライセンス要求を受け、ステップS9において、ライセンス管理データベースから、端末装置10に関するライセンスデータの特定を行うライセンス特定処理を行い、ステップS10において、特定したライセンスデータに基づくライセンス情報を認可サーバ20に送信する。
ステップS11において、認可サーバ20は、ライセンス情報を含むアクセストークン応答(Access token response)をサービス提供サーバ40に返す。すなわち、認可サーバ20は、ライセンスを含むアクセストークンをサービス提供サーバ40に送信する(RFC6749#4.1.4.)。
【0051】
認可サーバ20からアクセストークンを取得したサービス提供サーバ40は、ステップS12において、サービス実行サーバ50に対してアクセストークンを送信してサービス要求を行う。
サービス要求を受けたサービス実行サーバ50は、アクセストークン内のライセンス情報に基づき、ステップS13にてサービス実行処理を行い、ステップS14にてサービス提供サーバ40に対してサービス応答を行う。
サービス実行サーバ50は、ステップS15においてライセンス同期要求をライセンス管理サーバ30に送信し、ステップS16において、ライセンス管理サーバ30からの同期結果の送信を受ける。
サービス実行サーバによるライセンス同期処理(ステップS15~S16)は、サービス実行処理とは別に、定期的に、または、非定期的に、非同期に行われてもよい。
【0052】
図8は、
図7の処理に先立って行われる装置間の事前登録処理を説明する図である。
図8(a)は、端末装置が、認可サーバ、ライセンス管理サーバに対して行う事前登録処理を説明する図である。
図7で説明した処理に先立って、端末装置10は、
図8(a)に示すように、認可サーバ20に対して認証情報(例えば、ID情報、パスワード)の登録処理を行うとともに、ライセンス管理サーバ30に対して、ID情報とライセンスデータ(サービス種別やライセンスIDなど)の登録処理を行う。
認証情報の事前登録処理は、端末装置10の認証情報登録部15及び認可サーバ20の端末装置登録部25により行われる。
認可サーバ20は、端末装置10のID情報とパスワードを保持する。
ライセンス情報の事前登録処理は、端末装置10のライセンス登録部14及びライセンス管理サーバ30ライセンス登録部35により行われる。
ライセンス管理サーバ30は、端末装置10のID情報とライセンスデータ(サービス種別やライセンスIDなど)とをライセンス管理データベース80に格納する。
ライセンス管理サーバ30は、ライセンス管理データベース80において、ライセンスデータとして端末装置10又はその利用者とライセンスID、サービス種別、登録済ライセンス数(特に、後述するタイムスタンプの場合)などを関連づけて管理する。サービスの1つの例として、タイムスタンプサービスがあるが、この場合、端末装置10又はその利用者毎に、所有するライセンス数、つまり、タイムスタンプを発行できる数を管理する。
【0053】
図8(a)の事前登録処理を行うことにより、サービス提供サーバ40が端末装置10の認証情報を管理する必要がなく、またライセンス情報の管理を行う必要性もない。その結果、システム的に疎結合の状態を作り出すことができる。
また、認可サーバ20は、アクセストークンの定義情報を、事前にサービス実行サーバ50に対して提供する。これにより、アクセストークン中の情報をサービス実行サーバ50が受け付けることが可能となる。
【0054】
図8(b)は、認可サーバとサービス提供サーバとの間で行う事前登録処理を説明する図である。
上記したコンフィデンシャルの方法を採用する場合、サービス提供サーバ40は、
図8(b)に示すように、認可サーバ20との合意の上で、リダイレクト用のURIを認可サーバ20事前に提供し、クライアントIDとクライアントシークレットを認可サーバ20から受信する必要性がある。
認可サーバ20への認可コードの取得リクエストの際にはクライアントIDが求められるケースが多く、認可コードを認可サーバ20に送信し、アクセストークンをリクエストする際の認証情報としてクライアントID及びクライアントシークレットは使用され、より高レベルのセキュリティを確保することが可能である。
図8で説明した処理により、OAuth2.0のアクセストークンとライセンスとの紐づけの準備が完了した。
以下に、サービス実行サーバ50で、タイムスタンプや電子署名など、具体的なサービスを実行・提供する場合の処理を具体的に説明していく。
下記の説明において、タイムスタンプを提供するサービス実行サーバ50をタイムスタンプサーバ50aとし、電子署名を提供するサービス実行サーバ50を電子署名サーバ50bとして説明する。端末装置、認可サーバ、ライセンス管理サーバ、サービス提供サーバについては、上記と同じ符号(端末装置10、認可コード20、ライセンス管理サーバ30、サービス提供サーバ40)を付して説明する。
【0055】
[サービス実行サーバがタイムスタンプサービスを提供する場合]
本実施形態のサービス実行サーバ50は、タイムスタンプを発行するタイムスタンプサーバ50aとして機能しうる。
この場合、アクセストークンを用いたライセンス管理は、基本的に上記に説明したとおりである。ただし、サービス要求(タイムスタンプ要求)のフォーマットはRFC3161に則り、またそれに対する応答(タイムスタンプレスポンス)も同様に、RFC3161を満たす必要性がある。
【0056】
図9は、タイムスタンプサーバの機能構成を示す図である。
ハードウェア構成は、
図6のサービス実行サーバ50と同じであり、タイムスタンプサーバの制御部の構成のみを説明する。
図9に示すように、タイムスタンプサーバ50aとしてのサービス実行サーバは、トークン検証部51Aと、タイムスタンプ要求受付部52Aと、タイムスタンプ生成部53Aと、タイムスタンプ返却部54Aと、ライセンス同期部55Aと、を備えている。
トークン検証部51Aは、トークン検証部51に対応し、サービス提供サーバ40から送信されたアクセストークンを検証する処理を行う。
タイムスタンプ要求受付部52Aは、サービス要求受付部52に対応し、サービス提供サーバ40からのタイムスタンプ要求を受け付ける処理を行う。
タイムスタンプ生成部53Aは、サービス実行部53に対応し、要求されタイムスタンプの生成を実際に実行する処理を行う。
タイムスタンプ返却部54Aは、サービス応答部54に対応し、生成したタイムスタンプを、サービス提供サーバ40に返却する処理を行う。
ライセンス同期部55Aは、ライセンス同期部55に対応し、ライセンス管理サーバ30に対して、ライセンスデータの同期要求を行う。
【0057】
[タイムスタンプについて]
RFC3161にて、リクエストフォーマット及び、レスポンスフォーマット、振る舞いが定義されているプロトコルの仕様である。また、RFC3628にてタイムスタンプサービスの運用上の要求事項が定義されている。
一般的にタイムスタンプサービスは対象コンテンツがその時刻に存在していたこと、その後改ざんされていないことを証明する方法として用いられる。後述の電子署名、またコードサインの用途に用いられることが多い。
【0058】
処理の概要を説明する。
端末装置10はサービス提供サーバ40に対しタイムスタンプサービス要求を行う。
サービス提供サーバ40はリダイレクトを行い、端末装置10に認可サーバ20の認証画面を表示する。
認証が成功すると、サービス提供サーバ40は、認可サーバ20より認可コードを受信し、認可コード(クライアントタイプがコンフィデンシャルの場合、併せて、クライアントID及びクライアントシークレット)を付与し、認可サーバ20にアクセストークンのリクエストを行う。
認可サーバ20は、ライセンス管理サーバ30にライセンス要求を行う。
ライセンス管理サーバ30が行う下記に詳述するライセンス特定処理の結果として、ライセンス情報(サービス種別やライセンスID、さらにはタイムスタンプの発行要求枚数など)、が発行され、ライセンス情報を含むアクセストークンがサービス提供サーバ40に送される。
サービス提供サーバ40は認可サーバ20より受信した、ライセンス情報を含むアクセストークンをタイムスタンプサーバ50aに提示してタイムスタンプ要求を行うのである。
タイムスタンプサービスにアクセスする際には、リクエストの形式として下記の形をとる必要がある。
TimeStampReq ::= SEQUENCE {
version INTEGER { v1(1) },
messageImprint ,
reqPolicy TSAPolicyId OPTIONAL,
nonce INTEGER OPTIONAL,
certReq BOOLEAN DEFAULT FALSE,
extensions [0] IMPLICIT Extensions OPTIONAL }
なお、オプションであるreqPolicy、nonce、extensionsは必ずしもリクエストに含む必要はない。
特にextensionsに関しては、将来の拡張などを見越した仕様を含ませるケースなどに使用され、指定されないことが多い。
また、reqPolicyは、タイムスタンプのサービスインスタンスが複数ある場合に、特定のインスタンスへリクエストを送る場合に用いられるものだが、一般のクライアントが指定することは少なく、特定のURIへのリクエストをゲートウェイなどで、特定のインスタンスに紐づけていることも多い。
タイムスタンプ要求受付部52Aは、タイムスタンプ要求の検証を行い、例えば、messageImprint中のハッシュ値がタイムスタンプサービスとして受け付けていない脆弱性のあるアルゴリズムの際はエラーを返すなどの処理を行う。
【0059】
タイムスタンプサービスにアクセストークンとライセンス管理を導入することには非常に有用な点がある。特にRFC3161はあくまでプロトコルの仕様を決定しているのみであり、付随するビジネスロジックについては各ベンダー、開発者の判断に委ねられる。ベンダーによっては独自のAPIを実装したクライアントソフト等の開発を行い、RFC3161を外部から使えるようにはせずに、ある種の独自APIにて実装しているという状態になっている可能性がある。この場合、クライアントは個々で独自APIを実装する必要があり、標準のRFC3161に比較すると相互運用性の面で不利となる。
【0060】
アクセストークンとライセンス管理の仕組みはOAuth2.0のアクセストークンを使用することを前提としているため、既存のRFC3161のプロトコルの仕様を改変することなく、ライセンスの管理も可能とするものである。
基本的にRFC3161のタイムスタンプ要求は、HTTPベースのリクエストにより実装が可能であり、アクセストークンをリクエストヘッダーに含ませた場合、追加のパラメータや複数リクエストなど付与することがなく、またプロトコルの仕様違反を起こすことなく実装が可能である。
https://www.ipa.go.jp/security/rfc/RFC3161EN.html#34に記されるように、RFC3161には、content typeの制約があるのみであり、他のヘッダー情報を付与してはならないという文書は見当たらない。
【0061】
アクセストークンとライセンス管理をタイムスタンプの例を用いて説明するにあたり、JWTを使用したより具体的な例を元に説明する。特に、ここでは前述の公開鍵認証方法を行うにあたり、署名が施されたJWSでの実装方法について記載する。
上記したように、JWSはJSONデータ任意の値を含め、署名、暗号化などの方法によりデータの受け渡しを想定とした仕様である。JWS中のデータ定義は必須部分及び事前に定義されているフィールドを除き実装者が自由に決めることができる。
特に重要となってくるのが、scopeの処理により決定される権限の箇所であり、scopeによりJWS中に含まれるデータを変更する実装が多いため、注意が必要である。
JWTとJWSの大まかな違いとして、実装レベルでのJWTは仕様として大きな枠組みを決定しているだけであり、改竄防止手段としてJWSを使用するという前提にて記載する。特にJWSの使用方法について本実施形態では記載せず、具体例のみの記載とする。
【0062】
JWSを使用することでアクセストークンの検証を公開鍵認証方式にて実施することが可能になる。事前に秘密鍵、公開鍵のペアを認可サーバ20で発行しておき公開鍵をタイムスタンプサーバ50aに配置しておく。
ここでは詳細に言及しないが、安全な秘密鍵、公開鍵のペアを作成するにあたりオープンソースのライブラリを使用することが多いが、HSM(Hardware Security Module)にて鍵ペアを生成して保管する方式のほうがよりセキュリティ強度が高い。
ここで説明している公開鍵認証方式を採用することで、タイムスタンプサーバ50aのアクセストークン検証処理部により公開鍵認証方式を使用し、アクセストークンの検証を行うことが可能になる。
【0063】
JWSのトークンにてライセンス情報を紐づける場合、JSONのペイロード部分にライセンス情報を記載する必要がある。
タイムスタンプサービスを提供しているタイムスタンプ局ごとにライセンスの概念は異なるが、ここでは一例として、
図12に示すライセンス管理データベースで定義される例を取り上げている。
【0064】
図10は、本実施形態のタイムスタンプ提供処理を説明するシーケンス図である。
ステップS21において、利用者が使用する端末装置10(ウェブブラウザ)は、タイムスタンプの要求のため、サービス提供サーバ40にアクセスする。
タイムスタンプ要求を受けたサービス提供サーバ40は、ステップS22において、利用者を認可サーバ20にリダイレクトするページを端末装置10に供給する。
利用者の操作により、端末装置10は、ステップS23において、認可サーバ20に対して、認可要求(Authorization request)の送信を行う(RFC6749#4.1.1.)。これは、シングルサインオンの仕組みにおいて利用者の認証を要求するための手続である。
【0065】
ステップS24の認証処理において、認可サーバ20は、認証情報(例えば、利用者IDとパスワード)の入力を利用者に要求する。なお、ステップS24の認証処理において、認証情報の入力はRFC6749(OAuth2.0)で規定される処理とは異なり、認可サーバ20と端末装置10との間で別途確立されるセッションにおいて行われる。
利用者の認証が正常に行われると、認可サーバ20は、利用者の確認を得たうえで認可を確立し、ステップS25において、認可応答(Authorization response)として、認可コード(Authorization code)を端末装置10に送信する(RFC6749#4.1.2.)。
【0066】
認可サーバ20から送信された認可コードを受信した端末装置10(ウェブブラウザ)は、ステップS26において、認可コードをサービス提供サーバ40に転送(Redirect)する。
端末装置10から転送された認可コードを取得したサービス提供サーバ40は、ステップS27において、この認可コードを用いて、アクセストークン要求(Access token request)を認可サーバ20に対して行う(RFC6749#4.1.3.)。
アクセストークン要求を受け付けた認可サーバ20は、ステップS28において、端末装置10又はその利用者のID情報に基づくライセンス管理サーバ30に対してライセンス要求を行う。
【0067】
ライセンス管理サーバ30は、認可サーバ20によるライセンス要求を受け、ステップS29において、ライセンス管理データベースから端末装置10のライセンスデータ(サービス種別やライセンスID)特定するライセンス特定処理を行い、ステップS30において、タイムスタンプの発行可能枚数などをさらに含む、特定したライセンス情報を認可サーバ20に送信する。
ステップS31において、認可サーバ20は、ライセンス情報を含むアクセストークン応答(Access token response)をサービス提供サーバ40に返す。すなわち、認可サーバ20は、ライセンスを含むアクセストークンをサービス提供サーバ40に送信する(RFC6749#4.1.4.)。
【0068】
図11は、タイムスタンプサービスに関するアクセストークンを示す図である。
図11に示すように、アクセストークンにおいて、JWS中にペイロードのデータを入れる。
図11に示すような挿入されたライセンス情報、及びJWSに必要なヘッダー情報、署名値をアクセストークンとして使用し、サービス提供サーバ40に返却することでライセンスが付与されたアクセストークンが完成する。
【0069】
図10の説明に戻り、認可サーバ20からアクセストークンを取得したサービス提供サーバ40は、ステップS32において、タイムスタンプサーバ50aに対してアクセストークンを送信してタイムスタンプ要求を行う。
タイムスタンプ要求を受けたタイムスタンプサーバ50aは、ステップS33においてサービス実行処理を行い、ステップS36にてサービス提供サーバ40に対してサービス応答を行う。
タイムスタンプサーバに50Aよるライセンス同期処理(ステップS33~S34)は、タイムスタンプ生成処理とは別に、定期的に、または、非定期的に、非同期に行われてもよい。
【0070】
ステップS29のライセンス特定処理を詳述する。
まず、
図12は、タイムスタンプサービスに関してライセンス管理サーバが備えるライセンス管理データベースを示す図である。
図12に示すライセンス管理データベース80は、ライセンスIDテーブル81、端末装置IDテーブル82、サービス種別テーブル83、登録済ライセンス数テーブル84を関連づけて管理している。
通常はリレーショナルなどでそれぞれのIDにてデータは定義されるが、より分かりやすく説明するため非正規化をしている例をとりあげる。
ライセンス管理サーバ30は、ライセンス特定処理において、端末装置IDテーブル82において、ライセンス要求に係る端末装置10又はその利用者の端末装置IDを検索する。
ライセンス管理サーバ30は、該当する端末装置10又はその利用者の端末装置IDが見つかると、登録済みライセンス数テーブル84を参照し、発行可能枚数を含むライセンス情報を認可サーバ20に返す。
【0071】
認可サーバ20は、発行可能枚数を含むライセンス情報をライセンス管理サーバ30から受け取ると、ライセンス情報を含むアクセストークンをタイムスタンプ要求として、サービス提供サーバ40に送る。
サービス提供サーバ40はタイムスタンプサーバ50aにサービス提供サーバ40から受け取ったアクセストークンと共にタイムスタンプ要求を送る。
タイムスタンプサーバ50aはサービス提供サーバ40より受け取ったタイムスタンプ要求に基づき、タイムスタンプ生成処理を行う
【0072】
ステップS33のタイムスタンプ生成処理において、タイムスタンプサーバ50aは、トークン検証部51Aによりアクセストークンを検証し、事前に認可サーバ20から提供されていた定義情報を用いてライセンス情報を確認する(アクセストークンの定義情報は認可サーバ20とタイムスタンプサーバ50aとで事前に共有されている必要がある)。
アクセストークン、ライセンス情報が有効であれば、すなわちトークン検証部51Aによるアクセストークンの検証、タイムスタンプ要求受付部52Aによるタイムスタンプ要求の確認が成功した場合には、タイムスタンプサーバ50aは、ステップS53のタイムスタンプ生成処理において、サービス提供サーバ40より受け取ったアクセストークン内のライセンス情報の発行可能枚数を上限としたタイムスタンプをサービス提供サーバ40に対して発行する。タイムスタンプの発行は、タイムスタンプ生成部53Aが、サービス提供サーバ40から送られてくるmessageImprint中のハッシュ値に対しタイムスタンプサーバ50aが時刻と共に電子署名を施すことによって行われる。
タイムスタンプサーバ50aは、実際に発行したタイムスタンプ生成数を保持する。ここで、ライセンス情報の発行可能枚数と実際に発行したタイムスタンプ生成数を比較することは重要である。発行したタイムスタンプ生成数は、ライセンス情報内のタイムスタンプ発行可能枚数を超えることはできない。
【0073】
タイムスタンプサーバ50aは、ステップS34においてタイムスタンプの返却処理を行う。
サービス提供サーバ40は、タイムスタンプサーバ50aより受信したのタイムスタンプ応答をもとに、コードサイン、PDF等へのタイムスタンプ署名付加等を行い、端末装置10へ結果を返却する。
タイムスタンプサーバ50aは、上記と同様に、定期的にライセンス管理サーバ30とライセンスデータの同期処理を行い、ライセンスを更新する。排他処理によりデータの不整合を防ぐ必要があることも上記と同様である。
ステップS35~S36のライセンス同期処理において、ライセンス管理サーバ30は、登録済ライセンス数テーブル84から発行枚数をマイナス(ディクリメント)する。なお、ある端末装置10又はその利用者について、登録済ライセンス数テーブル84で管理される登録済ライセンス数が「0」であると、その端末装置10又はその利用者に関してライセンスを使い切っていることを意味する。
登録済ライセンス数テーブル84で管理されるライセンス数が例えば0である場合、ライセンス管理サーバ30は、ステップS31で、タイムスタンプサーバ50aで受け付けられないライセンス情報を送信する。
この場合、認可サーバ20によってアクセストークン自体は発行されても、アクセストークンに含まれるライセンス情報によって、タイムスタンプサーバ50aは電子署名の発行を拒否する。
【0074】
[サービス実行サーバが電子署名サービスを提供する場合]
一例として、本実施形態のサービス実行サーバ50は、電子署名サーバ50bである。この場合のアクセストークンを用いたライセンス管理では、基本的な処理は上記に説明したとおりである。
図13は、電子署名サーバの機能構成を示す図である。
ハードウェア構成は、
図6のサービス実行サーバ50と同じであり、電子署名サーバの制御部の構成のみを説明する。
図13に示すように、電子署名サーバ50bとしてのサービス実行サーバは、トークン検証部51Bと、電子署名要求受付部52Bと、電子署名生成部53Bと、電子署名返却部54Bと、ライセンス同期部55Bと、を備えている。
トークン検証部51Bは、トークン検証部51に対応し、サービス提供サーバ40から送信されたアクセストークンを検証する処理を行う。
電子署名要求受付部52Bは、サービス要求受付部52に対応し、サービス提供サーバ40からの電子署名要求を受け付ける処理を行う。
電子署名生成部53Bは、サービス実行部53に対応し、要求された電子署名の生成を実際に実行する処理を行う。
電子署名返却部54Bは、サービス応答部54に対応し、生成した電子署名を、サービス提供サーバ40に返却する処理を行う。
ライセンス同期部55Bは、ライセンス同期部55に対応し、ライセンス管理サーバ30に対して、ライセンスデータの同期要求を行う。
【0075】
[電子署名について]
電子署名は署名検証を行うことによる改竄防止と、上記のタイムスタンプを使用した時刻証明を行い、情報の改竄を防ぐことを目的とする。タイムスタンプの使用は任意である。
電子署名にはおおまかにCAdES、XAdES、PAdESという署名プロファイルが存在し、利用者は、それぞれ用途にあったプロファイルを選択し使用する。ここでは特にPAdESについてのサービスを例として説明する。
【0076】
PAdES、PDF署名を行う場合、対象データのハッシュ値を計算し、RFC5652のCMSのSignedAttributes属性を生成し一般てきにRSAで署名を行い、CMS、SignedDataフィールドに格納し、対象データに埋め込むことでPDF署名となる。
なお、対象データは事前にパディングを設けCMSデータの格納領域を作成しておく必要がある。
【0077】
一例として、ここで説明するPDF署名に関してはすべて電子署名サーバ50bにて上記処理を行うものとし、サービス提供サーバ40がPDFファイルを電子署名サーバ50bに送信するだけでPDF署名が完結するものとする。
端末装置10は、サービス提供サーバ40に対する電子署名要求の際に、PDFファイルをサービス提供サーバ40にアップロードし、サービス提供サーバ40は認可サーバ20の認証ページを端末装置10に対して表示する。
認証が成功した場合、サービス提供サーバ40は、認可サーバ20から認可コードを受信し、認可コード(クライアントタイプがコンフィデンシャルの場合には、さらにクライアントID及びクライアントシークレット)を認可サーバ20に送信し、アクセストークンを受信する。
アクセストークンを受信したサービス提供サーバ40は、電子署名サーバ50bに対する電子署名要求として、端末装置10が事前にアップロードしたPDFファイルとアクセストークンを送信する。
【0078】
電子署名要求を受信した際、電子署名サーバ50bはアクセストークンの検証を行う。検証方式については、公開鍵認証方式とする。
トークン検証部51Bにより公開鍵認証方式にて検証が成功した場合、電子署名要求受付部52Bによりリクエストを判定し、電子署名生成部53Bにより、説明した処理が行われる。PDF署名が完了したのち電子署名返却部54Bにより署名されたPDFファイルをサービス提供サーバ40に返却する。
サービス提供サーバ40は、電子署名サーバ50bから受信した電子署名済みPDFファイルを端末装置10に返却し、処理が完了する。
電子署名サーバ50bは、前述したように、定期的に、あるいは、不定期的にライセンス管理サーバ30とライセンスデータの同期処理を行い、ライセンスを更新する。排他処理によりデータの不整合を防ぐ必要があることも上記と同様である。
【0079】
図14は、本実施形態の電子署名提供処理を説明するシーケンス図である。
ステップS41において、利用者が使用する端末装置10(ウェブブラウザ)は、サービス提供サーバ40にアクセスし、電子署名要求を送信する。
電子署名要求を受けたサービス提供サーバ40は、ステップS42において、利用者を認可サーバ20にリダイレクトするページを端末装置10に供給する。
利用者の操作により、端末装置10は、ステップS43において、認可サーバ20に対して、認可要求(Authorization request)の送信を行う(RFC6749#4.1.1.)。これは、シングルサインオンの仕組みにおいて利用者の認証を要求するための手続である。
【0080】
ステップS44の認証処理において、認可サーバ20は、認証情報(例えば、利用者IDとパスワード)の入力を利用者に要求する。なお、ステップS44の認証処理において、認証情報の入力はRFC6749(OAuth2.0)で規定される処理とは異なり、認可サーバ20と端末装置10との間で別途確立されるセッションにおいて行われる。
利用者の認証が正常に行われると、認可サーバ20は、利用者の確認を得たうえで認可を確立し、ステップS45において、認可応答(Authorization response)として、認可コード(Authorization code)を端末装置10に送信する(RFC6749#4.1.2.)。
【0081】
認可サーバ20から送信された認可コードを受信した端末装置10(ウェブブラウザ)は、ステップS46において、認可コードをサービス提供サーバ40に転送(Redirect)する。
端末装置10から転送された認可コードを取得したサービス提供サーバ40は、ステップS47において、この認可コードを用いて、アクセストークン要求(Access token request)を認可サーバ20に対して行う(RFC6749#4.1.3.)。
アクセストークン要求を受け付けた認可サーバ20は、ステップS48において、端末装置10又はその利用者のID情報に基づくライセンス要求を、ライセンス管理サーバ30に対して行う。
【0082】
ライセンス管理サーバ30は、認可サーバ20によるライセンス要求を受け、ステップS49において、ライセンス管理データベースから端末装置10に関するライセンスデータを特定するライセンス特定処理を行い、ステップS50において、特定したライセンスデータに基づくライセンス情報を認可サーバ20に送信する。
ステップS51において、認可サーバ20は、ライセンスを含むアクセストークン応答(Access token response)をサービス提供サーバ40に返す。すなわち、認可サーバ20は、ライセンスを含むアクセストークンをサービス提供サーバ40に送信する(RFC6749#4.1.4.)。
【0083】
認可サーバ20からアクセストークンを取得したサービス提供サーバ40は、ステップS52において、電子署名サーバ50bに対してアクセストークンを送信して電子署名要求を行う。
電子署名要求を受けた電子署名サーバ50bは、ステップS53において、アクセストークン検証部51Bによりアクセストークンを検証し、電子署名要求受付部52Bによりライセンスを検証し、電子署名生成部53Bにより電子署名実行処理を行う。
電子署名サーバ50bは、ステップS54において、電子署名返却部54Bによりサービス提供サーバ40に対して電子署名応答を行う。
電子署名サーバ50bはステップS55において、ライセンス同期部56Bによりライセンス同期要求をライセンス管理サーバ30に送信し、ライセンス管理サーバ30は、ステップS56において、ライセンス同期結果を電子署名サーバ50bに送信する。
電子署名サーバによるライセンス同期処理(ステップS55~S56)は、サービス実行処理とは別に、定期的に、または、非定期的に、非同期に行われてもよい。
【0084】
電子署名に関しても電子署名の場合と同様に、ライセンスデータとして登録済ライセンス数をライセンス管理サーバ30で管理し、端末装置10による電子署名要求は電子署名の実行可能回数を含む(実行回数を指定できる)にようにしてもよい。
この場合、ライセンス管理サーバ30は、ライセンス特定処理において、端末装置IDテーブル82において、ライセンス要求に係る端末装置10又はその利用者の端末装置IDを検索する。
ライセンス管理サーバ30は、該当する端末装置10又はその利用者の端末装置IDを検索し、登録済ライセンス数テーブル84で管理される登録済ライセンス数を取得し、サービス種別、発行可能枚数を含むライセンス情報を認可サーバ20に返す。
【0085】
認可サーバ20は、発行可能枚数含むライセンス情報をライセンス管理サーバ30かから受け取ると、ライセンス情報を含むアクセストークンを電子署名要求として、サービス提供サーバ40に送る。
【0086】
ステップS53の電子署名実行処理において、電子署名サーバ50bは、トークン検証部51Bによりアクセストークンを検証し、事前に認可サーバ20から提供されていた定義情報を用いてライセンス情報を確認する。
アクセストークン、ライセンス情報が有効であれば、すなわちトークン検証部51Bによるアクセストークンの検証、電子署名要求受付部52Bによる電子署名要求の確認が成功した場合には、電子署名サーバ50bは、ステップS53の電子署名実行処理において、アクセストークンに含まれるライセンス情報が指定する発行可能枚数分だけ、電子署名をサービス提供サーバ40に対して発行できる。
ステップS55~S56のライセンス同期処理において、ライセンス管理サーバ30は、登録済ライセンス数テーブル84から発行枚数をマイナス(ディクリメント)する。なお、ある端末装置10又はその利用者について、登録済ライセンス数テーブル84で管理される登録済ライセンス数が「0」であると、その端末装置10又はその利用者に関してライセンスを使い切っていることを意味する。
登録済ライセンス数テーブル84で管理されるライセンス数が例えば0である場合、ライセンス管理サーバ30は、ステップS51で、電子署名サーバ50bで受け付けられないライセンス情報を送信する。
この場合、認可サーバ20によってアクセストークン自体は発行されても、アクセストークンに含まれるライセンス情報によって、電子署名サーバ50bは電子署名の発行を拒否する。
【符号の説明】
【0087】
1 システム、10 端末装置、11 サービス要求部、12 認証部、13 サービスデータ取得部、14 ライセンス登録部、15 認証情報登録部、20 認可サーバ、21 認可要求受付部、22 認可コード発行部、23 トークン要求受付部、24 トークン発行部、25 端末装置登録部、30 ライセンス管理サーバ、31 端末装置検索部、32 ライセンス検索部、33 ライセンス発行部、34 ライセンス同期部、35 ライセンス登録部、40 サービス提供サーバ、41 サービス要求受付部、42 リダイレクト部、43 認可コード取得部、44 トークン要求部、45 サービス要求部、46 サービス応答部、50 サービス実行サーバ(50a タイムスタンプサーバ、50b 電子署名サーバ)、51 トークン検証部(51A トークン検証部、51B トークン検証部)、52 サービス要求受付部(52A タイムスタンプ要求受付部、52B 電子署名要求受付部)、53 サービス実行部(53A タイムスタンプ生成部、53B 電子署名生成部)、54 サービス応答部(54A タイムスタンプ返却部、54B 電子署名返却部)、55 ライセンス同期部(55A ライセンス同期部、55B ライセンス同期部)80 ライセンス管理データベース