(57)【要約】      （修正有）【課題】サーバ同士を連携させて自動ワークフロー処理を行うシステムにおいて、安全に連携を実現する。【解決手段】クライアントＰＣ、および認証サービスを提供する少なくとも１つ以上のアイデンティティプロバイダ装置と通信可能な複数のサービス提供サーバ連携するシステムであって、実行数管理モジュールがテナント毎に実行中処理数を管理する手段と、サービス提供サーバの同時実行可能処理数上限値に達しているかを判定するステップＳ１５２７と、処理の実行を待機する処理実行待機ステップＳ１５２８と、他の実行中処理が完了したかを判定するステップＳ１５２９と、前記実行中処理数管理手段の処理数をカウントアップする処理数カウントアップステップＳ１５３０と、処理を実行する処理実行ステップＳ１５１７と、前記実行中処理数管理手段の処理数をカウントダウンする処理数カウントダウンステップＳ１５３１と、を有するシステム。【選択図】図１５Ｂ
2014142736.tif 000002
【特許請求の範囲】
【請求項１】
クライアントＰＣ２００、および認証サービスを提供する少なくとも１つ以上のアイデンティティプロバイダ装置と通信可能なサービス提供サーバＡ５００、サービス提供サーバＢ５５０およびサービス提供サーバＣ５６６０が連携するシステムであって、
実行数管理モジュール５１１がテナント毎に実行中処理数を管理する手段１００１と、サービス提供サーバＢ５５０の同時実行可能処理数上限値に達しているかを判定するステップＳ１５２７と、処理の実行を待機する処理実行待機ステップＳ１５２８と、他の実行中処理が完了したかを判定するステップＳ１５２９と、前記実行中処理数管理手段１００１の処理数をカウントアップする処理数カウントアップステップＳ１５３０と、処理を実行する処理実行ステップＳ１５１７と、前記実行中処理数管理手段１００１の処理数をカウントダウンする処理数カウントダウンステップＳ１５３１と、を有するシステム。
【請求項２】
前記処理実行待機ステップＳ１５２８は、実行中処理数が上限に達している場合に実行することを特徴とする請求項１に記載のシステム。
【請求項３】
前記処理数カウントアップステップＳ１５３０、前記処理実行ステップＳ１５１７、および前記処理数カウントダウンステップＳ１５３１は、実行中処理数が上限に達していない場合に実行することを特徴とする請求項１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザが介在しない自動ワークフロー処理を提供するサービスプロバイダ装置、サービスプロバイダ装置を制御するための制御方法、およびプログラムに関する。
【背景技術】
【０００２】
クラウドプラットフォーム上で業務データの管理や各種処理を行う形態が普及し始めている。ユーザは、クライアントＰＣのブラウザからインターネットを介してクラウドプラットフォームのＷｅｂページにアクセスし、そのＷｅｂページ上で閲覧したい業務データを表示する。例えば、その画面から文書作成指示を行うと、文書生成サーバにリダイレクトされ、文書生成サーバがクラウドプラットフォームにある業務データを取得して文書を生成し、文書をクライアントＰＣ２００やクラウドプラットフォームに送信する。クラウドプラットフォームの代表例として、例えば、Ｓａｌｅｓｆｏｒｃｅ．ｃｏｍ社のＳａｌｅｓｆｏｒｃｅ  ＣＲＭ（登録商標）がある。
【０００３】
クラウドプラットフォームや文書生成サーバはマルチテナントで動作する。テナントとは、クラウドプラットフォームや文書生成サーバを使用する契約を締結した企業や組織の単位である。マルチテナントで動作するサービスは、１つのシステムで複数のテナントのデータを管理し、あるテナントのデータが別のテナントから参照できないよう各テナントのデータを分離して管理する。自身のテナントのデータのみを参照させるため、クラウドプラットフォームや文書生成サーバはユーザ認証を行う。
【０００４】
クラウドプラットフォームと文書生成サーバが連携を行う場合、ユーザがそれぞれのサーバで認証を行うことなくサーバ間で認証を連携させることが可能である。従来複数のサーバ間で認証を連携させる技術として、ＳＡＭＬ（Ｓｅｃｕｒｉｔｙ  Ａｓｓｅｒｔｉｏｎ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）によるシングルサインオン（以下ＳＳＯ）の仕組みがある。ＳＡＭＬのＳＳＯにおいて、ユーザは、認証サービスを提供する側（ＩｄｅｎｔｉｔｙＰｒｏｖｉｄｅｒ、以下ＩｄＰ）、および認証サービスの認証結果を信頼してサービスを提供する側（ＳｅｒｖｉｃｅＰｒｏｖｉｄｅｒ、以下ＳＰ）の両方のユーザＩＤを保有している。ユーザがＩｄＰで認証を受けると、ＳＰはその認証結果を信頼して、そのアクセスをＳＰ内で管理するＩＤとして認証する（ＩｄＰ先行）。また、ＩｄＰで認証を受けていない未認証のユーザがＳＰにアクセスしてきた場合、ＳＰは、未認証のユーザを適切なＩｄＰへと誘導し、ＩｄＰで認証させる（ＳＰ先行）。
【０００５】
ＳＡＭＬによるＳＳＯを行う場合、ＩｄＰが保有するＩＤとＳＰが保有するＩＤを対応付け（以下、ユーザマッピングと称する）を行って管理する。特に、ユーザを識別することが不可欠なサービスと文書生成サーバを連携させる場合、ユーザマッピングによるＩＤ管理が必要となる。ユーザを識別することが不可欠なサービスには、文書をＩＤ毎に管理・印刷を行う印刷サービスがある。
【０００６】
従来、複数のサービスがそれぞれ保有するＩＤを連携させる方法が開示されている。特許文献１には、サービス提供サーバがユーザのアクセスを認証サーバへ誘導し、認証サーバとユーザ間で認証情報の登録、認証処理を実行する方法が開示されている。特許文献２には、連携するサービス提供サーバのそれぞれでユーザ識別情報を管理する方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−２２１７２９号公報
【特許文献２】特開２０１０−１１３４６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら従来の方法には以下の問題があった。複数のサービス提供サーバの連携によって成立つ自動ワークフローシステム（夜間バッチ印刷など）をクラウド環境で実現する場合、どのユーザの権限でワークフローを実行するかを事前に設定しておく。しかしながら、連携するサービス提供サーバによっては、一人のユーザが同時に実行可能な処理数に制限がある場合がある。例えば、Ｓａｌｅｓｆｏｒｃｅ  ＣＲＭ（登録商標）では、一人のユーザが同時に実行可能なクエリ数に制限がある。この場合、同時に複数のワークフローを実行しようとすると、一部の処理がエラーになってしまう可能性があった。
【課題を解決するための手段】
【０００９】
クライアントＰＣ２００、および認証サービスを提供する少なくとも１つ以上のアイデンティティプロバイダ装置と通信可能なサービス提供サーバＡ５００、サービス提供サーバＢ５５０およびサービス提供サーバＣ５６６０が連携するシステムであって、
実行数管理モジュール５１１がテナント毎に実行中処理数を管理する手段１００１と、サービス提供サーバＢ５５０の同時実行可能処理数上限値に達しているかを判定するステップＳ１５２７と、処理の実行を待機する処理実行待機ステップＳ１５２８と、他の実行中処理が完了したかを判定するステップＳ１５２９と、前記実行中処理数管理手段１００１の処理数をカウントアップする処理数カウントアップステップＳ１５３０と、処理を実行する処理実行ステップＳ１５１７と、前記実行中処理数管理手段１００１の処理数をカウントダウンする処理数カウントダウンステップＳ１５３１と、を有するシステム。
【発明の効果】
【００１０】
本発明によれば、サービス提供サーバ同士が連携してスケジュールジョブを実行するシステムにおいて、夜間バッチ印刷等のユーザが介在しないシステム権限で動作するスケジュールジョブを同時に複数実行する場合においても、一部の処理がエラーになることなくスケジュールジョブを実行することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】ネットワーク構成を示す図である。
【図２】本発明の実施の形態に係るハードウェア構成図である。
【図３】本発明の実施の形態に係るサービス提供サーバＡ５００のモジュール構成図である。
【図４】本発明の実施の形態に係るサービス提供サーバＣ５６０のモジュール構成図である。
【図５】本発明の実施の形態に係るサービス提供サーバＢ５５０のモジュール構成図である。
【図６】本発明の実施の形態に係るサービス提供サーバＢ５５０のスケジュールジョブ登録画面の例である。
【図７】本発明の実施の形態に係るサービス提供サーバＢ５５０の登録済みスケジュールジョブ一覧画面の例である。
【図８】本発明の実施の形態に係るサービス提供サーバＡ５００のバッチ印刷情報の設定画面の例である。
【図９】本発明の実施の形態に係るサービス提供サーバＢ５５０の秘密鍵登録画面の例である。
【図１０】本発明の実施の形態に係るサービス提供サーバＡ５００のバッチ印刷情報の例である。
【図１１】本発明の実施の形態に係るクライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００、認証サーバＡ４００が実行するフローである。
【図１２】本発明の実施の形態に係るサービス提供サーバＡ５００が実行するフローである。
【図１３】本発明の実施の形態に係るクライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００、認証サーバＢ４５０が実行するフローである。
【図１４】本発明の実施の形態に係るクライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００、サービス提供サーバＢ５５０が実行するフローである。
【図１５Ａ】本発明の実施の形態に係るサービス提供サーバＡ５００、サービス提供サーバＢ５５０、サービス提供サーバＣ５６０、認証サーバＡ４００が実行するフローである（その１）。
【図１５Ｂ】本発明の実施の形態に係るサービス提供サーバＡ５００、サービス提供サーバＢ５５０、サービス提供サーバＣ５６０、認証サーバＡ４００が実行するフローである（その２）。
【図１６】本発明の実施の形態に係るサービス提供サーバＡ５００が実行するフローである。
【図１７】本発明の実施の形態に係るダイジェスト認証のチャレンジの例である。
【図１８】本発明の実施の形態に係るダイジェスト認証のレスポンスの例である。
【図１９】本発明の第２の実施の形態に係るサービス提供サーバＡ５００が実行するフローである。
【発明を実施するための形態】
【００１２】
本発明の目的は、サービス提供サーバ同士が連携してスケジュールジョブを実行するシステムにおいて、夜間バッチ印刷等のユーザが介在しない自動ワークフローを実行する場合に、サービス提供サーバが同時実行可能な処理数を制限している場合においても、実行数制限のエラーになることなくスケジュールジョブを実行することである。
【００１３】
以降、本発明を実施するための最良の形態について図面を用いて説明する。
【００１４】
図１は、本発明の実施例のシステム構成を示すブロック図である。
【００１５】
１００は、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ１００）であり、本発明ではＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ（ＷＷＷ）システムが構築されている。１０１は各構成要素を接続するＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ１０１）である。ＬＡＮ１０１は、ＷＡＮ１００を介することで互いの装置は通信可能になる。
【００１６】
２００はユーザが操作するクライアントＰＣ２００であり、後述するサービス提供サーバＡ５００やサービス提供サーバＢ５５０に対してリクエストを発行する。
【００１７】
３００はユーザのアクセスを適切なＩｄＰへと誘導する認証サービス決定サーバである。
【００１８】
４００および４５０はそれぞれ認証を行う認証サーバＡ，Ｂであり、ともにＩｄＰ（アイデンティティプロバイダ装置）として動作する。なお認証サービスは２つに限定されるものではない。どのＩｄＰが実際の認証を行うかはアクセスしてきたユーザによって異なる。５００や５５０や５６０はそれぞれサービスを提供するサービス提供サーバＡ５００，Ｂ５５０、Ｃ５６０であり、認証されたユーザに対してサービスを提供する。サービス提供サーバＡ５００はクライアントＰＣ２００やサービス提供サーバＢ５５０からのリクエストを受信して文書生成を行う。サービス提供サーバＢ５５０はクライアントＰＣ２００やサービス提供サーバＡ５００からのリクエストに応じて保持するデータの表示・更新等を行う。サービス提供サーバＣ５６０はクライアントＰＣ２００やサービス提供サーバＡ５００からのリクエストを受信して文書印刷を行う。なお、サービス提供サーバＡ５００，サービス提供サーバＢ５５０，サービス提供サーバＣ５６０は文書生成サービスやクラウドプラットフォーム、文書印刷サービスに限定されるものではなく、別のサービスであってもよい。またクライアントＰＣ２００、認証サービス決定サーバ３００、認証サーバＡ４００、認証サーバＢ４５０、サービス提供サーバＡ５００、サービス提供サーバＢ５５０、サービス提供サーバＣ５６０はそれぞれＷＡＮネットワーク１００およびＬＡＮ１０１を介して接続されている。なおクライアントＰＣ２００およびそれぞれのサービスはそれぞれ個別のＬＡＮ上に構成されていてもよいし同一のＬＡＮ上に構成されていてもよい。また同一のＰＣ上に構成されていてもよい。認証サービス決定サーバ３００、認証サーバＡ４００、サービス提供サーバＡ５００、サービス提供サーバＣ５６０は同じネットワーク内（イントラネット内）に構築されたサーバ群であり、認証サーバＢ４５０、サービス提供サーバＢ５５０は同じネットワーク内（イントラネット内）に構築されたサーバ群となる。
【００１９】
クライアントＰＣ２００はまず、バッチ印刷用のスケジュールジョブを登録するためサービス提供サーバＢ５５０にアクセスする。サービス提供サーバＢ５５０は未認証のユーザアクセスを受け付けると、不図示の認証画面を表示し、ユーザ認証を行う。ユーザを認証すると、バッチ印刷用のスケジュールジョブ登録画面の表示を行う。
【００２０】
図６は、本実施の形態に係るサービス提供サーバＢ５５０が表示するバッチ印刷用のスケジュールジョブ登録画面６０１の例である。スケジュールジョブ登録画面６０１は、スケジュールジョブの名前を設定するジョブ情報設定領域６０２、スケジュールジョブを開始する時刻を設定するジョブ開始時刻設定領域６０３、スケジュールジョブで実行されるバッチ印刷の印刷パラメーターを設定する印刷パラメーター設定領域６０４、およびこれらの設定を登録する登録ボタン６０５から成る。ユーザ（管理者）は、スケジュールジョブ登録画面６０１を操作し、スケジュールジョブを実行したい時刻および印刷パラメーター等を入力して登録ボタン６０５を押す。登録ボタン６０５が押下されると、サービス提供サーバＢ５５０は、指示された設定をテナントごとの管理領域に保存する。保存されたスケジュールジョブに関する各種設定は、サービス提供サーバＢ５５０が表示するスケジュールジョブ一覧画面でいつでも確認可能である。
【００２１】
図７は、本実施の形態に係るサービス提供サーバＢ５５０が表示するスケジュールジョブ一覧画面７０１の例である。一覧表示により、スケジュールジョブの名前７０２やジョブの開始時刻７０３を確認することが出来る。
【００２２】
次にクライアントＰＣ２００は、バッチ印刷用の事前設定を行うためにサービス提供サーバＡ５００にアクセスする。サービス提供サーバＡ５００は未認証のユーザアクセスを受け付けると、不図示の認証画面を表示し、ユーザ認証を行う。ユーザを認証すると、バッチ印刷用の設定画面の表示を行う。
【００２３】
図８は、本実施の形態に係るサービス提供サーバＡ５００が表示するバッチ印刷用の設定画面８０１の例である。バッチ印刷用の設定画面８０１には、サービス提供サーバＣ５６０のアクセストークン（以降、サーバＣアクセストークン）をサービス提供サーバＡ５００の管理領域に設定するためのボタン８０２、サービス提供サーバＢ５５０のアクセストークン（以降、サーバＢアクセストークン）をサービス提供サーバＡ５００の管理領域に設定するためのボタン８０３、サービス提供サーバＢ５５０から来るバッチ印刷要求の検証を行うための秘密鍵８０４が表示されている。アクセストークンは、各サービス提供サーバの機能へのアクセスを許可するトークンで、通常、ユーザによる事前認可操作を経て認証サーバから発行される。ユーザ（管理者）によりボタン８０２、８０３が押下されると、サービス提供サーバＡ５００は、それぞれのサーバから取得したアクセストークンをテナントの識別番号（テナントＩＤ）に紐付けて管理領域へ保存する。なお、秘密鍵８０４については、不図示の秘密鍵生成画面で生成され、テナントＩＤに紐付けて管理済みとする。
【００２４】
さらにクライアントＰＣ２００は、バッチ印刷用の事前設定を行うためにサービス提供サーバＢ５５０にアクセスする。サービス提供サーバＢ５５０における認証手続きは前記と同様である。ユーザ認証済みであれば、秘密鍵登録画面の表示を行う。
【００２５】
図９は、本実施の形態に係るサービス提供サーバＢ５５０が表示する秘密鍵登録画面９０１の例である。ユーザ（管理者）は、秘密鍵入力エリア９０２に対して、前記バッチ印刷用の設定画面８０１に表示された秘密鍵を入力し、登録ボタン９０３を押す。登録ボタン９０３が押下されると、サービス提供サーバＢ５５０は、秘密鍵をテナントごとの管理領域に保存する。
【００２６】
サービス提供サーバＢ５５０はスケジュールジョブの開始時刻になると、スケジュールジョブを開始し、サービス提供サーバＡ５００にバッチ印刷を要求する。
【００２７】
サービス提供サーバＡ５００はバッチ印刷の要求を受け付けると、その要求が妥当であるかを検証し、妥当であればサーバＢアクセストークンを使ってサービス提供サーバＢ５５０からデータを取得し、生成した文書をサーバＣアクセストークンを使ってサービス提供サーバＣ５６０に送信する。
【００２８】
サービス提供サーバＡ５００は未認証のユーザアクセスを受け付けると、アクセスを認証サービス決定サーバ３００にリダイレクトさせる。認証サービス決定サーバ３００は未認証アクセスを適切な認証サーバＡ４００または認証サーバＢ４５０にリダイレクトさせる。認証サーバＡ４００または認証サーバＢ４５０はユーザを認証すると、再度ユーザをサービス提供サーバＡ５００にリダイレクトさせ、サービス提供サーバＡ５００がユーザにサービスを提供する。
【００２９】
認証サービス決定サーバ３００は、認証装置を決定するキーとなる情報と、認証装置の情報とを紐付けて記憶する。認証サービス決定サーバ３００が未認証のユーザからのアクセスを受け付けると、ユーザがアクセスした際に提供される情報から認証装置を決定するキーとなる情報を取り出し認証装置の情報を取得する。その後、取り出した認証装置の情報に従い、ユーザを適切な認証サービスにアクセスするように誘導する。
【００３０】
認証サーバＡ４００が認証サービス決定サーバ３００からリダイレクトされた未認証のアクセスを受け付けると、不図示のユーザ認証画面を表示し、ユーザにユーザＩＤとパスワードの入力を促し認証を行う。認証完了後のアクセス先情報を受け取っていれば、その情報にもとづいてユーザのアクセスをリダイレクトさせる。たとえば認証完了後のリダイレクト先としてサービス提供サーバＡ５００が指定されていた場合は、ユーザのアクセスをサービス提供サーバＡ５００にリダイレクトさせる。このとき、ユーザ認証済であることを示す情報として認証セッションＩＤを発行し、認証セッションＩＤを付加してサービス提供サーバＡ５００にリダイレクトさせる。認証セッションＩＤとは、任意の一意の文字列で、認証サーバＡ４００がユーザＩＤと認証セッションＩＤとを紐付けて記憶する。以降、認証サーバＡ４００は、ユーザがアクセスした際に提供される認証セッションＩＤからユーザＩＤを特定する。認証セッションＩＤは、サービス提供サーバＡ５００がクライアントＰＣ２００のブラウザに返すレスポンスページに付加され、クライアントＰＣ２００のブラウザに保存される。以降、クライアントＰＣ２００のブラウザからサービス提供サーバＡ５００にアクセスすると、認証セッションＩＤがサービス提供サーバＡ５００に送られる。認証セッションＩＤは一定期間有効で、有効期限は認証サーバＡ４００が管理する。
【００３１】
サービス提供サーバＡ５００が認証サーバＡ４００からリダイレクトされたアクセスを受け付けると、すでにユーザのアクセスは認証が済んでいるため、ユーザはサービス提供サーバＡ５００が提供するサービスを受けることができる。なお、本実施例において、認証セッションＩＤはＣｏｏｋｉｅ「ＡＵＴＨ＿ＳＥＳＳＩＯＮ＿ＩＤ」に付加することを想定する。Ｃｏｏｋｉｅ以外の方法で認証セッションＩＤを付加するようことも可能である。
【００３２】
また、認証サーバＡ４００は、ユーザＩＤとパスワードを受け付けてユーザ認証を行うＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を備える。前記ユーザ認証ＡＰＩはユーザを認証すると認証セッションＩＤを呼び出し元に返す。さらに、認証サーバＡ４００は、認証セッションＩＤを受け付けて認証セッションＩＤの妥当性を検証するＡＰＩを備える。認証セッション妥当性検証のＡＰＩは検証結果を呼び出し元に返す。さらに、認証サーバＡ４００は、認証セッションＩＤをパラメータに受け取り、その認証セッションＩＤに基づいて各サービス提供サーバへのアクセストークンおよびリフレッシュトークンを発行するＡＰＩを備える。なお、リフレッシュトークンとは、アクセストークンの期限が切れた際に、再発行を行う最必要になる無期限のトークンである。アクセストークン発行ＡＰＩは、発行したアクセストークンおよびリフレッシュトークンを呼び出し元に返す。さらに、認証サーバＡ４００は、アクセストークンを受け付けてアクセストークンの妥当性を検証するＡＰＩを備える。アクセストークン妥当性検証のＡＰＩは検証結果を呼び出し元に返す。
【００３３】
認証サーバＢ４５０が認証サービス決定サーバ３００からリダイレクトされた未認証のアクセスを受け付けると、不図示のユーザ認証画面を表示し、ユーザにユーザＩＤとパスワードの入力を促し認証を行う。認証に成功すると認証の証拠を生成し、認証の証拠の検証を行うことが可能な認証サービスへ、ユーザのアクセスをリダイレクトさせる。
【００３４】
図２は本実施の形態に係るクライアントＰＣ２００の構成を示す図である。また認証サービス決定サーバ３００、認証サーバＡ４００、認証サーバＢ４５０、サービス提供サーバＡ５００、サービス提供サーバＢ５５０、サービス提供サーバＣ５６０を提供するサーバコンピューターの構成も同様である。これらサービスはサーバであり、図２に示されるハードウェアブロック図の構成を有する。このように、本実施形態のクライアントＰＣ２００およびサーバには一般的な情報処理装置のハードウェア構成を適用できる。
【００３５】
図２において、ＣＰＵ２０１は、ＲＯＭ２０３のプログラム用ＲＯＭに記憶された、或いはハードディスク２１１からＲＡＭ２０２にロードされたＯＳやアプリケーション等のプログラムを実行する。ここでＯＳとはコンピュータ上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをＯＳと呼ぶ。後述する各フローチャートの処理はこのプログラムの実行により実現できる。ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）２０５は、キーボード（ＫＢ）２０９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）２０６は、ＣＲＴディスプレイ２１０の表示を制御する。ディスクコントローラ（ＤＫＣ）２０７は各種データを記憶するハードディスク（ＨＤ）２１１やフロッピー（登録商標）ディスク（ＦＤ）等におけるデータアクセスを制御する。ＮＣ２１２はネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。
【００３６】
尚、後述の全ての説明においては、特に断りのない限り実行のハード上の主体はＣＰＵ２０１であり、ソフトウェア上の主体はハードディスク（ＨＤ）２１１にインストールされたアプリケーションプログラムである。
【００３７】
図５は、本実施の形態に係るサービス提供サーバＢ５５０のモジュール構成図である。サービス提供サーバＢ５５０は、アクセス制御モジュール５５１、ページ生成モジュール５５２、スケジュールジョブ登録モジュール５５３１，５５４１、スケジュールジョブ情報管理モジュール５５３２，５５４２、スケジュールジョブ実行モジュール５５３３，５５４３、バッチ印刷要求モジュール５５３４，５５４４、秘密鍵管理モジュール５５３５，５５４５、認証情報付加モジュール５５３６，５５４６、業務データ管理モジュール５５３７，５５４７を備える。
【００３８】
サービス提供サーバＢ５５０がアクセスを受け付けると、ユーザのアクセスが認証済みであるか否かをアクセス制御モジュール５５１が判断し、未認証であればページ生成モジュール５５２が認証画面を表示する。認証済みであればサービス提供サーバＢ５５０はサービスを提供する。
【００３９】
スケジュールジョブ登録モジュール５５３１，５５４１はスケジュールジョブを登録する。ジョブ開始時間等のスケジュールジョブ関連情報は、スケジュールジョブ情報管理モジュール５５３２，５５４２によって管理される。
【００４０】
スケジュールジョブの開始時刻になると、スケジュールジョブ実行モジュール５５３３，５５４３がスケジュールジョブを実行する。バッチ印刷要求モジュール５５３４，５５４４はスケジュールジョブ実行モジュール５５３３，５５４３から呼び出され、サービス提供サーバＡ５００に対してバッチ印刷の要求リクエストを行う。サービス提供サーバＡ５００にて前記バッチ印刷リクエストの妥当性検証を行うため、秘密鍵管理モジュール５５３５，５５４５が秘密鍵の保存および取得を行い、認証情報付加モジュール５５３６，５５４６が妥当性検証に必要な情報を生成してリクエストに付加する。
【００４１】
サービス提供サーバＢ５５０が業務データ取得のリクエストを受け付けると、業務データ管理モジュール５５３７，５５４７が業務データを取得し、リクエストの発行元に返却する。
【００４２】
また、スケジュールジョブ登録モジュール５５３１，５５４１、スケジュールジョブ情報管理モジュール５５３２，５５４２、スケジュールジョブ実行モジュール５５３３，５５４３、バッチ印刷要求モジュール５５３４，５５４４、秘密鍵管理モジュール５５３５，５５４５、認証情報付加モジュール５５３６，５５４６、業務データ管理モジュール５５３７，５５４７は、テナント毎に管理される。なお、これらテナント毎に管理されるモジュールは同一のハードディスク（ＨＤ）２１１に記憶されてテナント毎のデータを論理的に分離して管理するようにしてもよいし、ハードディスク（ＨＤ）２１１を分けて物理的に分離して管理するようにしてもよい。
【００４３】
図３は、本実施の形態に係るサービス提供サーバＡ５００のモジュール構成図である。サービス提供サーバＡ５００は、アクセス制御モジュール５０１、データ取得モジュール５０２、文書生成モジュール５０３、ページ生成モジュール５０４、アクセストークン取得モジュール５０５、バッチ印刷情報管理モジュール５０６、秘密鍵生成モジュール５０７、文書送信モジュール５０８、認証情報検証モジュール５０９、アクセストークン検証モジュール５１０を備える。
【００４４】
サービス提供サーバＡ５００がアクセスを受け付けると、アクセス制御モジュール５０１はアクセスが認証済みかどうかを判断する。アクセスが認証済みであればサービス提供サーバＡ５００はサービスを提供する。
【００４５】
サービス提供サーバＡ５００は、サービス提供サーバＢ５５０からのバッチ印刷リクエストに応じてバッチ印刷を行う。バッチ印刷リクエストを受けると、認証情報検証モジュール５０９は、受理したバッチ印刷リクエストを検証する。検証に必要な情報は、あらかじめＨＤ２１１に保存されており、バッチ印刷情報管理モジュール５０６によって管理される。
【００４６】
図１０はＨＤ２１１に保存されたバッチ印刷情報の一例である。後述する秘密鍵およびサーバＢのあるユーザおよびサーバＣのあるユーザのアクセストークンおよびリフレッシュトークンが、サービス提供サーバＡ５００のテナントＩＤに紐付けられて保存されている。例では、テナントＩＤ「１０００ＡＡ」と「１０００ＢＢ」の２つのテナントに関するバッチ印刷情報が保存されている。バッチ印刷情報として保存されている秘密鍵１００２は、バッチ印刷リクエストの検証に使用される。具体的な検証方法については後述する。
【００４７】
あらかじめＨＤ２１１に保存されるバッチ印刷情報のうち、秘密鍵については、秘密鍵生成モジュール５０７が生成したものであり、サービス提供サーバＡ５００のテナントＩＤに紐付けて管理されている。また、バッチ印刷情報のうち、サーバＢのユーザのアクセストークンおよびサーバＣのユーザのアクセストークンは、アクセストークン取得モジュール５０５により夫々サービス提供サーバＢ５５０およびサービス提供サーバＣ５６０から取得され、こちらもサービス提供サーバＡ５００のテナントＩＤに紐付けて管理されている。アクセストークンの取得は、例えば、ＯＡｕｔｈの認証フローを実行することで取得する。
【００４８】
データ取得モジュール５０２は、サーバＢアクセストークンを使用してサービス提供サーバＢ５５０から業務データを取得する。文書生成モジュール５０３は、不図示のフォーム管理モジュールが管理するフォームを取得して、データ取得モジュール５０２が取得した業務データとフォームから文書データを生成する。文書送信モジュール５０８は、文書生成モジュール５０３が生成した文書データを、サーバＣアクセストークンを使用してサービス提供サーバＣ５６０に送信する。アクセストークン検証モジュール５１０は、サーバＢおよびサーバＣアクセストークンの有効期限が切れていないかを判断し、切れている場合にトークンの再取得を行う。実行数管理モジュール５１１は、バッチ印刷処理の実行中処理数１００１を管理する。また、実行数管理モジュール５１１は、サービス提供サーバＢ５５０の同時実行可能処理数上限値をＨＤ２１１で管理する。
【００４９】
図４は、本実施の形態に係るサービス提供サーバＣ５６０のモジュール構成図である。サービス提供サーバＣ５６０は、アクセス制御モジュール５６１、ページ生成モジュール５６２、文書印刷モジュール５６３を備える。
【００５０】
サービス提供サーバＣ５６０がアクセスを受け付けると、ユーザのアクセスが認証済みであるか否かをアクセス制御モジュール５６１が判断し、未認証であればページ生成モジュール５６２が認証画面を表示する。認証済みであればサービス提供サーバＣ５６０はサービスを提供する。
【００５１】
文書印刷モジュール５６３は、サービス提供サーバＡ５００から送信された文書を印刷する。
【００５２】
図１１は本実施の形態に係る、クライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００および認証サーバＡ４００が実行するフローである。本フローは、クライアントＰＣ２００のブラウザに表示されるバッチ印刷用の設定画面８０１において、ユーザがサーバＣアクセストークンの設定ボタン８０２を押下することによって始まる（ステップ１１０１）。
【００５３】
ステップＳ１１０２でサービス提供サーバＡ５００は、サーバＣアクセストークンの設定要求を受け付ける。本フロー開始前に、クライアントＰＣ２００のブラウザは、ログイン操作によりサービス提供サーバＡ５００へのユーザ認証を済ませており、サービス提供サーバＣ５００の認証セッションＩＤは認証サーバＡ４００により発行済みである。サービス提供サーバＣ５００の認証セッションＩＤは、クライアントＰＣ２００のブラウザによりＵＲＬパラメーター「ＡＵＴＨ＿ＩＤ」に指定され、本ステップＳ１１０２の設定要求リクエストに含まれている。
【００５４】
ステップＳ１１０３でサービス提供サーバＡ５００は、前記設定要求リクエストのＵＲＬパラメーターとしてパラメーター「ＡＵＴＨ＿ＩＤ」に含まれるサービス提供サーバＣ５００の認証セッションＩＤを取得する。
【００５５】
ステップＳ１１０４でサービス提供サーバＡ５００は、前記ステップＳ１１０２で取得したサービス提供サーバＣ５００の認証セッションＩＤをパラメーターに指定して認証サーバＡ４００のアクセストークン取得ＡＰＩを呼び出す。
【００５６】
ステップＳ１１０５で認証サーバ４００は、サービス提供サーバＡ５００からのサーバＣアクセストークン発行ＡＰＩ呼び出しを受け付け、ステップＳ１１０６でサーバＣアクセストークンおよびサーバＣリフレッシュトークンを発行する。そして、発行したアクセストークンおよびリフレッシュトークンをサービス提供サーバＡ５００に返す。
ステップＳ１１０７でサービス提供サーバＡ５００は、サーバＣアクセストークンおよびサーバＣリフレッシュトークンをＡＰＩの戻り値として受理する。
【００５７】
ステップＳ１１０８でサービス提供サーバＡ５００は、ステップＳ１１０７で受理したサーバＣアクセストークンおよびサーバＣリフレッシュトークンを、サービス提供サーバＡ５００のテナントＩＤに紐付けてＨＤ２１１に保存する。なお、テナントＩＤは、本フロー開始前のログイン完了時に既に特定され、サービス提供サーバＡ５００が識別済みとする。
【００５８】
ステップＳ１１０９でサービス提供サーバＡ５００は、サーバＣアクセストークンおよびサーバＣリフレッシュトークンの保存が完了したことを示す保存完了画面を、クライアントＰＣ２００のブラウザに返す。
【００５９】
ステップＳ１１１０でクライアントＰＣ２００のブラウザは、ステップＳ１１０９にて返された保存完了画面を表示する。
【００６０】
以上でクライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００および認証サーバＡ４００が実行するフローが終了する。なお、上記フローは認証サーバＡ４００のアクセストークン発行ＡＰＩによるアクセストークン取得のフローだが、サービス提供サーバＡ５００がサービス提供サーバＣ５６０にアクセスするために必要な情報が取得できるのであれば他の方法でも構わない。
【００６１】
図１２は本実施の形態に係る、サービス提供サーバＡ５００が実行するフローである。本フローは、サービス提供サーバＡ５００でのサーバＣアクセストークン取得時のエラー処理を示したフローである。なお、図１１と同様のフローにおいては、同じ符号を付与しており、以下、差異部分のみ説明する。
【００６２】
ステップＳ１２０１でサービス提供サーバＡ５００は、ステップＳ１１０７においてサーバＣアクセストークンおよびサーバＣリフレッシュトークンを正しく取得できたかを判断する。例えば、ステップＳ１１０３で取得した認証セッションＩＤの有効期限が切れていた場合などに、アクセストークンの取得が失敗する可能性がある。
【００６３】
正しく取得できた場合、ステップＳ１１０８に遷移し、取得に失敗した場合、ステップＳ１２０２に遷移する。
【００６４】
サーバＣアクセストークンおよびサーバＣリフレッシュトークンの取得に失敗した場合、ステップＳ１２０２でサービス提供サーバＡ５００は、サーバＣアクセストークンおよびサーバＣリフレッシュトークンの取得に失敗したことを示すエラー画面を、クライアントＰＣ２００のブラウザに返す。
【００６５】
以上でサービス提供サーバＡ５００が実行するフローが終了する。
【００６６】
図１３は本実施の形態に係る、クライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００および認証サーバＢ４５０が実行するフローである。本フローは、クライアントＰＣ２００のブラウザに表示されるバッチ印刷用の設定画面８０１において、ユーザがサーバＢアクセストークンの設定ボタン８０３を押下することによって始まる（ステップ１３０１）。
【００６７】
ステップＳ１３０２でサービス提供サーバＡ５００は、サービス提供サーバＢ５５０のアクセストークン設定要求を受け付ける。ステップＳ１３０３でサービス提供サーバＡ５００は、認証サーバＢ４５０へリダイレクトを行う。その際、認証サーバＢ４５０が認可設定要求アプリケーションおよび認可完了後のリダイレクト先を識別できるように、リダイレクトパラメータとして、ＵＲＬにアプリケーションのクライアント識別子およびリダイレクトＵＲＬを付与する。クライアント識別子は認証サーバＢ４５０へのアクセス元がサービス提供サーバＡ５００であることを示す識別ＩＤである。
【００６８】
ステップＳ１３０４で認証サーバＢ４５０は、不図示の認可画面の表示をクライアントＰＣ２００のブラウザに返す。
【００６９】
ステップＳ１３０５でクライアントＰＣ２００のブラウザは、ステップＳ１３０４にて返された認可画面を表示する。ユーザは、ブラウザに表示された認可画面に対して、サービス提供サーバＢ５５０のユーザＩＤおよびパスワードを入力し、認可の許可ボタンを押下する。
【００７０】
ユーザによる認可ボタン押下を受けて、ステップＳ１３０６でクライアントＰＣ２００のブラウザは、認証サーバＢ４５０に対して、サービス提供サーバＡ５００からサービス提供サーバＢ５５０へのアクセス許可要求を行う。
【００７１】
ステップＳ１３０７で認証サーバＢ４５０は、クライアントＰＣ２００のブラウザからの認可要求を受け付ける。ステップＳ１３０８で認証サーバＢ４５０は、サービス提供サーバＡ５００へリダイレクトを行う。リダイレクト先は、ステップＳ１３０３でサービス提供サーバＡ５００が認証サーバＢ４５０へのリダイレクトパラメータとして、ＵＲＬに付与したものである。サービス提供サーバＡ５００へのリダイレクトＵＲＬパラメーターには認可コードが含まれる。認可コードは、アクセストークンを取得するために使用される、ユーザのアクセス許可を表す短期間のみ有効なトークンである。
【００７２】
リダイレクトされたアクセスを受け付けると、ステップＳ１３０９でサービス提供サーバＡ５００は、認証サーバＢ４５０に対して、サーバＢアクセストークンの取得リクエストを行う。この際サービス提供サーバＡ５００は、リクエストのＵＲＬパラメーターとして、リダイレクトのＵＲＬパラメーターに含まれていた認可コードを含める。
【００７３】
ステップＳ１３１０で認証サーバ４５０は、サービス提供サーバＡ５００からのサーバＢアクセストークン取得リクエストを受理する。ステップＳ１３１１で認証サーバ４５０は、サーバＢアクセストークンおよびサーバＢリフレッシュトークンを発行する。そして、それらのトークンをサービス提供サーバＡ５００にレスポンスとして返却する。
【００７４】
ステップＳ１３１２でサービス提供サーバＡ５００は、サーバＢアクセストークンおよびサーバＢリフレッシュトークンをレスポンスとして受理する。
【００７５】
ステップＳ１３１３でサービス提供サーバＡ５００は、ステップＳ１３１２で受理したサーバＢアクセストークンおよびサーバＢリフレッシュトークンをサービス提供サーバＡ５００のテナントＩＤに紐付けてＨＤ２１１に保存する。なお、テナントＩＤは、本フロー開始前のログイン完了時に既に特定され、サービス提供サーバＡ５００が識別済みとする。
【００７６】
ステップＳ１３１４でサービス提供サーバＡ５００は、サーバＢアクセストークンおよびサーバＢリフレッシュトークンの保存が完了したことを示す保存完了画面を、クライアントＰＣ２００のブラウザに返す。
【００７７】
ステップＳ１３１５でクライアントＰＣ２００のブラウザは、ステップＳ１３１４にて返された保存完了画面を表示する。
【００７８】
以上でクライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００および認証サーバＢ４５０が実行するフローが終了する。なお、上記フローはＯａｕｔｈによるアクセストークン取得のフローだが、サービス提供サーバＡ５００がサービス提供サーバＢ５５０にアクセスするために必要な情報が取得できるのであれば他の方法でも構わない。
【００７９】
図１４は本実施の形態に係る、クライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００およびサービス提供サーバＢ５５０が実行するフローである。本フローは、クライアントＰＣ２００のブラウザに表示される不図示の秘密鍵発行画面において、ユーザが秘密鍵発行ボタンを押下することによって始まる（ステップ１４０１）。
【００８０】
ステップＳ１４０２でサービス提供サーバＡ５００は、秘密鍵発行要求を受け付ける。
【００８１】
ステップＳ１４０３でサービス提供サーバＡ５００は、秘密鍵の発行を行う。本実施例における秘密鍵は、ＵＵＩＤとサービス提供サーバＡ５００のテナントＩＤを組み合わせたものとするが、別な内容でも構わない。
【００８２】
ステップＳ１４０４でサービス提供サーバＡ５００は、ステップＳ１４０３で発行した秘密鍵を、サービス提供サーバＡ５００のテナントＩＤに紐付けてＨＤ２１１に保存する。なお、テナントＩＤは、本フロー開始前のログイン完了時に既に特定され、サービス提供サーバＡ５００が識別済みとする。
【００８３】
ステップＳ１４０５でサービス提供サーバＡ５００は、ユーザが、ステップＳ１４０３で発行された秘密鍵を確認するための秘密鍵確認画面８０１を、クライアントＰＣ２００のブラウザに返す。
【００８４】
ステップＳ１４０６でクライアントＰＣ２００のブラウザは、ステップ１４０５にて返された秘密鍵確認画面８０１を表示する。ユーザは、後述する秘密鍵登録画面９０１にて秘密鍵の指定を行うために、表示された秘密鍵をメモもしくはコピーする。
【００８５】
ステップＳ１４０７でクライアントＰＣ２００のブラウザは、サービス提供サーバＢが提供する秘密鍵登録画面９０１にアクセスする。必要に応じてユーザ認証を行う。
【００８６】
ステップＳ１４０８でサービス提供サーバＢ５５０は、秘密鍵の登録操作を行うための秘密鍵登録画面９０１を、クライアントＰＣ２００のブラウザに返す。
【００８７】
ステップＳ１４０９でクライアントＰＣ２００のブラウザは、ステップ１４０８にて返された秘密鍵登録画面９０１を表示する。
【００８８】
ステップＳ１４１０でクライアントＰＣ２００のブラウザは、サービス提供サーバＢ５５０に対して、秘密鍵登録リクエストを発行する。リクエストのＵＲＬパラメータとして秘密鍵が含まれるため、クライアントＰＣ２００とサービス提供サーバＢ５５０間の通信は暗号化されることが望ましい。
【００８９】
ステップＳ１４１１でサービス提供サーバＢ５５０は、クライアントＰＣ２００のブラウザからの秘密鍵登録リクエストを受理する。
【００９０】
ステップＳ１４１２でサービス提供サーバＢ５５０は、ステップＳ１４１１で受理したリクエストに含まれる秘密鍵を、サービス提供サーバＡ５００のテナントＩＤに紐付けてＨＤ２１１に保存する。なお、テナントＩＤは、あらかじめ不図示の保存画面によりサービス提供サーバＢ５５０に保存済みである。サービス提供サーバＡ５００とサービス提供サーバＢ５５０のテナントＩＤは１対１に紐付いているものとする。また、秘密鍵およびサービス提供サーバＡ５００のテナントＩＤは、サービス提供サーバＢ５５０のテナントごとに別な領域に保存され、別のテナントからはアクセスできないよう管理されていることが望ましい。また、秘密鍵はサービス提供サーバＢ５５０のテナントＩＤが同一であれば、スケジュールジョブが別であっても同じものが使用される。
【００９１】
以上でクライアントＰＣ２００のブラウザ、サービス提供サーバＡ５００およびサービス提供サーバＢ５５０が実行するフローが終了する。
【００９２】
図１５Ａおよび図１５Ｂは本実施の形態に係る、サービス提供サーバＡ５００、サービス提供サーバＣ５６０、サービス提供サーバＢ５５０および認証サーバＡ５００が実行するフローである。本フローは、サービス提供サーバＢ５５０のスケジュールジョブ情報管理モジュール５５３２、５５４２が管理するスケジュールジョブの実行開始時間に従って、スケジュールジョブ実行モジュール５５３３、５５４３によりスケジュールジョブが開始されることによって始まる。
【００９３】
ステップＳ１５０１でサービス提供サーバＢ５５０のスケジュールジョブ実行モジュール５５３３、５５４３は、スケジュールジョブの実行を開始する。スケジュールジョブ実行モジュール５５３３、５５４３は、スケジュールジョブ情報管理モジュール５５３２、５５４２が管理するすべてのスケジュールジョブの実行開始時間を確認し、実行開始時間となったスケジュールジョブの実行を開始する。スケジュールジョブ実行モジュール５５３３、５５４３は、スケジュールジョブの実行を開始すると、バッチ印刷要求モジュール５５３４、５５４４を呼び出し、その後の処理を任せる。
【００９４】
ステップＳ１５０２でサービス提供サーバＢ５５０のバッチ印刷要求モジュール５５３４、５５４４は、サービス提供サーバＡ５００に対してバッチ印刷の要求を行う。バッチ印刷要求はユーザログインを必要としないスケジュールジョブとして実行されるため、通常のログインを経た印刷要求とは異なり、実行の主体はある特定のユーザではなくサービス提供サーバＢ５５０そのもの（システム権限）となる。このため、要求を受けるサービス提供サーバＡ５００は、バッチ印刷要求の妥当性をユーザやテナントＩＤから判断することが出来ない。
【００９５】
ステップＳ１５０３でサービス提供サーバＡ５００のアクセス制御モジュール５０１は、バッチ印刷要求を受け付ける。前述の通り、バッチ印刷要求には認証セッションＩＤ等のユーザを識別するための情報が含まれていないため、後述するステップＳ１５０４〜Ｓ１５１２にてバッチ印刷要求を受け付けてよいかどうかの検証を行う。
【００９６】
ステップＳ１５０４でサービス提供サーバＡ５００の認証情報検証モジュール５０９は、サービス提供サーバＢ５５０に対して、ダイジェスト認証のチャレンジを送信する。
【００９７】
図１７は、本実施の形態に係る認証情報検証モジュール５０９が送信するダイジェスト認証のチャレンジの例（ＷＷＷ−Ａｕｔｈｅｎｔｉｃａｔｅレスポンスヘッダの一部）である。ｒｅａｌｍ１７０２にはサービス提供サーバＡ５００のサービス名がセットされている。ａｌｇｏｒｉｔｈｍ１７０３はダイジェスト認証アルゴリズムで「ＳＨＡ−２５６」がセットされている。ｎｏｎｃｅ１７０４には認証情報検証モジュール５０９が生成するワンタイムトークンがセットされている。
【００９８】
ステップＳ１５０５でサービス提供サーバＢ５５０のアクセス制御モジュール５５１は、ダイジェスト認証のチャレンジを受信し、それを認証情報付加モジュール５５３６、５５４６に渡す。
【００９９】
ステップＳ１５０６でサービス提供サーバＢ５５０の秘密鍵管理モジュール５５３５、５５４５は、ステップＳ１４１２でＨＤ２１１に保存された秘密鍵を取得する。秘密鍵管理モジュール５５３５、５５４５は、当該のスケジュールジョブを実行しているテナントＩＤを特定し、そのテナントＩＤに紐付けられた秘密鍵を取得する。秘密鍵管理モジュール５５３５、５５４５は、取得した秘密鍵を認証情報付加モジュール５５３６、５５４６に渡す。
【０１００】
ステップＳ１５０７でサービス提供サーバＢ５５０の認証情報付加モジュール５５３６、５５４６は、あらかじめ不図示の保存画面によりサービス提供サーバＢ５５０のＨＤ２１１に保存されたサービス提供サーバＡ５００のテナントＩＤを取得する。
【０１０１】
ステップＳ１５０８でサービス提供サーバＢ５５０の認証情報付加モジュール５５３６、５５４６は、ステップＳ１５０５でアクセス制御モジュール５５１から渡されたダイジェスト認証のチャレンジ、ステップＳ１５０６で秘密鍵管理モジュール５５３５、５５４５から渡された秘密鍵、ステップＳ１５０７で取得したサービス提供サーバＡ５００のテナントＩＤ、等からダイジェスト認証のレスポンスを作成する。
【０１０２】
図１８は、本実施の形態に係る認証情報付加モジュール５５３６、５５４６が作成するダイジェスト認証のチャレンジ（Ａｕｔｈｏｒｉｚａｔｉｏｎリクエストヘッダの一部）の例である。ｕｓｅｒｎａｍｅ１８０２にはステップＳ１５０６で取得したサービス提供サーバＡ５００のテナントＩＤをセットする。ｒｅａｌｍ１８０３およびｎｏｎｃｅ１８０４には、前記ダイジェスト認証のチャレンジに含まれる同項目の値をセットする。ｃｎｏｎｃｅ１８０６には認証情報付加モジュール５５３６、５５４６が生成するワンタイムトークンをセットする。そして、ｒｅｓｐｏｎｓｅ１８０７には、ｕｓｅｒｎａｍｅ１８０２、ｒｅａｌｍ１８０３、ｎｏｎｃｅ１８０４、ｃｎｏｎｃｅ１８０６およびステップＳ１５０６で秘密鍵管理モジュール５５３５、５５４５から渡された秘密鍵を連結したものをさらにａｌｇｏｒｉｔｈｍ１８０５に指定の「ＳＨＡ−２５６」でダイジェスト化した値をセットする。
【０１０３】
ステップＳ１５０９でサービス提供サーバＢ５５０の認証情報付加モジュール５５３６、５５４６は、サービス提供サーバＡ５００に対して、ステップＳ１５０８で作成したダイジェスト認証のレスポンスを送信する。なお、この際、認証情報付加モジュール５５３６、５５４６は、ダイジェスト認証のレスポンスとは別に、ステップＳ１５０７で取得したサービス提供サーバＡ５００のテナントＩＤをＵＲＬパラメーター「ｔｅｎａｎｔ＿ＩＤ」に設定する。
【０１０４】
ステップＳ１５１０でサービス提供サーバＡ５００のアクセス制御モジュール５５１は、サービス提供サーバＢ５５０から送信されたダイジェスト認証のレスポンスおよびＵＲＬパラメーターを受信する。アクセス制御モジュール５５１は、本ステップＳ１５１０にて、ＵＲＬパラメーター「ｔｅｎａｎｔ＿ＩＤ」の値を取得し、アクセスがどのテナントからのものかを判定する。
【０１０５】
ステップＳ１５１１でサービス提供サーバＡ５００のバッチ印刷情報管理モジュール５０６は、ステップＳ１５１０で受信したＵＲＬパラメーター「ｔｅｎａｎｔ＿ＩＤ」の値をキーとして、ＨＤ２１１に保存されたバッチ印刷情報内を検索し、該当のテナントＩＤに紐づく秘密鍵を特定し取得する。そして、バッチ印刷情報管理モジュール５０６は、取得した秘密鍵およびテナントＩＤを認証情報検証モジュール５０９に渡す。
ステップＳ１５１２でサービス提供サーバＡ５００の認証情報検証モジュール５０９は、ステップＳ１５１０で受信したダイジェスト認証のレスポンスの妥当性を検証する。認証情報検証モジュール５０９は、ステップＳ１５１０で受信したダイジェスト認証のレスポンス（Ａｕｔｈｏｒｉｚａｔｉｏｎリクエストヘッダ）のｕｓｅｒｎａｍｅ１８０２、ｒｅａｌｍ１８０３、ｎｏｎｃｅ１８０４、ｃｎｏｎｃｅ１８０６およびステップＳ１５１１で渡された秘密鍵を、認証情報付加モジュール５５３６、５５４６でのレスポンス生成時と同じ方法で結合し、ａｌｇｏｒｉｔｈｍ１８０５に指定された「ＳＨＡ−２５６」でダイジェスト化する。認証情報検証モジュール５０９は、そのダイジェストかされた値と、ダイジェスト認証のレスポンスのｒｅｓｐｏｎｓｅ１８０５の値とを比較して、一致するかで妥当性を検証する。一致すれば妥当であるとみなす。ダイジェスト認証のレスポンスが妥当と判断された場合、ステップＳ１５１３に遷移する。レスポンスが妥当でないと判断された場合、サービス提供サーバＡ５００のページ生成モジュール５０４はエラー画面を生成し、サービス提供サーバＢ５５０へ送信する。この場合、バッチ印刷のスケジュールジョブはここで中断される。
【０１０６】
ステップＳ１５１３でサービス提供サーバＡ５００の認証情報検証モジュール５０９は、バッチ印刷の実行依頼を受け付けたことを示す受付完了通知を、クライアントＰＣ２００のブラウザに返す。
【０１０７】
ステップＳ１５１４でクライアントＰＣ２００のブラウザは、ステップ１５１３にて返された受付完了通知を受理する。
【０１０８】
以上のステップで、サービス提供サーバＡ５００でのバッチ印刷の受付が完了する。以降のステップでは、サービス提供サーバＡ５００が受け付けたバッチ印刷の実行を行う。
【０１０９】
ステップＳ１５２７でサービス提供サーバＡ５００の実行数管理モジュール５１１は、該当のテナントＩＤの実行中処理数１００１を取得する。また、ＨＤ２１１から同時実行可能処理数上限値を取得する。そして、実行数管理モジュール５１１は該当のテナントＩＤの実行中処理数１００１が前記同時実行可能処理数上限値未満であるかを判定する。
【０１１０】
ステップＳ１５２７において、該当のテナントＩＤの実行中処理数１００１が前記同時実行可能処理数上限値に達していると判定された場合、Ｓ１５２８で実行数管理モジュール５１１は処理を待機する。そして、Ｓ１５２９で実行数管理モジュール５１１は、他の実行中データ取得処理（後述のＳ１５１７）が完了した場合にＳ１５２７に戻る。
【０１１１】
ステップ１５２７において、該当のテナントＩＤの実行中処理数１００１が前記同時実行可能処理数上限値に達していないと判定された場合、ステップＳ１５１５でバッチ印刷情報管理モジュール５０６は、ステップＳ１５１０で受信したＵＲＬパラメーター「ｔｅｎａｎｔ＿ＩＤ」の値をキーとして、ＨＤ２１１に保存されたバッチ印刷情報内を検索し、該当のテナントＩＤに紐づくサーバＢアクセストークンを特定し取得する。
【０１１２】
ステップＳ１５１６でサービス提供サーバＡ５００のバッチ印刷情報管理モジュール５０６は、ステップＳ１５１０で受信したＵＲＬパラメーター「ｔｅｎａｎｔ＿ＩＤ」の値をキーとして、ＨＤ２１１に保存されたバッチ印刷情報内を検索し、該当のテナントＩＤに紐づくサーバＣアクセストークンを特定し取得する。
【０１１３】
次に、ステップＳ１５３０で、実行数管理モジュール５１１は該当のテナントＩＤの実行中処理数１００１をカウントアップして更新する。
【０１１４】
ステップＳ１５１７で、サービス提供サーバＡ５００のデータ取得モジュール５０２は、サービス提供サーバＢ５５０に対して業務データの取得要求（クエリ）を行う。サービス提供サーバＢ５５０が公開するＷｅｂサービスＡＰＩのパラメーターに対して、ステップＳ１５１５で取得したサーバＢアクセストークンを指定することで業務データの取得が可能となる。
【０１１５】
ステップＳ１５１８でサービス提供サーバＢ５５０は、業務データ取得のＡＰＩ要求を受けて、サービス提供サーバＡ５００へ業務データを送信する。
【０１１６】
業務データの取得が完了した場合、ステップＳ１５３１で、実行数管理モジュール５１１は該当のテナントＩＤの実行中処理数１００１をカウントダウンして更新する。
【０１１７】
ステップＳ１５１９で、サービス提供サーバＡ５００の文書生成モジュール５０３は、不図示のフォーム管理モジュールが管理するフォームを取得して、前記取得した業務データと前記取得したフォームから文書データを生成する。ステップ１５１８の文書生成処理は公知のため説明は割愛する。
【０１１８】
ステップＳ１５２０で、サービス提供サーバＡ５００のアクセストークン検証モジュール５１０は、ステップＳ１５１６で取得したサーバＣアクセストークンを指定して認証サーバＡ４００のアクセストークン妥当性検証ＡＰＩを呼び出し、妥当であるかを検証する。前記ステップＳ１５１９の文書データ生成は、取得した業務データが大量にある場合などに時間がかかる。このため、本ステップＳ１５１９にてサーバＣアクセストークンの有効性を事前に検証する。
【０１１９】
ステップＳ１５２１で認証サーバＡ４００は、アクセストークン妥当性検証ＡＰＩが呼び出されると、指定されたアクセストークンが妥当かどうかを検証して、結果をサービス提供サーバＡ５００に返す。前記取得したサーバＣアクセストークンが妥当である場合、ステップＳ１５２２に遷移し、妥当でない場合、図１６のステップＳ１６０７に遷移する。妥当でない場合のフローについては図１６で別途説明する。
【０１２０】
ステップＳ１５２２でサービス提供サーバＡ５００の文書送信モジュール５０８は、サービス提供サーバＣ５６０に対して、ステップＳ１５１９で生成した文書データを送信する。サービス提供サーバＣ５６０が公開するＷｅｂサービスＡＰＩのパラメーターに対して、ステップＳ１５１６で取得したサーバＣアクセストークンを指定することで文書データの送信が可能となる。
【０１２１】
ステップＳ１５２３でサービス提供サーバＣ５６０のアクセス制御モジュール５６１は、文書データを受信し、ステップＳ１５２４で文書印刷モジュール５６２がその文書データを印刷する。
【０１２２】
ステップＳ１５２５でサービス提供サーバＡ５００の文書送信モジュール５０８は、クライアントＰＣ２００のブラウザに対して、文書データの送信完了通知を返す。なお、本フローでは、サービス提供サーバＣ５６０での文書データ印刷（Ｓ１５２４）の完了を待たずに、文書送信完了通知をブラウザへ返しているが、文書データ印刷の完了を待って、印刷完了通知をブラウザへ返すようにしてもよい。
【０１２３】
ステップＳ１５２６でクライアントＰＣ２００のブラウザは、ステップＳ１５２４にて返された文書データの送信完了通知を受理する。
【０１２４】
以上でサービス提供サーバＡ５００、サービス提供サーバＣ５１０、サービス提供サーバＢ５５０および認証サーバＡ５００が実行するフローが終了する。
【０１２５】
図１６は本実施の形態に係る、サービス提供サーバＡ５００が実行するフローである。本フローは、業務データ取得に必要となるサーバＢアクセストークンおよび文書データ送信に必要となるサーバＣアクセストークンの期限が切れた場合の処理を示したフローである。なお、図１５と同様のフローにおいては、同じ符号を付与しており、以下、差異部分のみ説明する。
【０１２６】
ステップＳ１６０１でサービス提供サーバＡ５００のデータ取得モジュール５０２は、ステップＳ１５１７での業務データ取得が成功したかどうかを判断する。成功した場合ステップＳ１５１９に遷移し、失敗した場合ステップＳ１６０２に遷移する。アクセストークンの期限が切れた場合やデータ取得のクエリに何らかの問題がある場合に、業務データ取得が失敗する場合がある。
【０１２７】
ステップＳ１６０２でサービス提供サーバＡ５００のデータ取得モジュール５０２は、業務データが取得できなかった場合にサービス提供サーバＢ５５０から発行されるエラーを解析して、サーバＢアクセストークンの期限切れエラーかどうかを判断する。期限切れエラーの場合ステップＳ１６０３に遷移し、そうでない場合、何らかの理由（例えば存在しないテーブルをクエリで指定している等）で業務データが取得できないと判断し、ステップＳ１６０６でフローを中断する。
【０１２８】
ステップＳ１６０３でサービス提供サーバＡ５００のバッチ印刷情報管理モジュール５０６は、図１３のステップＳ１３１２で保存されたサーバＢリフレッシュトークンを取得する。バッチ印刷情報管理モジュール５０６は、ステップＳ１５１０で受信したＵＲＬパラメーター「ｔｅｎａｎｔ＿ＩＤ」の値をキーとしてＨＤ２１１のバッチ印刷情報内を検索し、該当のテナントＩＤに紐づくサーバＢリフレッシュトークンを特定する。
【０１２９】
ステップＳ１６０４でサービス提供サーバＡ５００のアクセストークン取得モジュール５０５は、認証サーバＢ４５０に対して、サーバＢアクセストークンの再取得リクエストを行う。この際サービス提供サーバＡ５００のアクセストークン取得モジュール５０５は、リクエストのＵＲＬパラメーターとして、ステップＳ１６０３で取得したリフレッシュトークンを含める。リクエストを受けた認証サーバＢ４５０は、リフレッシュトークンの検証を行い、妥当であればサーバＢアクセストークンを再度発行し、そのトークンをレスポンスに含めてサービス提供サーバＡ５００に返す。
【０１３０】
ステップＳ１６０５でサービス提供サーバＡ５００のバッチ印刷情報管理モジュール５０６は、ステップＳ１６０４で認証サーバＢ４５０から再取得したサーバＢアクセストークンを、サービス提供サーバＡ５００のテナントＩＤに紐付けてＨＤ２１１に再保存する。
【０１３１】
ステップＳ１６０７でサービス提供サーバＡ５００のアクセストークン検証モジュール５１０は、ステップＳ１５２０で認証サーバＡ４００から返されたサーバＣアクセストークンの妥当性検証結果をもとに、サーバＣアクセストークンの期限が切れているかどうかを判断する。
【０１３２】
期限切れの場合ステップＳ１６０８に遷移し、そうでない場合、ステップＳ１５２２に遷移する。
【０１３３】
ステップＳ１６０８でサービス提供サーバＡ５００のバッチ印刷情報管理モジュール５０６は、図１１のステップＳ１１０８で保存されたサーバＣリフレッシュトークンを取得する。バッチ印刷情報管理モジュール５０６は、ステップＳ１５１０で受信したＵＲＬパラメーター「ｔｅｎａｎｔ＿ＩＤ」の値をキーとしてＨＤ２１１のバッチ印刷情報内を検索し、該当のテナントＩＤに紐付くサーバＣリフレッシュトークンを特定する。
【０１３４】
ステップＳ１６０９でサービス提供サーバＡ５００のアクセストークン取得モジュール５０５は、認証サーバＡ５００のサーバＣアクセストークンの再取得ＡＰＩを呼び出す。この際サービス提供サーバＡ５００のアクセストークン取得モジュール５０５は、ＡＰＩの呼び出しパラメーターとして、ステップＳ１６０８で取得したサーバＣリフレッシュトークンを指定する。ＡＰＩ呼び出しを受け付けた認証サーバＡ４００は、リフレッシュトークンの検証を行い、妥当であればサーバＣアクセストークンを再度発行し、そのトークンをＡＰＩの戻り値としてサービス提供サーバＡ５００に返す。
【０１３５】
ステップＳ１６１０でサービス提供サーバＡ５００のバッチ印刷情報管理モジュール５０６は、ステップＳ１６０９で認証サーバＡ４００から再取得したサーバＣアクセストークンを、サービス提供サーバＡ５００のテナントＩＤに紐付けてＨＤ２１１に再保存する。
【符号の説明】
【０１３６】
１００  ＷＡＮ
１０１  ＬＡＮ
２００  クライアントＰＣ
３００  認証サービス決定サービス
４００  認証サーバＡ
４５０  認証サーバＢ
５００  サービス提供サービス
【図１】
2014142736.tif 000003
【図２】
2014142736.tif 000004
【図３】
2014142736.tif 000005
【図４】
2014142736.tif 000006
【図５】
2014142736.tif 000007
【図６】
2014142736.tif 000008
【図７】
2014142736.tif 000009
【図８】
2014142736.tif 000010
【図９】
2014142736.tif 000011
【図１０】
2014142736.tif 000012
【図１１】
2014142736.tif 000013
【図１２】
2014142736.tif 000014
【図１３】
2014142736.tif 000015
【図１４】
2014142736.tif 000016
【図１５Ａ】
2014142736.tif 000017
【図１５Ｂ】
2014142736.tif 000018
【図１６】
2014142736.tif 000019
【図１７】
2014142736.tif 000020
【図１８】
2014142736.tif 000021
【図１９】
2014142736.tif 000022