JP2016004307A - システム、方法、サーバーシステム、およびプログラム - Google Patents

システム、方法、サーバーシステム、およびプログラム Download PDF

Info

Publication number
JP2016004307A
JP2016004307A JP2014122538A JP2014122538A JP2016004307A JP 2016004307 A JP2016004307 A JP 2016004307A JP 2014122538 A JP2014122538 A JP 2014122538A JP 2014122538 A JP2014122538 A JP 2014122538A JP 2016004307 A JP2016004307 A JP 2016004307A
Authority
JP
Japan
Prior art keywords
client
api
user identifier
authorization
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014122538A
Other languages
English (en)
Other versions
JP6312536B2 (ja
Inventor
浩太郎 松田
Kotaro Matsuda
浩太郎 松田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014122538A priority Critical patent/JP6312536B2/ja
Priority to US14/737,234 priority patent/US20150365348A1/en
Publication of JP2016004307A publication Critical patent/JP2016004307A/ja
Application granted granted Critical
Publication of JP6312536B2 publication Critical patent/JP6312536B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】 1ユーザーが複数台の端末から同じアプリケーションの機能を利用する場合においても、利便性を損なわずに、WebサービスAPIをアプリケーション開発者が容易に利用できる仕組みを提供する。
【解決手段】 複数台の端末から呼出したAPIの呼出し回数の集計値が、ユーザー識別子に関連付くAPIの呼出し上限数以下の場合に、クライアントによるサービスの利用を認可する。
【選択図】 図3

Description

本発明は、リソースへのアクセスを管理するシステム、方法、サーバーシステム、およびプログラムに関する。
近年、スマートフォンやタブレットコンピューターといったモバイル端末が急速に普及している。このようなモバイル端末に対して、インターネット上のアプリケーションストアなどを通じて、アプリケーション開発者が開発したアプリケーションを容易に公開・販売できる仕組みが用意されている。また、モバイル端末向けのアプリケーション開発において、モバイル端末単体では実現が困難な機能を、インターネット上のWebサービスとして提供し、Webサービス利用料金を徴収するといったインターネットサービス事業も出現してきている。特に、サーバーサイドのコード開発・サーバー運用が不要で、WebサービスAPIを利用した分だけ課金するというBaaS(Backend as a Service)というWebサービス提供形態が出てきている。
BaaSのようなWebサービスを利用してアプリケーションを開発・運用する場合、BaaSと利用契約するのはアプリケーション開発者である。例えば、BaaSが、モバイル端末で表示できない電子文書ファイルを別の電子文書ファイルフォーマットに変換するAPIを提供していたとする。開発者は、アプリケーション内でフォーマット変換の必要なときに、BaaSのAPIを呼び出すようにアプリケーションを実装しておけばよい。一方で、エンドユーザーには、フォーマット変換はアプリケーションの一機能として見えるが、そのバックエンドで動作するBaaSについては存在を意識する必要がない。アプリケーション開発者は、アプリケーションストアなどを通じて、エンドユーザーからアプリケーション購入料金・使用料金などの収入を得ることができる。一方で、アプリケーション開発者は、配布したアプリケーションから利用された分のWebサービス利用料金をBaaSに支払う必要がある。なお、リクエスト数を計測し、リクエストを制限する技術として特許文献1がある。
特開2011−70435
アプリケーションの提供形態の1つとして、アプリケーションを無料で配布し、無料で使用している間はアプリケーションの機能を制限しておき、エンドユーザーが有料の機能を購入したらアプリケーションの機能の制限を解除する、という提供形態が考えられる。アプリケーションの機能を、BaaSのAPIによって実現している場合、無料で使用中はAPI利用回数の上限数を少なく提供し、有料になったらAPI利用回数の上限数を引き上げることによって機能制限を解除することができる。ここで、1エンドユーザーが複数台の端末を持っている場合、1台目の端末でアプリケーションの機能を購入後、2台目以降の端末でも同じアプリケーションの機能が自動的に利用可能となるアプリケーションストア等の仕組みが存在する。例えば、無料使用中は端末1台からのAPI利用回数を10回に制限し、アプリケーションの機能を購入後、API利用回数の上限数を300回に引き上げる、というケースを想定する。前述のように、1エンドユーザーが複数台の端末を持っており、1回の購入で全ての端末のアプリケーションの機能を利用可能とすることができる場合、次のような課題がある。2台目以降の端末のAPI利用回数の上限数を一律300回に引き上げると、300回×端末数の分だけBaaSからAPI課金がされてしまう。アプリケーションの機能購入時に、エンドユーザーから料金収入を得られる機会は1回なので、端末台数が多いほどアプリケーション開発者の料金負担が増えてしまう。
本発明が解決する目的は、1エンドユーザーが複数台の端末から同じアプリケーションの機能を利用する場合においても、BaaSの利便性を損なわずに、APIをアプリケーション開発者に容易に利用してもらえる仕組みを提供することである。
本発明の一実施形に係るシステムは、クライアントから利用可能なサービスを備えるサーバーシステムと、前記サービスを利用するためのAPI(Application Program Interface)を呼び出すことで前記サービスを利用するクライアントとを含むシステムであって、前記クライアントに対して一意に割り当てられたクライアント識別子を基に、正規なクライアントであるか否かを判断する認証手段と、前記認証手段により正規なクライアントであると判断されたことに応じて、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を発行する発行手段と、前記クライアントが前記APIを呼び出す際に送信する前記権限情報を基に、前記クライアントによる前記サービスの利用を認可する認可手段と、前記権限情報とユーザー識別子とを関連付け、前記ユーザー識別子と前記APIの呼出し上限数とを関連付けて保存する保存手段と、を有し、前記認可手段は、前記クライアントから送信された前記権限情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数以下の場合に、前記クライアントによる前記サービスの利用を認可することを特徴とする。
1エンドユーザーが複数台の端末から同じアプリケーションの機能を利用する場合においても、BaaSの利便性を損なわずに、APIをアプリケーション開発者に容易に利用してもらえる仕組みを提供できる。
本発明を実施するためのシステム構成およびネットワーク構成 情報処理機能ハードウェア構成図 本システムのソフトウェア構成説明図 テナント管理テーブル、ユーザー管理テーブル API課金メニュー管理テーブル(1)、API課金メニュー管理テーブル(2)、テナント属性情報管理テーブル クライアント証明書管理テーブル、クライアント管理テーブル、認可トークン管理テーブル、API呼出し回数管理テーブル Webサービス利用登録フロー説明図 利用登録画面、API利用設定画面 クライアント登録処理フロー、認可トークン発行フロー説明図(Client Credentials Grant) リソース要求API処理フロー説明図(1) API呼出し上限数への加算処理フロー説明図 API呼出し上限数への加算選択UI、コスト回収選択UI ユーザー登録処理フロー説明図 認可トークン発行フロー説明図(Authorization Code Grant) ログイン画面、ユーザー登録画面、認可確認画面 リソース要求API処理フロー説明図(2)
以下、本発明を実施するための最良の形態について図面を用いて説明する。
本実施の形態においては、Webサービスからアプリケーションに対してセキュアなAPI認可手段を提供するために、インターネット標準であるOAuth 2.0に準拠した構成とする。OAuth 2.0のうち、Client Credentials GrantおよびAuthorization Code GrantによるAPI認可手段を提供する。モバイル端末向けアプリケーションに対して、個々の端末を識別し、端末またはユーザーごとにアクセス制御を実施可能とするために、前記2種類のAPI認可手段を提供する。なお、API(Application Program Interface)は、Webサービスを利用するために呼出すためのインターフェースである。
図1は、本発明を実施するためのシステム構成およびネットワーク構成の一例を示している。101は、インターネットもしくはイントラネットなどのネットワークであり、ネットワークに接続された機器同士は互いに通信可能である。102はルータやスイッチなど、ネットワークどうしを接続するネットワーク機器である。103はネットワーク間の通信許可の制御を行うファイアウォールである。105はLAN(Local Area Network)である。105は、コンピューター等の機器を接続する末端のネットワークであるが、有線通信のネットワークに限らず、無線LANや携帯電話通信ネットワークなどの無線通信網の場合もある。111は認可サーバーである。112はリソースサーバーである。121、122はクライアントコンピューターである。クライアントコンピューター121、122としては、パーソナルコンピューター、タブレットコンピューター、スマートフォンなどの種別が存在する。
図2は、認可サーバー111、リソースサーバー112、クライアントコンピューター121、122の情報処理機能のモジュール構成図を示している。201はユーザーインターフェースであり、ディスプレイ、キーボード、マウス、タッチパネルなどによる、情報の入出力を行う。これらのハードウェアを備えないコンピューターは、リモートデスクトップやリモートシェルなどにより、他のコンピューターから接続・操作することも可能である。202はネットワークインターフェースであり、LANなどのネットワークに接続して、他のコンピューターやネットワーク機器との通信を行う。204は組込済みプログラムおよびデータが記録されているROMである。205は一時メモリ領域のRAMである。206はHDDに代表されるような二次記憶装置である。203はCPUであり、ROM204、RAM205、二次記憶装置206などから読み込んだプログラムを実行する。各部は入出力インターフェース207を介して接続されている。
図3は、本システムのソフトウェア構成を示している。認可サーバー111は、HTTPサーバーモジュール301、Webアプリケーション302、データベース305を備える。HTTPサーバーモジュール301は、クライアントからのWebアクセスの要求と応答の通信を管理・制御し、必要に応じて、要求をWebアプリケーション302に転送する。Webアプリケーション302は、ブラウザーにHTML等のWebドキュメントや操作画面を提供するWebUI303と、RESTに代表されるようなWebサービスAPIにより認可処理を受け付ける認可API304を備える。データベース305は、Webアプリケーション302が使用するデータを格納する。Webアプリケーション302からの要求に応じて、データベース305は各種テーブルのレコードを追加・読出・更新・削除する。
リソースサーバー112は、HTTPサーバーモジュール311、Webアプリケーション312を備える。HTTPサーバーモジュール311は、クライアントからのWebアクセスの要求と応答の通信を管理・制御し、必要に応じて、要求をWebアプリケーション312に転送する。Webアプリケーション312は、RESTに代表されるようなWebサービスAPIにより各種の処理を受け付けるAPI313を備える。API313は、リソースサーバーが提供する機能に必要な処理を実行して、クライアントからのAPI呼出し要求に対する応答を生成し、HTTPサーバーモジュール311を介してクライアントに応答を返す。この機能のことをWebサービスと呼ぶ。なお、リソースサーバーが提供する機能としては様々なものが有り得るので、Webアプリケーション312のみでは実行できない場合は、不図示の他のアプリケーションや他のサーバーに機能の実行を依頼して、応答を得ることも可能である。
なお、本実施例における認可サーバー111、およびリソースサーバー112は同じセキュリティドメイン内に配置されたサーバー群であり、本発明においてサーバーシステムと称した場合は、認可サーバー111、およびリソースサーバー112の少なくとも2台のサーバーが含まれることを意味する。なお、サーバーシステムは、認可サーバー111とリソースサーバー112の複数台から構成される例を説明したが、2つのサーバーの機能を備えた1台のサーバーであっても良い。
ブラウザー321は、クライアントコンピューター121にインストールされて実行可能である。ブラウザー321は、WebUI303が提供するHTML等のWebドキュメントや操作画面を受信して表示し、ユーザーによる操作結果などをWebUI303に送信する。アプリケーション331およびブラウザー332は、クライアントコンピューター122にインストールされて実行可能である。アプリケーション331は、API313にアクセスして、リソースサーバー112が提供する各種機能を利用可能である。ブラウザー332は、認可操作時の一部ステップにおいて、HTML等のWebドキュメントや操作画面を受信して表示し、ユーザーによる操作結果などを認可API304に送信する。
ここで、図3の構成において、各モジュールがOAuth 2.0におけるどのロールに当たるかを説明する。認可サーバー111が、OAuth 2.0の“Authorization Server”ロールである。リソースサーバー112が、OAuth 2.0の“Resource Server”ロールである。Client Credentials Grant利用時には、アプリケーション331が、OAuth 2.0の“Client”ロールおよび“Resource Owner”ロールである。Authorization Code Grant利用時には、アプリケーション331が、OAuth 2.0の“Client”ロールである。また、Authorization Code Grant利用時には、アプリケーション331を使用してリソースサーバー112の機能・データを利用するユーザーが“Resource Owner”ロールである。以降の説明では、各モジュールは前記のOAuth 2.0のロールとしてAPI認可フローを実行する。また、本文中あるいは図中における「クライアント」とは、OAuth 2.0の“Client”ロールとして、認可API304およびAPI313などのWebサービスAPIの要求元として動作するアプリケーション331の事を指す。無論、アプリケーション331は端末毎に存在するため、本システム内には複数のクライアントが存在する。
図4、図5、図6は、認可サーバー111内のデータベース305の各種テーブルを示している。400はテナント管理テーブルである。401はテナントIDを格納するカラムである。テナントID401は、認可サーバーおよびリソースサーバーによって提供するWebサービスが、様々な組織・個人などに利用される場合、セキュアにリソースを分離するための単位である。このようなシステムは一般にマルチテナントシステムと呼ばれる。
410はユーザー管理テーブルである。411はユーザーが所属するテナントIDを格納するカラムである。412はユーザーIDを格納するカラムである。413はユーザーのメールアドレスを格納するカラムである。414はユーザーのパスワードを格納するカラムである。415はユーザーが所属するテナントにおいて付与されている権限を格納するカラムである。ここでは、権限415として、テナント内のすべてのデータに対する権限を持つテナント管理者と、制限された権限のみを持つ一般というユーザー権限があるものとする。
500および510はAPI課金メニュー管理テーブルである。501、511は課金メニューIDを格納するカラムである。502、512は課金メニュー名を格納するカラムである。503は1クライアントIDあたりAPI呼出し上限数を格納するカラムである。513は1ユーザーIDあたりAPI呼出し上限数を格納するカラムである。504、514は課金ユニットの単価を格納するカラムである。本実施例では、503、513で定義された1クライアントIDまたは1ユーザーIDあたりAPI呼出し上限数を利用する権利を1課金ユニットとして換算し、利用した課金ユニット数分を課金する例を示している。しかしながら、課金形態は多様なものが有り得るので、ここでは一例を示すに留める。
520はテナント属性情報管理テーブルである。521はテナントIDを格納するカラムである。522はクライアントIDまたはユーザーIDのどちらのIDを対象とするレコードであるかを示す対象ID種別を格納するカラムである。523はそのテナントが選択している課金メニューIDを格納するカラムである。524は1クライアントIDまたはユーザーIDあたりAPI呼出し上限数の初期値を格納するカラムである。525はAPI呼出し上限数への加算を許可/不許可の設定値を格納するカラムである。526は1クライアントIDまたは1ユーザーIDあたりAPI呼出し上限数への加算数を格納するカラムである。527は、認可フロー切替時動作モードを格納するカラムである。
600はクライアント証明書管理テーブルである。601はクライアント証明書のシリアル番号を格納するカラムである。602は証明書の発行者を格納するカラムである。603は証明書の主体者を格納するカラムである。604は証明書の有効期間の開始日時を格納するカラムである。605は証明書の有効期間の終了日時を格納するカラムである。606はテナントマスターDN(Distinguished Name)を格納するカラムである。
610はクライアント管理テーブルである。611はクライアントとなるアプリケーション311を一意に識別するためのクライアント識別子を意味するクライアントIDを格納するカラムである。612はクライアントのシークレットを保存するカラムである。613はクライアントが所属するテナントIDを格納するカラムである。614はクライアントの種別を格納するカラムである。クライアントの種別614として、テナントの管理権限を持つマスターと制限された権限のみを持つ一般のクライアント権限がある。615はクライアントのDNを格納するカラムである。616は認可確認後のリダイレクトURLを格納するカラムである。クライアント管理テーブル610によって、OAuth 2.0のClientを個別に識別して管理する。
620は認可トークン管理テーブルである。621はトークン種別を格納するカラムである。622は認可トークンIDを格納するカラムである。623は認可トークンの有効期限を格納するカラムである。624はリフレッシュトークンIDを格納するカラムである。625はリフレッシュトークンの有効期限を格納するカラムである。626は認可トークンの発行対象のクライアントIDを格納するカラムである。627は認可トークンの所有者を示すオーナーIDを格納するカラムである。
630はAPI呼出し回数管理テーブルである。631はユーザーを一意に識別するためのユーザー識別子を意味するユーザーIDを格納するカラムであり、1人のユーザーに対応する形で1つのユーザーIDが存在する。632はクライアントIDを格納するカラムである。633はAPI呼出し回数集計の対象年月を格納するカラムである。本実施例では月毎にAPI呼出し回数を集計するが、集計の期間は年や週など別の単位や期間でもよい。634はAPI呼出し回数上限数の設定値を格納するカラムである。635は実際にクライアントから呼び出されたAPI呼出し回数を格納するカラムである。636はクライアントからAPIが呼び出された最終アクセス日時を格納するカラムである。
図7、図8を用いて、認可サーバー111、リソースサーバー112によって提供するWebサービスに利用登録するための処理フローを説明する。利用登録するユーザーは、アプリケーション331の開発者を主たるユーザーとする。ユーザーは、ブラウザー321を使用して、WebUI303が提供する利用登録画面800を取得して、表示する(S701、702、703)。801はユーザーのメールアドレスやパスワードを入力する利用者情報入力フィールドである。802、803はそれぞれクライアントID単位・ユーザーID単位の料金メニューの選択フィールドである。WebUI303は、API課金メニュー管理テーブル500、510を読み出して、802、803の料金メニューの選択肢を提供する。804は利用登録要求を送信するボタンである。ユーザーが利用者情報を801に入力して、料金メニューを802、803で選択して、登録ボタン804を押下して、利用登録要求をWebUI303に送信する(S704)。
WebUI303は、まずテナント管理テーブル400にテナントIDを新規追加する。WebUI303は、入力された利用者情報に従って、ユーザー管理テーブル410に、ユーザーのレコードを追加し、権限415にはテナント管理者を付与する。これにより、このユーザーは作成されたテナントの設定値などを変更することができる。WebUI303は、テナント属性管理テーブル520に、作成されたテナントIDを521に、802および803で選択された課金メニューIDを523に格納する。また、クライアントID・ユーザーIDどちらの設定情報であるかを識別するために、522にクライアントIDまたはユーザーIDの種別を格納する。WebUI303は、クライアント管理テーブル610に、種別614がマスターのクライアントを1つ作成する。また、前記作成したマスタークライアントのDN615と同一のテナントマスターDN606を持つクライアント証明書を作成し、その他の証明書情報を601、602、603、604、605に格納する(S705)。これらのテナントIDをはじめとする登録処理が完了すると、ブラウザー321に登録完了を応答する(S706)。
次に、ブラウザー321は、WebUI303からAPI利用設定画面810を取得して表示する(S707、708、709)。811は1クライアントIDあたりのAPI呼出し上限数の初期値を入力するフィールドである。812はクライアントからの1クライアントIDあたりのAPI呼出し上限数の加算の許可/不許可を選択するチェックボックスである。813は1クライアントIDあたりのAPI呼出し上限数への加算数を入力するフィールドである。814は1ユーザーIDあたりのAPI呼出し上限数の初期値を入力するフィールドである。815はクライアントからの1ユーザーIDあたりのAPI呼出し上限数の加算の許可/不許可を選択するチェックボックスである。816は1ユーザーIDあたりのAPI呼出し上限数への加算数を入力するフィールドである。817はAPI認可フロー切替時の設定を選択するフィールドである。818はAPI利用設定の要求を送信するボタンである。ユーザーがAPI利用設定画面810にて、各設定値を入力・選択して、設定ボタン818を押下して、設定要求をWebUI303に送信する(S710)。
WebUI303は、テナント属性情報管理テーブル520の524、525、526に、API利用設定画面810にて入力された値をクライアントID・ユーザーID種別ごとに格納する。また、WebUI303は、選択フィールド817の選択値を、対象種別ID522がユーザーIDであるレコードの認可フロー切替時動作モード527に格納する(S711)。WebUI303は、ブラウザー321に設定完了を応答する(S712)。次に、ブラウザー321は、クライアント証明書取得要求をWebUI303に送信する(S713)。WebUI303は、前述の作成したクライアント証明書を読み出して、ブラウザー321に応答する(S714、715)。
次に、図9を用いて、クライアントの登録処理、Client Credentials Grantによる認可トークンの発行処理のフローを説明する。アプリケーション331には、あらかじめ前述の取得したクライアント証明書がアプリケーション331の開発者によって組み込まれており、そのアプリケーション331がクライアントコンピューター122に配布される。アプリケーション331は、HTTPサーバーモジュール301にクライアント登録要求を送信する(S901)。クライアント登録要求には、後述する認可コード発行時に利用するリダイレクトURLを含めることも可能である。HTTPサーバーモジュール301は、クライアント登録要求に対して、クライアント証明書を呼出元に要求する。アプリケーション331はクライアント証明書をHTTPサーバーモジュール301に送信し、HTTPサーバーモジュール301は受信したクライアント証明書が有効であれば、クライアント登録要求を認可API304に転送する(S902、S903)。
本実施例では、アプリケーション331が認可サーバー111の正当なクライアントであることを認証するためにクライアント証明書を用いているが、Basic認証やDigest認証など他の認証方式を用いることも可能である。認可API304は、受信したクライアント証明書から得られたシリアル番号601を用いて、クライアント証明書管理テーブル600を検索し、テナントマスターDN606を特定する。さらに、認可API304は、クライアント管理テーブル610を検索し、前記特定したテナントマスターDN606と同じDN615を持つレコードを取得する(S904)。
認可API304は、前記取得したレコードのクライアント種別614がマスターであることを検証し、テナントID613を読み出す。認可API304は、クライアント管理テーブルにレコードを追加し、UUIDに代表されるようなユニークなIDを採番してクライアントID611に格納し、前記読み出したテナントIDを613に格納する。これにより、アプリケーション331に対し、一意な識別番号が割り当てられることになる。612にも自動生成した十分な文字列長のシークレットを格納し、種別614には一般を格納する。また、クライアント登録要求にリダイレクトURLが含まれている場合には、クライアント管理テーブルの616に格納する。認可API304は、API呼出し回数管理テーブル630にレコードを追加し、前記採番されたクライアントIDを632に格納する。また、633には現在の年月を格納し、634にはテナント属性情報管理テーブル520に設定されている対象種別ID522がクライアントIDである該当テナントの1クライアントあたりAPI呼出し上限数の初期値524を格納する。635には初期値0を格納する(S905)。
認可API304は、アプリケーション331にクライアント登録要求の応答として、生成したクライアントIDとシークレットを返信する(S906)。アプリケーション331は、受信したクライアントIDとシークレットを、後で読み出し可能なように記憶領域に保存しておく(S907)。以上がアプリケーション331をクライアントとして認可サーバー111に登録する処理フローであり、認可サーバー111が発行したクライアント証明書を持つ正当なクライアントのみが認可サーバー111に登録できる。
アプリケーション331は、前述の取得したクライアントID・シークレットを使用して、認可API304に認可トークン要求を送信する(S908)。認可API304は、受信したクライアントID・シークレットがクライアント管理テーブル610に存在し、一致するか否かを検証することで、要求元のアプリケーションが正規なクライアントであるか否かを判断する認証処理を行う(S909)。認可API304は、API呼出し回数管理テーブル630を、クライアントID632が要求元のクライアントIDかつユーザーID631がNULLで検索し、当月のAPI呼出し回数635とAPI呼出し回数上限数の設定値634を取得する(S910)。認可API304は、当月のAPI呼出し回数635がAPI呼出し回数上限数の設定値634より少ないかどうかを判定する(S911)。
ステップ911の判定がYesの場合、認可トークン管理テーブル620にレコードを追加し、認可トークンを生成する。トークン種別621に認可トークンを、622に採番した認可トークンIDを、623に認可トークン有効期限を、626、627に要求元クライアントIDを格納する(S912)。認可API304は、生成した認可トークンの認可トークンID621および有効期限623をアプリケーション331に応答する(S913)。ステップ911の判定がNoの場合、認可API304はAPI呼出し回数上限到達を通知するエラーをアプリケーション331に応答する(S914)。
クライアントID登録後、初回の認可トークン要求時は、前述のステップS910、911のAPI呼出し回数上限到達判定は実質的には必要なく、認可トークンをアプリケーション331に発行してよい。しかしながら、認可トークンには有効期限623があるため、有効期限切れ後は、アプリケーション331はステップS908からの処理を再度実行して、別の認可トークンを再度要求する必要がある。2回目以降の認可トークン要求時に、前述のステップS910、911のAPI呼出し回数上限到達判定をして、API呼出し回数が既に上限に到達している場合は、認可トークンは発行されない。発行された認可トークンを用いて、認可されたAPIを呼び出すのがOAuth 2.0のAPI認可フローである。認可トークンは、クライアントであるアプリケーション331がWebサービスを利用する権限を有していることを証明するための権限情報である。そのため、API呼出し回数が既に上限に到達している場合は、アプリケーション331からのリソースサーバー112のAPI313への呼出しが抑止される。これにより、リソースサーバー112への通信トラフィック軽減、CPU処理の軽減などの効果を得ることができる。
次に図10、16を用いて、Client Credentials Grantで取得した認可トークンを使用してリソースサーバー112のAPI313を利用する処理フローを説明する。アプリケーション331は、ユーザーからのWebサービスの利用を開始する指示を受け付けたことに応じて、取得した認可トークンIDをパラメーターとしてリソース要求API呼出し要求をAPI313に送信する(S1001)。API313は、認可API304に、受信した認可トークンの検証要求を送信する(S1002)。認可API304は、認可トークン管理テーブル620を検索して、受信した認可トークンの認可トークンIDが622に存在し、かつ、現在日時が有効期限623以内であることを検証する。また、受信した認可トークンのオーナーID627を取得する。
さらに、認可トークンの発行先のクライアントID626が、クライアント管理テーブル610に存在することを確認して、該当のクライアントIDが有効であることを確認する(S1003)。認可API304は、ステップS1003の検証処理の結果、受信した認可トークンが有効であるかを判定する(S1004)。ステップS1004の判定がNoの場合、認可API304は、認可トークン検証結果としてトークン無効エラーをAPI313に応答する(S1005)。API313は、アプリケーション331にリソース要求APIの応答として、トークン無効エラーを返信する(S1006)。ステップS1004の判定がYesの場合、ステップS1601へ進む。認可API304は、受信した認可トークンのオーナーIDがクライアントID、ユーザーIDのどちらであるかを判定する(S1601)。Client Credentials Grantの場合は、ステップS1601の判定はクライアントIDとなるので、ステップS1602に進む。認可API304は、API呼出し回数管理テーブル630を認可トークン発行先のクライアントIDかつユーザーIDはNULLで検索し、当月のAPI呼出し回数635とAPI呼出し回数上限数の設定値634を取得する(S1602)。
認可API304は、当月のAPI呼出し回数635がAPI呼出し回数上限数の設定値634より少ないかどうかを判定する(S1603)。ステップS1603の判定がYesの場合、API呼出し回数管理テーブル630の当月のAPI呼出し回数635に1を加算する(S1604)。認可API304は、API313に認可トークン検証結果が成功(OK)であることを応答する(S1010)。API313は、ステップS1001で受信したリソース要求の処理を実行し、応答を生成する(S1011)。API313は、リソース要求API呼出しに対する応答として、ステップS1011で生成したリソース要求応答およびAPI呼出し成功(OK)をアプリケーション331に返信する(S1012)。ステップS1603の判定がNoの場合、認可API304はAPI313に認可トークン検証応答として、API呼出し回数上限到達エラーを返信する(S1013)。API313は、アプリケーション331に、リソース要求APIの応答として、API呼出し回数上限到達エラーを返信する(S1014)。
次に、図11、図12を用いて、1クライアントIDあたりのAPI呼出し回数が上限に達してしまったときに、API呼出し上限数に加算する処理フローを説明する。アプリケーション331は、前述のステップS914またはステップS1014で、自身のクライアントIDからのAPI呼出し回数が上限に達してしまったことを検知する(S1101)。API呼出し回数の上限到達を検知した場合、API呼出し上限数加算を選択するUI1200を表示する(S1102)。アプリケーション331は、UI1200にて、ユーザーが上限の加算を選択したかどうかを判定する(S1103)。ステップS1103の判定がNoの場合は処理を終了する。ステップS1103の判定がYesの場合、アプリケーション331はコスト回収処理を実施するUI1210を表示し、上限を追加するコスト回収の同意を選択させる(S1104)。
アプリケーション331は、ユーザーがコスト回収に同意し、アプリケーションのユーザーから、アプリケーションの開発者または提供者へのコスト回収処理に成功したかどうかを判定する(S1105)。ステップS1105の判定がNoの場合、処理を終了する。ステップS1105の判定がYesの場合、即ち、API呼出し上限数を加算することが許可された場合、アプリケーション331は、API304に対して、クライアントID・シークレットを指定して、API呼出し上限数に加算する設定APIを呼び出す(S1106)。認可API304は、前述のステップS909同様、要求元のクライアントを認証する(S1107)。
認可API304は、クライアント管理テーブル610から、クライアントID611が要求元のクライアントIDと一致するレコードを検索し、クライアントIDが所属するテナントIDを特定する。認可API304は、テナント属性情報管理テーブル520の前記テナントIDかつ対象ID種別522がクライアントIDのレコードを読みだして、API呼出し上限数への加算の許可設定525を取得する。許可設定525がFALSEの場合は、認可API304は、アプリケーション331に不図示のエラー応答を返却する。認可API304は、テナント属性情報管理テーブル520の前記テナントIDのレコードを読みだして、対象ID種別522がクライアントIDである、1クライアントIDあたりAPI呼出し上限数への加算値526を取得する。認可API304は、API呼出し回数管理テーブル630内の632が要求元のクライアントIDかつユーザーIDがNULLで、対象年月632が現在の年月のレコードを取得する。認可API304は、前記取得したレコードのAPI呼出し上限数の設定値634に、前述の取得した加算値526を加算する(S1108)。これにより、API呼出し上限数の設定値634には、新しい上限数が設定される。認可API304は、API呼出し上限数に加算する設定APIに対する応答として、アプリケーション331に成功(OK)を返す。
次に、図13、図14、図15を用いて、Authorization Code Grantによる認可トークンの発行処理のフローを説明する。アプリケーション331は、ユーザー登録画面1510を表示する(S1301)。ユーザー登録画面1510は、ログイン画面1500内のユーザー登録画面へのリンク1503などから表示させてもよい。ユーザー登録ボタン1512が押下されると、アプリケーション331は、ユーザーが入力したメールアドレス、パスワード等のユーザー登録に必要な情報を入力フィールド1511から取得する。アプリケーション331は、取得したメールアドレス、パスワード等の情報および前述のステップS907で保存しているクライアントID、シークレットをパラメーターとして、ユーザー登録API呼出し要求を認可API304に送信する(S1302)。認可API304は、受信したクライアントID、シークレットを用いて、前述のステップS909同様、要求元のクライアントを認証する(S1303)。認可API304は、クライアント管理テーブル610から、要求元クライアントIDのテナントID613を特定する。認可API304は、ユーザー管理テーブル410にレコードを追加し、前記特定したテナントIDを411に、採番したユーザーIDを412に、受信したメールアドレス、パスワードを413、414に、権限415には一般を格納する(S1304)。認可API304は、ユーザー登録処理に成功したら、ユーザー登録API呼出し結果としてOKの応答をアプリケーション331に返す(S1305)。
アプリケーション331は、まずAuthorization Code Grantによって発行済の認可トークンを保持しているかを確認する(S1401)。ステップS1401の判定がYesの場合、ステップS1422に進む。ステップS1401の判定がNoの場合、アプリケーション331は、クライアントID、リダイレクトURLをパラメーターとして認可要求を認可API304に送信する(S1402)。認可API304は、受信したクライアントIDがクライアント管理テーブル610に存在するか確認し、さらに、受信したリダイレクトURLが616に登録済みのものと一致するかを確認する(S1403)。ステップS1403の検証に成功した場合、認可API304は、ログイン画面へのリダイレクト要求をアプリケーション331に応答する(S1404)。アプリケーション331は、後続の画面を表示するために、ブラウザー332を呼び出して、リダイレクト先のログイン画面1500を取得して表示する(S1405)。ログインボタン1502が押下されると、ブラウザー332は入力フィールド1501に入力されたメールアドレス、パスワードをパラメーターとしてログイン要求を認可API304に送信する(S1406)。
認可API304は、ユーザー管理テーブル410を検索し、受信したメールアドレス、パスワードが正しいかを確認し、該当のユーザーのテナントID411、ユーザーID412を取得する(S1407)。ユーザー認証に成功したら、認可API304は、認可確認画面へのリダイレクト要求をブラウザー332に応答する(S1408)。ブラウザー332は、リダイレクト先の認可確認画面1520を取得、表示する(S1409)。認可確認画面1520は、認可確認メッセージ1521を表示して、どのクライアントがどこのリソースサーバーへのアクセスの認可を求めているのかを明示する。許可ボタン1522またはキャンセルボタン1523が押下されると、ブラウザー332は、許可またはキャンセルどちらかの認可操作の結果を認可API304に送信する(S1410)。
キャンセルを受信した場合は、認可API304は、認可処理をキャンセルし、ブラウザー332に不図示のキャンセル画面等を表示して処理を終了する。許可を受信した場合は、認可API304は、認可トークン管理テーブル620に、トークン種別621が認可コードであるレコードを追加する。新しく採番した認可トークンIDを622に、認可トークン有効期限を623に、ステップS1402で取得したクライアントIDを626に、ステップS1407で取得したユーザーIDをオーナーID627に格納する(S1411)。認可API304は、ステップS1403で受信したリダイレクトURLに、前記生成した認可コードの認可トークンIDを付加して、ブラウザー332に応答する(S1412)。この際、リダイレクトURLをカスタムURLスキームを使用したアプリケーション331のカスタムURLを設定しておき、アプリケーション331に処理を戻すとともに、アプリケーション331で認可コードの認可トークンIDを取得する(S1413)。
アプリケーション331は、クライアントID、シークレット、認可コードの認可トークンIDをパラメーターとして、認可API304に認可トークン要求を送信する(S1414)。認可API304は、前述のステップS909同様、要求元のクライアントIDを認証する(S1415)。認可API304は、認可トークン管理テーブル620を検索し、受信した認可コードの認可トークンIDに対するレコードが存在するかを確認する。また、該当レコードの認可トークン有効期限623が有効期限内であるか、クライアントID626が要求元のクライアントIDと一致するかを確認し、オーナーID627に登録されている認可コード発行先のユーザーIDを取得する(S1416)。
認可API304は、認可トークン管理テーブル620を検索し、トークン種別621が認可トークンで、クライアントID626とオーナーID627の両方が要求元のクライアントIDと一致するレコードが存在するかを確認する(S1417)。ステップS1417の判定がNoの場合は、ステップS1419に進む。ステップS1417の判定がYesの場合は、認可API304は、ステップS1417で検索条件に合致したレコードの認可トークン有効期限623を強制的に期限切れに書き換える、またはレコードを削除する(S1418)。これにより、同一のクライアントIDに対し、Client Credentials Grantで発行済みの認可トークンが存在する場合、Authorization Code Grantに切り替え時に、発行済み認可トークンを無効化できる。認可API304は、API呼出し回数管理テーブル630にレコードを追加する。631にステップS1416で取得したユーザーIDを、クライアントID632にALLを、対象年月633に現在の年月を格納する。634にはテナント属性情報管理テーブル520に設定されている対象種別ID522がユーザーIDである該当テナントの1ユーザーIDあたりAPI呼出し上限数の初期値524を格納する(S1419)。
認可API304は、認可トークン管理テーブル620にトークン種別621が認可トークンのレコードを追加する。新しく採番した認可トークンIDを622に、認可トークン有効期限を623に、リフレッシュトークンIDを624に、リフレッシュトークン有効期限を625に格納する。また、要求元のクライアントIDを626に、ステップS1416で取得したユーザーIDを627に格納する。また、認可API304は、認可トークン管理テーブル620のステップS1416で検証した認可コードのレコードを無効化または削除する(S1420)。認可API304は、認可トークンとして認可トークンID、リフレッシュトークンIDおよびそれぞれの有効期限を、アプリケーション331に応答する(S1421)。
アプリケーション331は、現在保持している認可トークンの有効期限が切れているかどうかを判定する(S1422)。ステップS1422の判定がNoの場合、リソース要求API呼出しフローS1001に進む。ステップS1422の判定がYesの場合、クライアントID、シークレット、リフレッシュトークンIDをパラメーターとして、認可トークン再発行要求を認可API304に送信する(S1423)。認可API304は、S1415同様、クライアントを認証する(S1424)。認可API304は、認可トークン管理テーブル620を検索し、受信したリフレッシュトークンIDに対するレコードが存在するかを確認する。また、該当レコードのリフレッシュトークン有効期限625が有効期限内であるか、クライアントID626が要求元のクライアントIDと一致するかを確認し、オーナーID627に登録されている認可トークン発行先のユーザーIDを取得する(S1425)。
認可API304は、API呼出し回数管理テーブル630を検索し、631が前記取得したユーザーIDで、クライアントID632がALL、対象月が現在年月であるレコードのAPI呼出し上限数の設定値634を取得する。認可API304は、API呼出し回数管理テーブル630から、ユーザーID631が前記取得したユーザーIDで、かつ対象年月633が当月であるレコードのAPI呼出し回数635の集計値を取得する(S1426)。認可API304は、前記取得した当月のAPI呼出し回数635の集計値が、前記取得したAPI呼出し回数上限数の設定値634より少ないかどうかを判定する(S1427)。ステップS1427の判定が、Noの場合は、ステップS1430に進み、認可API304はAPI呼出し回数上限到達を通知するエラーをアプリケーション331に応答する(S1430)。ステップS1427の判定が、Yesの場合は、認可API304は、認可トークン管理テーブル620にトークン種別621が認可トークンのレコードを追加する。新しく採番した認可トークンIDを622に、認可トークン有効期限を623に、リフレッシュトークンIDを624に、リフレッシュトークン有効期限を625に格納する。また、要求元のクライアントIDを626に、ステップS1425で取得したユーザーIDを627に格納する。また、ステップS1425で検証済みのリフレッシュトークンIDに該当するレコードを無効化、または削除する(S1428)。認可API304は、認可トークンとして認可トークンID、リフレッシュトークンIDおよびそれぞれの有効期限を、アプリケーション331に応答する(S1429)。
次に、Authorization Code Grantの認可フローで取得した認可トークンを使用したリソース要求API呼出しフローを説明する。フローは図10、16と同様であり、異なる処理のみ以下で説明する。ステップS1601の判定において、Authorization Code Grantの場合は、オーナーIDはユーザーIDとなるので、ステップS1605に進む(S1601)。認可API304は、テナント属性情報管理テーブル520から、521が要求元クライアントIDの所属するテナントIDで、対象ID種別522がユーザーIDであるレコードの認可フロー切替時動作モード527を取得する(S1605)。前記取得した動作モード527を判定し、モード=1の場合はステップS1607に進み、モード=2の場合はステップS1609に進む(S1606)。認可API304は、API呼出し回数管理テーブル630を認可トークン発行先のクライアントIDかつユーザーIDはNULLで検索し、当月のAPI呼出し回数635とAPI呼出し回数上限数の設定値634を取得する(S1607)。
認可API304は、当月のAPI呼出し回数635がAPI呼出し回数上限数の設定値634より少ないかどうかを判定する(S1608)。ステップS1608の判定がYesの場合、ステップS1604に進む。ステップS1608の判定がNoの場合、ステップS1609に進む。認可API304は、ステップS1426と同様に、次の処理を行う。認可API304は、ユーザーIDを対象としたAPI呼出し上限数の設定値634と、ユーザーID631が前記取得したユーザーIDで、かつ対象年月633が当月であるレコードのAPI呼出し回数635の集計値を取得する(S1609)。なお、図6を基に集計値の例を説明すると、ユーザーIDが“U002@TN001”に関連付くクライアントIDのAPI呼び出し回数は“225”と“64”になるので、集計値は“289”となる。認可API304は、前記取得した当月のAPI呼出し回数635の集計値が、前記取得したAPI呼出し回数上限数の設定値634より少ないかどうか、即ち、集計値がAPI呼出し回数上限数以下であるか否かを判定する(S1610)。ステップS1610の判定がYesの場合、ステップS1611へ進む。認可API304は、API呼出し回数管理テーブル630内の、631が前述のステップS1003で取得したオーナーIDで、632がステップS1003で検証した認可トークン発行先のクライアントIDであるレコードを取得する。認可API304は、前記取得したレコードの当月のAPI呼出し回数635に1を加算する(S1611)。ステップS1610の判定がNoの場合、ステップS1013へ進む。
1ユーザーが複数台の端末を使用している場合は、2台目以降の端末(クライアントコンピューター122)でも、図9、14、10、16で説明したフローと同様のクライアント登録・認可トークン発行・リソースAPI呼出し処理を実行すればよい。1ユーザーが複数台の端末を使用していても、ステップS1427、S1610の処理により、1ユーザーIDあたりのAPI呼出し上限数を管理・制限可能となる。
次に、1ユーザーIDあたりのAPI呼出し回数が上限に達してしまったときに、API呼出し上限数に加算する処理フローを説明する。フローは図11と同様であり、異なる処理のみ以下で説明する。ステップS1106において、アプリケーション331は、API呼出し上限数に加算したい対象のユーザーIDまたはメールアドレスを追加のパラメーターとして、認可API304に送信する。ステップS1108においては、以下の処理に変更する。認可API304は、テナント属性情報管理テーブル520の前記テナントIDかつ対象ID種別522がユーザーIDのレコードを読みだして、API呼出し上限数への加算の許可設定525を取得する。許可設定525がFALSEの場合は、認可API304は、アプリケーション331に不図示のエラー応答を返却する。認可API304は、テナント属性情報管理テーブル520のステップS1107で取得したテナントIDのレコードを読みだして、対象ID種別522がユーザーIDである、1ユーザーIDあたりAPI呼出し上限数への加算値526を取得する。認可API304は、API呼出し回数管理テーブル630内の631が前記追加のパラメーターとして受信したユーザーIDで、クライアントID632がALLで、対象年月633が現在の年月のレコードを特定する。前記特定したレコードのAPI呼出し上限数の設定値634に、前記取得した加算値526を加算する。
実施例1によれば、クライアントであるアプリケーションにAPIの呼出し回数を管理する機能を加えることなく、1ユーザーに対して割り当てられたAPI呼出し上限数を複数の端末におけるクライアント同士で共有することが可能になる。
実施例1では、認可フローがClient Credentials GrantからAuthorization Code Grantへ切替え時に、API呼出し回数の管理・制限がクライアントID単位からユーザーID単位に自動的に切替え可能である。また、実施例1では、例えばアプリケーションが無料から有料に切替え時に機能制限を解除するために、認可フロー切り替え時に、同時にAPI呼出し回数の上限を引き上げることが可能である。実施例2では、アプリケーション331がClient Credentials Grantの認可フローを使用せず、Authorization Code Grantのみを使用する。実施例1、2において、図は全て共通であるので、実施例2の実施例1との差分のみを以下に説明する。
図9においては、実施例2では、実施例1同様ステップS901からS907のクライアント登録処理を実施するが、ステップS908からS914までは実行されない。図13、14においては、実施例1同様、ユーザー登録、Authorization Code Grantによる認可トークン発行の処理を実施する。図10においては、実施例2では、実施例1同様ステップS1001からS1014のリソース要求API呼出し処理を実施する。図16においては、同一クライアントIDからはClient Credentials Grantの利用がないので、ステップS1605からS1608までの処理は不要で、ステップS1609からの処理を実行する。
1ユーザーが複数台の端末を使用している場合、2台目以降の端末(クライアントコンピューター122)でも、実施例1同様の処理となる。実施例2においても、Authorization Code Grantによって認可された複数のアプリケーション331に対して、API呼出し回数の管理・制限がユーザーID単位で実施できる。
以上、実施例1および2で説明したように、認可サーバー111は、リソースサーバー112のAPI313へのAPI利用要求に対して、OAuth 2.0の認可フローに準拠したAPI認可を提供する。特に、クライアントコンピューター122のアプリケーション331ごとに、クライアントIDを払い出す事が可能で、クライアントIDまたはユーザーIDごとにリソースサーバー112のAPI313へのAPI呼出し回数を管理・制限することが可能である。また、OAuth 2.0の認可フローで必須の処理である認可トークン発行時、および、認可トークン検証時に、認可トークン発行先のクライアントIDまたはユーザーIDごとにAPI呼出し回数の上限到達の検証が可能である。これにより、認可サーバー111におけるテナントごとの設定520および810等を用いて、アプリケーション開発者自身が、配布したアプリケーション331からのAPI呼出し回数を制御可能となる。
アプリケーション331からの認可フローがClient Credentials Grantの場合はクライアントIDごと、Authorization Code Grantの場合はユーザーIDごとにAPI呼出し回数が自動的に管理・制限される。また、冒頭の課題で説明したアプリケーションを無料から有料に切り替え時、機能制限を解除するために、同一ユーザーが持つ複数台端末すべてに対しAPI利用回数の上限数を引き上げるケースにおいてもBaaSとしての利便性を損なうことはない。なぜなら、認可フローがClient Credentials GrantからAuthorization Code Grantへ切替え時に、API呼出し回数の管理・制限が自動的にクライアントID単位からユーザーID単位に切り替わるからである。そのため、アプリケーション開発者は、アプリケーション331に対して、OAuth 2.0の標準通りの前記2種類の認可フローを実装するだけで良く、API利用回数の上限数を引き上げるための特別の処理を実装する必要がない。以上により、認可サーバー111および他から成るWebサービス提供システムは、冒頭で述べた課題を解決する効果を得ている。
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
111 認可サーバー
112 リソースサーバー
121、121 クライアントコンピューター

Claims (12)

  1. クライアントから利用可能なサービスを備えるサーバーシステムと、前記サービスを利用するためのAPI(Application Program Interface)を呼び出すことで前記サービスを利用するクライアントとを含むシステムであって、
    前記クライアントに対して一意に割り当てられたクライアント識別子を基に、正規なクライアントであるか否かを判断する認証手段と、
    前記認証手段により正規なクライアントであると判断されたことに応じて、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を発行する発行手段と、
    前記クライアントが前記APIを呼び出す際に送信する前記権限情報を基に、前記クライアントによる前記サービスの利用を認可する認可手段と、
    前記権限情報とユーザー識別子とを関連付け、前記ユーザー識別子と前記APIの呼出し上限数とを関連付けて保存する保存手段と、を有し、
    前記認可手段は、前記クライアントから送信された前記権限情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数以下の場合に、前記クライアントによる前記サービスの利用を認可することを特徴とするシステム。
  2. 前記認可手段は、前記クライアントから送信された前記権限情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数を超える場合に、前記クライアントによる前記サービスの利用を認可しないことを特徴とする請求項1に記載のシステム。
  3. 前記保存手段は、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数を超えた際、API呼出し上限数を加算することが許可された前記クライアントから上限数の加算を要求された場合、前記ユーザー識別子に関連付く前記APIの呼出し上限数を加算することを特徴とする請求項1または2に記載のシステム。
  4. 前記発行手段は、前記クライアントに対する前記権限情報を再発行する際に、前記クライアントから送信された前記権限情報を再発行するために必要な情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数以下の場合に、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を再発行することを特徴とする請求項1乃至3の何れか1項に記載のシステム。
  5. 前記発行手段は、前記クライアントに対する前記権限情報を再発行する際に、前記クライアントから送信された前記権限情報を再発行するために必要な情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数を超える場合に、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を再発行しないことを特徴とする請求項1乃至4の何れか1項に記載のシステム。
  6. クライアントから利用可能なサービスを備えるサーバーシステムと、前記サービスを利用するためのAPI(Application Program Interface)を呼び出すことで前記サービスを利用するクライアントとを含むシステムで実行される方法であって、
    認証手段は、前記クライアントに対して一意に割り当てられたクライアント識別子を基に、正規なクライアントであるか否かを判断し、
    発行手段は、前記認証手段により正規なクライアントであると判断されたことに応じて、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を発行し、
    認可手段は、前記クライアントが前記APIを呼び出す際に送信する前記権限情報を基に、前記クライアントによる前記サービスの利用を認可し、
    保存手段は、前記権限情報とユーザー識別子とを関連付け、前記ユーザー識別子と前記APIの呼出し上限数とを関連付けて保存し、
    更に、前記認可手段は、前記クライアントから送信された前記権限情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数以下の場合に、前記クライアントによる前記サービスの利用を認可することを特徴とする方法。
  7. 前記認可手段は、前記クライアントから送信された前記権限情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数を超える場合に、前記クライアントによる前記サービスの利用を認可しないことを特徴とする請求項6に記載の方法。
  8. 前記保存手段は、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数を超えた際、API呼出し上限数を加算することが許可された前記クライアントから上限数の加算を要求された場合、前記ユーザー識別子に関連付く前記APIの呼出し上限数を加算することを特徴とする請求項6または7に記載の方法。
  9. 前記発行手段は、前記クライアントに対する前記権限情報を再発行する際に、前記クライアントから送信された前記権限情報を再発行するために必要な情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数以下の場合に、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を再発行することを特徴とする請求項6乃至8の何れか1項に記載の方法。
  10. 前記発行手段は、前記クライアントに対する前記権限情報を再発行する際に、前記クライアントから送信された前記権限情報を再発行するために必要な情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数を超える場合に、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を再発行しないことを特徴とする請求項6乃至9の何れか1項に記載の方法。
  11. クライアントから利用可能なサービスを備え、前記サービスを利用するためのAPI(Application Program Interface)を呼び出すことで前記サービスを利用するクライアントと通信可能なサーバーシステムであって、
    前記クライアントに対して一意に割り当てられたクライアント識別子を基に、正規なクライアントであるか否かを判断する認証手段と、
    前記認証手段により正規なクライアントであると判断されたことに応じて、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を発行する発行手段と、
    前記クライアントが前記APIを呼び出す際に送信する前記権限情報を基に、前記クライアントによる前記サービスの利用を認可する認可手段と、
    前記権限情報とユーザー識別子とを関連付け、前記ユーザー識別子と前記APIの呼出し上限数とを関連付けて保存する保存手段と、を有し、
    前記認可手段は、前記クライアントから送信された前記権限情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数以下の場合に、前記クライアントによる前記サービスの利用を認可することを特徴とするサーバーシステム。
  12. クライアントから利用可能なサービスを備え、前記サービスを利用するためのAPI(Application Program Interface)を呼び出すことで前記サービスを利用するクライアントと通信可能なサーバーシステムにより実行されるプログラムであって、
    前記クライアントに対して一意に割り当てられたクライアント識別子を基に、正規なクライアントであるか否かを判断する認証ステップと、
    前記認証ステップにおいて正規なクライアントであると判断されたことに応じて、前記クライアントが前記サービスを利用する権限を有していることを示す権限情報を発行する発行ステップと、
    前記クライアントが前記APIを呼び出す際に送信する前記権限情報を基に、前記クライアントによる前記サービスの利用を認可する認可ステップと、
    前記権限情報とユーザー識別子とを関連付け、前記ユーザー識別子と前記APIの呼出し上限数とを関連付けて保存する保存ステップと、を含み、
    更に、前記認可ステップにおいて、前記クライアントから送信された前記権限情報に関連付くユーザー識別子を特定し、前記ユーザー識別子に対応するユーザーの指示により前記クライアントを含む複数のクライアントが呼出した前記APIの呼出し回数の集計値が、前記ユーザー識別子に関連付く前記APIの呼出し上限数以下の場合に、前記クライアントによる前記サービスの利用を認可することを特徴とするプログラム。
JP2014122538A 2014-06-13 2014-06-13 システム、方法、サーバーシステム、およびプログラム Active JP6312536B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014122538A JP6312536B2 (ja) 2014-06-13 2014-06-13 システム、方法、サーバーシステム、およびプログラム
US14/737,234 US20150365348A1 (en) 2014-06-13 2015-06-11 System, method, server system, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014122538A JP6312536B2 (ja) 2014-06-13 2014-06-13 システム、方法、サーバーシステム、およびプログラム

Publications (2)

Publication Number Publication Date
JP2016004307A true JP2016004307A (ja) 2016-01-12
JP6312536B2 JP6312536B2 (ja) 2018-04-18

Family

ID=54837137

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014122538A Active JP6312536B2 (ja) 2014-06-13 2014-06-13 システム、方法、サーバーシステム、およびプログラム

Country Status (2)

Country Link
US (1) US20150365348A1 (ja)
JP (1) JP6312536B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019066940A (ja) * 2017-09-28 2019-04-25 Kddi株式会社 ログ分析装置、ログ分析方法、ログ分析プログラム及びログ分析システム
JP2021089657A (ja) * 2019-12-05 2021-06-10 株式会社日立製作所 認証認可システムおよび認証認可方法
JP7232366B1 (ja) 2022-03-29 2023-03-02 Kddi株式会社 情報処理装置、情報処理システム及び情報処理方法
US11989315B2 (en) 2020-09-08 2024-05-21 Ricoh Company, Ltd. Information processing apparatus, service providing system, and method to modify a license based on usage

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258274B2 (en) * 2014-07-09 2016-02-09 Shape Security, Inc. Using individualized APIs to block automated attacks on native apps and/or purposely exposed APIs
US10050935B2 (en) 2014-07-09 2018-08-14 Shape Security, Inc. Using individualized APIs to block automated attacks on native apps and/or purposely exposed APIs with forced user interaction
US9729506B2 (en) 2014-08-22 2017-08-08 Shape Security, Inc. Application programming interface wall
US10348866B2 (en) 2016-02-19 2019-07-09 Wuhan Mbaas Computing Co. Ltd. Apparatus, system and method to provide IoT cloud backend service
JP6957194B2 (ja) * 2016-12-13 2021-11-02 キヤノン株式会社 サービスシステム、その制御方法、およびそのプログラム
US10541992B2 (en) * 2016-12-30 2020-01-21 Google Llc Two-token based authenticated session management
US10462124B2 (en) 2016-12-30 2019-10-29 Google Llc Authenticated session management across multiple electronic devices using a virtual session manager
US10616230B2 (en) * 2018-01-23 2020-04-07 Salesforce.Com, Inc. Managing authorization tokens for calling third-party vendors
US10616352B2 (en) * 2018-01-24 2020-04-07 Salesforce.Com, Inc. Integrating third-party vendors' APIs
CN108647522A (zh) * 2018-04-12 2018-10-12 佛山市百里洲科技有限公司 一种移动终端安全接入计算机网络的方法
US10756911B2 (en) * 2018-05-10 2020-08-25 International Business Machines Corporation Cost estimation on a cloud-computing platform
CN110971637B (zh) * 2018-09-30 2022-02-08 武汉斗鱼网络科技有限公司 一种调用第三方服务接口的方法、调度器以及存储介质
US11381405B1 (en) * 2019-04-26 2022-07-05 Workday, Inc. System and method for authenticating a user at a relying party application using an authentication application and automatically redirecting to a target application
US11849040B2 (en) * 2020-07-27 2023-12-19 Micro Focus Llc Adaptive rate limiting of API calls
CN111881423B (zh) * 2020-07-28 2023-09-19 杭州海康威视数字技术股份有限公司 限制功能使用授权方法、装置、系统
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080209451A1 (en) * 2007-01-29 2008-08-28 Mashery, Inc. Methods for analyzing, limiting, and enhancing access to an internet API, web service, and data
JP2011198064A (ja) * 2010-03-19 2011-10-06 Fuji Xerox Co Ltd プログラム、情報処理装置、および情報処理システム
WO2014011601A1 (en) * 2012-07-09 2014-01-16 Ping Identity Corporation Methods and apparatus for delegated authentication token retrieval

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6167879B2 (ja) * 2013-12-04 2017-07-26 富士ゼロックス株式会社 印刷システム、情報処理装置、プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080209451A1 (en) * 2007-01-29 2008-08-28 Mashery, Inc. Methods for analyzing, limiting, and enhancing access to an internet API, web service, and data
JP2011198064A (ja) * 2010-03-19 2011-10-06 Fuji Xerox Co Ltd プログラム、情報処理装置、および情報処理システム
WO2014011601A1 (en) * 2012-07-09 2014-01-16 Ping Identity Corporation Methods and apparatus for delegated authentication token retrieval

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019066940A (ja) * 2017-09-28 2019-04-25 Kddi株式会社 ログ分析装置、ログ分析方法、ログ分析プログラム及びログ分析システム
JP2021089657A (ja) * 2019-12-05 2021-06-10 株式会社日立製作所 認証認可システムおよび認証認可方法
JP7262378B2 (ja) 2019-12-05 2023-04-21 株式会社日立製作所 認証認可システムおよび認証認可方法
US11989315B2 (en) 2020-09-08 2024-05-21 Ricoh Company, Ltd. Information processing apparatus, service providing system, and method to modify a license based on usage
JP7232366B1 (ja) 2022-03-29 2023-03-02 Kddi株式会社 情報処理装置、情報処理システム及び情報処理方法
JP2023146157A (ja) * 2022-03-29 2023-10-12 Kddi株式会社 情報処理装置、情報処理システム及び情報処理方法

Also Published As

Publication number Publication date
US20150365348A1 (en) 2015-12-17
JP6312536B2 (ja) 2018-04-18

Similar Documents

Publication Publication Date Title
JP6312536B2 (ja) システム、方法、サーバーシステム、およびプログラム
JP6334920B2 (ja) 権限管理サーバー及び権限管理方法
US10686794B2 (en) System in which redirect URL is set for each access range of resource, method for the system, and storage medium for the method
JP5197843B1 (ja) 認証連携システムおよびidプロバイダ装置
US11227268B2 (en) Systems and methods for user data management across multiple devices
JP6120650B2 (ja) コンテンツ管理装置、コンテンツ管理方法及びプログラム
CN105099867B (zh) 信息处理设备、通信系统和信息处理方法
JP2012256248A (ja) クラウドシステム、クラウドサービスのライセンス管理方法、およびプログラム
TW201441946A (zh) 資訊提供方法、終端機器的控制方法以及資訊管理系統
US10277579B2 (en) Information processing system that provides a resource to an application of a terminal through a network
JP2016066192A (ja) 印刷料金支払システム、プログラム、印刷料金支払方法、及び情報処理装置
JP5723338B2 (ja) データ共有システム
KR20110114872A (ko) 통합인증 시스템 및 방법
JP6155304B2 (ja) 応募者管理システム
JP2022124229A (ja) 顔認証システム、顔認証方法、情報処理端末およびその制御方法
JP6405129B2 (ja) 会計情報処理装置、会計情報処理方法、およびプログラム
JP6268242B1 (ja) サーバおよびトークン発行方法
JP2019220805A (ja) 情報処理装置、情報処理方法及びプログラム
JP2015191361A (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法およびコンピュータプログラム
JP6446119B2 (ja) サーバおよびトークン発行方法
JP4708379B2 (ja) コンテンツ利用システム
JP2016040658A (ja) 棚卸支援装置、棚卸支援方法及びプログラム
AU2015101271A4 (en) A hotel management system adapted for interfacing with authorised mobile communication devices
JP4709332B1 (ja) コンテンツ利用システム
WO2022190345A1 (ja) システム及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170609

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180320

R151 Written notification of patent or utility model registration

Ref document number: 6312536

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151