JP2017220113A - 認可サーバー、制御方法、およびプログラム。 - Google Patents
認可サーバー、制御方法、およびプログラム。 Download PDFInfo
- Publication number
- JP2017220113A JP2017220113A JP2016115518A JP2016115518A JP2017220113A JP 2017220113 A JP2017220113 A JP 2017220113A JP 2016115518 A JP2016115518 A JP 2016115518A JP 2016115518 A JP2016115518 A JP 2016115518A JP 2017220113 A JP2017220113 A JP 2017220113A
- Authority
- JP
- Japan
- Prior art keywords
- authorization
- scope
- authority
- user
- client
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/104—Grouping of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/102—Entity profiles
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
【課題】 OAuth 2.0において、特定のスコープに対して権限委譲を実施したのちに、新しいスコープに対応したリソースへのAPIを実行する場合は、再度、ユーザーに対して認可確認を実施する必要があり、ユーザーの利便性を損なっていた。
【解決手段】 権限委譲をする際に、複数のスコープをまとめたスコープグループとして権限委譲を行うことにより解決する。スコープグループとして権限委譲することで、スコープグループ内でスコープが増減した場合に、ユーザーに再度認可確認を要求することなくAPIの利用を継続することができる。また、ユーザーの権限に変更があった場合においても、スコープグループ内での権限変更においては、ユーザーに再度認可確認を要求することなく、APIの利用を継続することができる。
【選択図】 図7
【解決手段】 権限委譲をする際に、複数のスコープをまとめたスコープグループとして権限委譲を行うことにより解決する。スコープグループとして権限委譲することで、スコープグループ内でスコープが増減した場合に、ユーザーに再度認可確認を要求することなくAPIの利用を継続することができる。また、ユーザーの権限に変更があった場合においても、スコープグループ内での権限変更においては、ユーザーに再度認可確認を要求することなく、APIの利用を継続することができる。
【選択図】 図7
Description
本発明は、データへのアクセス権限を検証するための認可サーバー、制御方法、およびプログラムに関する。
近年、インターネット上に展開された所謂クラウドサービスの利用が拡大している。また、これらクラウドサービスは個々にWebサービスのAPI(Application Programming Interface )を公開しており、他のアプリケーションやクラウドサービスからAPIを介してサービスが提供する機能を利用する事が可能となっている。これらWebサービスAPIではOAuth 2.0と呼ばれる、認可の連携を実現させるための標準プロトコルの採用が進んでいる。非特許文献1にはOAuth 2.0を利用した技術が開示されているが、詳細については以降で説明する。
OAuth 2.0によれば、例えばあるサービスAが管理するユーザーのデータを取得するAPIに対して、そのユーザーから認められた範囲にてサービスBがアクセスすることができる。このときサービスAは、サービスBからアクセスされる範囲を明らかにした上で、サービスBによるAPIへのアクセスに対してユーザーの明示的な認可を得ることになっている。ユーザーが明示的に認可を行うことを認可操作と称する。また、このアクセスされる範囲をOAuth 2.0ではスコープと呼称し、スコープによりデータへのアクセス許容量が決定される。
ユーザーが認可操作を行うと、サービスBは、サービスAにおけるユーザーが許可した範囲のデータへのアクセスが認められたことを証明するトークン (以下、認可トークンと称する) を受け取り、以降のサービスAのAPIへのアクセスはその認可トークンを用いて実現できる。このユーザーの認可操作によりサービスBがユーザーのリソースに対しアクセスすることを認可したことを権限委譲と称する。
"The OAuth 2.0 Authorization Framework"、[online] D. Hardt、2012年8月 <URL http://tools.ietf.org/html/rfc6749>
権限移譲を可能とするプロトコルには、サービスにおけるリソースの変更、およびユーザーの権限の変更に対応する柔軟性が欠如している可能性がある。例えば、OAuth 2.0の認可トークンは、ユーザーが認可操作する際に確認したスコープのみが権限委譲されている。そのため、ユーザーが権限委譲可能なスコープの変化や、APIを利用するためのスコープの増減、変更があった場合に、当該APIを利用するためには、ユーザーに再度、認可操作を強いる可能性がり、利便性が損なわれる可能性がある。
本発明は上記課題を鑑みてなされたものであり、ユーザーの利便性を損なうことなく、ユーザーの権限やスコープの定義を変更可能な認可サーバーを提供する事を目的とする。
本発明の一実施形態に係る認可サーバーは、Webサービスを提供するリソースサーバーにおける認証処理および認可処理を実行する認可サーバーであって、前記Webサービスを利用する範囲が定義されたスコープであって、少なくとも1つ以上のスコープを関連付けたスコープグループを指定する認可要求をクライアントから受信する受信手段と、前記クライアントを有する端末により表示された認可確認画面を介し、認証済みユーザーの前記Webサービスにおける権限をクライアントへ移譲するための認可操作を前記ユーザーが行ったことに応じて、前記スコープグループに関連付けられた認可情報を発行する発行手段と、前記クライアントが前記Webサービスを利用するために送信した前記認可情報の検証要求を前記リソースサーバーから受信した際、前記スコープグループと関連付く少なくとも1つ以上のスコープを取得し、前記検証要求が指定する検証対象のスコープが取得された少なくとも1つ以上のスコープに含まれており、かつ前記ユーザーが有する権限で利用できる範囲を定義しているスコープが取得された少なくとも1つ以上のスコープに含まれている場合、前記クライアントは前記検証対象のスコープで定義された範囲で前記Webサービスを利用する権限が移譲されている旨を前記リソースサーバーに送信することを特徴とする。
本発明によれば、ユーザーの利便性を損なうことなく、ユーザーの権限やスコープの定義を変更可能な認可サーバーを提供する事が可能になる。
課題に説明した通り、端末からアクセスされるリソースの範囲、即ちサービスを利用する範囲が定義されたスコープ、およびユーザーの権限は変化するため、OAuth2.0を始めとする権限移譲プロトコルには柔軟性が求められる。始めに、スコープおよびユーザーの権限の変化について説明する。エンタープライズの分野では、ユーザーが所有する権限はユーザーの立場によって異なることがある。例えば、会社の特定の機密を含む情報にアクセスできる立場と、そうでない立場によってユーザーが所有する権限に差異があり、OAuth 2.0におけるスコープとユーザーが所有する権限には密接な関係がある。つまり、サービスにおけるリソースの範囲を意味するスコープに対しアクセスを可能とする権限、という定義を行い、その権限を特定のユーザーに付与する運用が想定される。なお、ユーザーの立場は当人の社内での役割の変化や業務の変更により変更されるものであるため、ユーザーの権限は何かしらの要因によって都度変更される。つまり、ある時点でのユーザーの権限と、その後の時点でのユーザーの権限は変化しており、ユーザーがサービスに権限委譲することができるスコープの範囲も変化しているのである。
一方、クラウドサービスにおいては、継続的インテグレーション(continuous integration)、継続的デリバリー、継続的デプロイメントと言われる短期間での新機能リリースを実施する手法やアーキテクチャが注目されている。そして、この短期間で新機能をリリースしていくことは、各種ツールや開発プロセス、設計手法が提供されることによって、さらに拡大していくことが予想される。この短期間でリリースしていくことは、WebサービスのAPIの増加や、当該APIが取り扱うデータの範囲の拡大、もしくは範囲の変更が短期間で行われることを意味する。
まとめると、ユーザーの権限の変更を要因としたユーザーによる権限委譲可能なスコープの変化、短サイクルリリースによるスコープの増減、およびスコープ定義の変更が行われることが想定される。こう言ったケースが発生し、かつ権限移譲が行われ認可トークンが発行されてしまっている場合、再度ユーザーに認可操作を行わせることでユーザーの権限の変化および/またはスコープの変化に対応した認可トークンを発行する必要がある。本願発明は、この認可操作の手間を省き利便性を高めつつ、ユーザーの権限の変化および/またはスコープの変化に対応した認可トークンの運用を可能にすることを目的としている。
では、始めに本願発明の各実施例にて用いられる用語の定義について説明する。サービスとは、サーバー上で起動するソフトウェアがクライアントからの要求に従い実行されることでそのクライアントに対して提供される機能のことを指す。なお、そのソフトウェアであるWebアプリケーションのこともサービスと呼ぶ場合もある。本実施の形態においては、クラウドサービスとしてリソースサーバーが提供するサービスがあり、ユーザーは、端末を介してリソースサーバーが提供するサービスを利用している想定で説明している。また、クライアントとは端末上で起動するソフトウェアであり、端末のWebブラウザーを介してアクセスすることが可能なように構成される、もしくはWebブラウザーの機能を備えたソフトウェアを起動/制御することが可能なように構成されている。また、リソースサーバーはWebサービスとしてAPIを公開しており、クライアントはこのAPIを利用する事でユーザーに対してサービスを提供している想定にて説明する。
無論、これは本実施の形態を説明する上での想定であり、クライアントはリソースサーバーと連携する別のサービスとして構成することもできる。なお、リソースサーバー、および端末は各々単数で構成される事を限定しているわけではない。例えば、複数台から構成されたサーバー群がサービスを提供していても良い。よって、本願発明でサーバーシステムと称した場合、1台または複数台から構成されるサーバーを指すこととする。
なお、クライアントがリソースサーバーのAPIを利用するためには、後述するOAuth 2.0のAuthorization Code Grant によるユーザーの認可操作を伴った権限委譲が必要となる。換言すると、ユーザーから権限委譲を受けたクライアントは、リソースサーバーのAPIを利用する事ができるようになる。
次に、本願発明の各実施例にて用いられるリソースサーバーが提供するサービスの例を説明する。リソースサーバーは、不図示の複合機もしくはプリンターからのリクエストに応じて、複合機もしくはプリンターに配信する各種データを配信する機能を備える。ここで、各種データとは、複合機やプリンターがどのような動作をするかを決定するための設定値、複合機やプリンターにインストールするファームウェアやアプリケーションの情報、および、複合機やプリンターに設定することができるオプション機能が考えらえる。また、各種データをどのような順序で設定すべきかといった制御情報や、アプリケーションをインストールするためのライセンス情報、等も含むことができる。
また、本願発明の実施例では、クライアントアプリケーションの機能の例として以下を備えるものとして説明する。クライアントアプリケーションは、複合機やプリンターに配信する各種データを作成し、個々の複合機やプリンター用のデータとしてリソースサーバーにアップロードする機能を備える。
以下、本発明を実施するための最良の形態について図面を用いて説明する。本実施の形態に係る権限移譲システムは、図1に示すような構成のネットワーク上に実現される。100は、Wide Area Network(WAN100)であり、本発明ではWorld Wide Web(WWW)システムが構築されている。101は各構成要素を接続するLocal Area Network(LAN101)である。
200はOAuth 2.0を実現するための認可サーバーであり、認可サーバーモジュールが設置されている。300はリソースサーバーであり、Webサービスとして公開されるAPIを備えるリソースサーバーモジュールが設置されている。400は端末であり、Webブラウザー410、クライアントアプリケーション420を備える。端末400は、例えばPCやスマートフォンと呼ばれる携帯端末等である。クライアントアプリケーション420は、リソースサーバー300が備えるリソースサーバーモジュールが公開するAPIを利用する事で、自身が提供する機能と合わせたサービスをユーザーに提供する。ユーザーはWebブラウザー410を用いて認可サーバー200と通信する。また認可サーバー200、リソースサーバー300はLAN101を介して接続されている。また、認可サーバー200、リソースサーバー300、および端末400は、それぞれWAN100を介して通信可能に接続されている。また認可サーバー200は不図示のデータベースサーバーとLAN101を介して接続しており、認可サーバーモジュールが利用するデータを格納するよう構成してもよい。さらには、リソースサーバー300、認可サーバー200も同一のサーバー上に構成されていてもよい。
本実施の形態に係る権限移譲システムは、図2に示すような構成のサーバーおよび端末から成るシステム上に実現される。図2は、認可サーバー200、リソースサーバー300および端末400のハードウェア構成を示す。なお、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当するものとし、本実施形態の各サーバーおよび端末には一般的な情報処理装置のハードウェア構成やIaaS(Infrastructure as a Service)として提供される情報処理装置の仮想的なハードウェア構成を適用できる。
図2において、CPU2001は、ROM2003のプログラム用ROMに記憶された、或いはハードディスク(HD)等の外部メモリ2011からRAM2002にロードされたOSやアプリケーション等のプログラムを実行しシステムバス2004に接続される各ブロックを制御する。ここでOSとはコンピュータ上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをOSと呼ぶ。後述する各シーケンスの処理はこのプログラムの実行により実現できる。RAM2002は、CPU2001の主メモリ、ワークエリア等として機能する。キーボードコントローラ(KBC)2005は、キーボード2009や不図示のポインティングデバイスからのキー入力を制御する。CRTコントローラ(CRTC)2006は、CRTディスプレイ2010の表示を制御する。ディスクコントローラ(DKC)2007は各種データを記憶するハードディスク(HD)等の外部メモリ2011におけるデータアクセスを制御する。ネットワークコントローラ(NC)2008はWAN100、LAN101を介して接続された他の機器との通信制御処理を実行する。
なお、IaaSとして提供される仮想的な情報処理装置の場合においては、KBC2005、CRTC2006等を備えず、NC2008を介して接続される端末に備えるキーボード2009や、CRTディスプレイ2010から操作されるよう構成される。尚、後述の全ての説明においては、特に断りのない限りサーバーや端末における実行のハード上の主体はCPU2001であり、ソフトウェア上の主体は外部メモリ2011にインストールされたアプリケーションプログラムである。
図3は本実施の形態に係る、認可サーバー200、リソースサーバー300それぞれのモジュール構成を示す図であり、各々がモジュールを実行することでサービスを提供する。なお認可サーバー200、リソースサーバー300は図2のものと同一である。端末400のソフトウェアモジュールを含め、権限移譲システム内の装置が有するソフトウェアモジュールは、各装置のCPU2001がRAM2002にロードされたプログラムを実行することで実現される。
図中200は認可サーバー200である。認可サーバー200は認可サーバーモジュール210、HTTPサーバーモジュール220を持つ。HTTPサーバーモジュール220はWAN100を介して接続する端末400に設置されたWebブラウザー410、クライアントアプリケーション420とのHTTP通信を行うためのモジュールである。また、SSL/TLSによる通信が可能に構成されており、不図示の証明書ストアを持つ。また、本実施例では、後述する認可要求を受け付けた場合に、要求元に対してユーザーID、パスワードによるユーザー認証を要求するよう構成している。次に、認可サーバーモジュール210はHTTPサーバーモジュール220上もしくは、連携して動作するWebアプリケーションであり、HTTPサーバーモジュール220を介してWebブラウザー410からの要求を受け付け、処理し、応答する。その際、本実施例では、HTTPサーバーモジュール220にてユーザー認証を受け付け、要求元の認証に成功した場合、認証したユーザー情報を紐づけた認証トークンを生成し認可サーバーモジュール210に認証トークンを通知するよう構成されている。
ここで、認証トークンとはユーザーを認証しユーザーがログインしている事を示す、もしくはユーザーが認証されているかを検証するためのトークンであり、この認証トークンを利用する事でユーザーを識別する事が可能となる。後述の認可コードは、認証されたユーザーの認可操作により権限移譲されたクライアントが、ユーザーの権限をもってユーザーに成り代わりアクセスすることを許可した事を示すためのトークンであり、両者は異なる。特に顕著なのは、認証トークンの場合はユーザーの確認を目的としているが、認可トークンは権限の確認を目的としている点である。
また、認可トークンは、クライアントが認可コードを用いて取得し、クライアントがAPIを利用するための権限を持つことを示すトークンである。さらには、リフレッシュトークンは、同じく認可コードを用いて取得し認可トークンを再発行することが可能であることを示すトークンである。HTTPサーバーモジュール220、および認可サーバーモジュール210における処理の詳細は後述する。認可サーバーモジュール210はLAN101を介してリソースサーバーモジュール310からの認可トークンの権限検証処理を受け付け、処理し、クライアントによるリソースサーバー300へのアクセス可否に関する応答を行うよう構成されている。この認可トークンの権限検証処理は、RPC(Remote Procedure Call)として構成する事も可能であるし、HTTPサーバーモジュール220を介してLAN101内で通信可能なWebサービスのAPIとして構成する事も可能である。
図中300はリソースサーバー300である。リソースサーバー300はリソースサーバーモジュール310を持つ。リソースサーバーモジュールは不図示のHTTPサーバーモジュール上で動作するよう構成する事も可能である。リソースサーバーモジュール310はWebサービスとして公開するAPIを備えており、後述するクライアントアプリケーション420からのリソース要求を受け付け、処理し、応答する。また、リソースサーバーモジュール310は認可サーバーモジュール210に対してLAN101を介して後述の認可トークンの権限検証処理を要求する。
次に、図4、図5および各表を用いて、クライアントアプリケーション420が、リソースサーバーモジュール310が公開するAPIを利用するまでの本実施形態のシーケンスを説明する。なお、図中“Ref”は参照を示しており、別図で説明する。また、“Alt”は分岐を示しており、事前のシーケンスの結果による分岐処理を示す。
まず、認可サーバーモジュール210のユーザーテーブルおよびクライアントテーブルのデータ例を示す。
本実施形態では、ユーザーの権限として上述の設定値に対する全ての操作が可能な管理者権限、設定値を編集可能な設定値編集者権限、設定値を参照することができる設定値参照者権限、および、設定値を反映する複合機やプリンターなどのデバイスを特定するための情報を設定値に設定するデバイス設定者権限、が定義されている。通常、権限とスコープは対応付けて定義し、スコープによりデータへのアクセス範囲が決定される。スコープはリソースサーバーモジュール310が提供するサービスを利用する範囲を定義しており、これによりデータへのアクセス許容量が決定される。
例えば、設定値参照者の権限に対応する「read」というスコープが定義されていた場合、クライアントアプリケーション420は、この「read」というスコープを用いて権限移譲プロトコルを実施し、「read」スコープに対応する認可トークンを取得することが可能である。そしてこの認可トークンを用いることで、リソースサーバーモジュール310の各種設定値を参照するためのAPIを利用することが可能となる。しかしながら、この認可トークンでは設定値を編集するAPIを利用することはできない。クライアントアプリケーション420が設定値を編集するためには、その権限に対応する「edit」というスコープを指定して認可トークンを取得する必要がある。
そこで権限移譲プロトコルを実施する際に、クライアントアプリケーション420に「read」、「edit」の両方のスコープを指定することが考えられる。しかしながら、ユーザー自身に設定値編集者の権限が付与されていない場合、認可確認の処理でエラーとなり、認可トークンを取得することができない。
本実施形態では、複数のスコープをグルーピングし、そのグループ内のスコープに対応する権限のうち少なくとも一つの権限を所持している場合は、認可確認処理にて認可トークンの発行を許可するスコープグループという定義を追加する。より具体的には、例えば、「admin」、「edit」、「read」、「device」というスコープをまとめた「group」というスコープグループを定義する。「group」は、表3で示された全てのスコープと関連付いているため、グループ権限が与えられたユーザーは現時点におけるリソースサーバーモジュール310が提供する全ての機能を使用できる。そして、「group」スコープを指定して権限移譲プロトコルを実施することで、設定値参照者権限しか所持していないユーザーであっても認可トークンを取得することができるようになる。
ただし、ユーザーは設定値編集権限を所持しないため、「group」を指定した認可トークンであっても、リソースサーバーモジュール310の設定値を編集するAPIが利用できてはならない。そこでリソースサーバーモジュール310は取得した認可トークンと、設定値を編集するAPIのスコープである「edit」を指定して、認可サーバーモジュール210に対して、ユーザーが権限を所持しているかを検証するための権限検証処理を依頼する。権限検証処理の詳細については後述する。
スコープグループの処理により、ユーザーは自身の権限に変更があったとしても、「group」を指定して取得した認可トークンであれば、ユーザーの権限に即したAPI利用が可能となる。また、リソースサーバーモジュール310にて、例えば、設定値の制御順序を変更するためのスコープ「order」が必要なAPIを新規追加し、認可サーバーモジュール210にてスコープ定義「order」を追加した場合、通常は、「order」スコープを指定して、再度権限移譲プロトコルを実施する必要がある。しかしながら、「order」スコープをスコープグループ「group」に紐づけて定義することで、ユーザーに権限が付与されている限り、「group」を指定して取得した認可トークンは設定値の制御順序を変更するためのAPIを利用するためのトークンとして利用できる。
なお、認可サーバーモジュール210は、リソースサーバー300に追加された新しい機能を呼び出すAPIの実装に伴い送信されるそのAPIに対応する新たなスコープを定義する要求を受信したことに応じて、スコープ定義テーブルに新たなスコープを定義する。その際に、「group」に対して新たなスコープを関連付けることもできるが、場合によっては、「group」に新たなスコープを関連付けないことも可能である。新たなスコープを定義する要求は、端末400と同じ構成を有する不図示のコンピュータから送信できる。以下、これら処理の詳細について説明する。
本実施形態のシーケンスで説明するユーザーは、ユーザーID「user@xx.com」および、そのパスワードを利用するとして説明する。また、本シーケンスで説明するクライアントアプリケーション420は、クライアントID「c001@xx.com」の各種データである、シークレット、リダイレクトURIを保持している。このリダイレクトURIは、クライアントアプリケーション420が、認可応答を受け付けるためのURIである。これらデータは、あらかじめ認可サーバーモジュール210に登録されている必要があるが、登録手段については不図示の画面を用いた方法や、認可サーバーモジュール210が公開するAPIによって実施する手段が考えられる。
S1.1にて、ユーザーはWebブラウザー410に表示されている不図示の連携開始操作を実行する。S1.2にてWebブラウザー410からクライアントアプリケーション420に連携開始が通知される。なお、S1.1、S1.2の処理については、ユーザーがクライアントアプリケーション420から操作し、クライアントアプリケーション420がWebブラウザー410を呼び出すよう構成することもできる。連携開始を受けたクライアントアプリケーション420はS1.3にて、Webブラウザー410、HTTPサーバーモジュール220を介して認可サーバーモジュール210に対して認可要求を行う。
本実施例では、権限移譲プロトコルとしてOAuth 2.0に定義されているAuthorization Code Grantフローをベースに本願発明の特徴的な構成を説明する。なお、認可要求には、少なくとも、前述のクライアントアプリケーション420が保持しているクライアントID「c001@xx.com」およびリダイレクトURI「https://localhost:xx」を含み、クライアントアプリケーション420がユーザーから権限委譲されるリソースの範囲を示すスコープを含む。ここで、スコープとしては、「read」を指定した場合と、スコープグループ「group」を指定した場合とをそれぞれ説明する。なお、リダイレクトURIは前述したとおり、認可サーバー200にて発行された認可コードを受け付けるクライアントアプリケーション420のURLである。
S1.4にて、Webブラウザー410から認可要求を受け付けたHTTPサーバーモジュール220は、Webブラウザー410からの通知に、HTTP Cookieとして有効な認証トークンが含まれているか検証する。含まれている場合、HTTPサーバーモジュール220は、認証トークンを認可サーバーモジュール210に通知し、S1.9に移行する。含まれていない場合は、以下の処理を実行する。
S1.5にて、HTTPサーバーモジュール220は、ユーザー認証をするためにログイン画面をWebブラウザー410に応答する。ここで図5はHTTPサーバーモジュール220が応答するログイン画面例である。本実施例ではユーザーはユーザーIDおよびパスワードを入力し、それらの組が認可サーバーモジュール210のユーザーテーブルに登録されている情報の組と一致する場合に認証するよう構成されている。なおユーザーを認証する手段として他の手段、例えば、X.509の証明書や、パスワードを複数回入力する多段階認証等、別の手段を構成する事も可能であり、本手段に限定するものではない。
図5のログイン画面5000は、ユーザーIDを入力するユーザーID入力欄5001、パスワードを入力するパスワード入力欄5002、およびログイン操作を実行するためのログインボタン5003から成る。ユーザーはWebブラウザー410に表示されたログイン画面5000に必要な情報を入力し、ログインボタン5003を押下する。Webブラウザー410は入力された情報をHTTPサーバーモジュール220に送信する。HTTPサーバーモジュール220はユーザーID、パスワードを取得し、ユーザーテーブルのユーザーID、パスワードの情報の組と比較し一致するかを検証する事でユーザーを認証する。
本実施形態では、ユーザーID「user@xx.com」、パスワード「user」がログイン画面5000に入力され、HTTPサーバーモジュール220は、それらデータを検証し、認証する。なお、HTTPサーバーモジュール220は、ユーザー認証に失敗、つまり、ユーザーテーブルに情報が登録されていない場合は、不図示の認証エラー画面をWebブラウザー410に応答する。ユーザー認証に成功した場合、HTTPサーバーモジュール220は認証トークンを生成する。この認証トークンはHTTPサーバーモジュール220の不揮発メモリ上に、ユーザーIDに対応するUUIDと対応付けて保存される。なおUUIDとは、Universal Unique Identifierであり、重複しないユニークなIDである。
本実施例では、ユーザーID「user@xx.com」に対応するUUID「10000001」に対応付けて保存される。そして、HTTPサーバーモジュール220は、認証トークンを認可サーバーモジュール210に通知する。なお、この認証トークンはHTTP Cookieとして設定され、HTTPサーバーモジュール220からWebブラウザー410への応答に設定され通知される。以後、Webブラウザー410から認可サーバーモジュール210へのアクセスは上記のとおり、HTTPサーバーモジュール220による認証トークンの検証、認証処理、および認証トークンの認可サーバーモジュール210への通知が実行されるとして説明を省略する。
S1.9にて、認証トークンを含む認可要求を受け付けた認可サーバーモジュール210は、S1.10にて、受信した認可要求のうち、クライアントIDとリダイレクトURIの組が正しいか検証する。より具体的には、クライアントテーブルに登録されているクライアントIDとリダイレクトURIの組が一致するか検証する。不一致の場合、認可サーバーモジュール210は不図示のエラー画面を、HTTPサーバーモジュール220を介してWebブラウザー410に応答する。一致した場合、認可サーバーモジュール210はS2.1で認可確認処理を実施する。この認可確認処理S2.1については後述する。
次に、認可サーバーモジュール210において、認可確認処理S2.1の結果が[許可応答]であった場合のシーケンスについて説明する。S3.1にて認可サーバーモジュール210は、認可コードを発行する。より具体的には、トークンID「cd_000001」、もしくは「cd_000002」を発行し、認可要求に含まれるクライアントID「c001@xx.com」とリダイレクトURI「https://xx/res」、スコープ、認証済みのユーザーのユーザーIDに対応するUUID「10000001」を認可サーバーモジュールのトークンテーブルに登録する。およびその際、トークン種別を認可コードとし、有効期限として当該認可コードが有効である期限の日時を登録する。
以下に、認可サーバーモジュール210のトークンテーブルの例を示す。例では、トークンが有効か否かを示す状態を「有効」として登録しているが、有効期限を検証することで有効性を毎度確認する構成としてもよい。なおスコープとしては、「read」、もしくはスコープグループ「group」がそれぞれ設定される。
そして、S3.2、S3.3にて認可サーバーモジュール210は発行した認可コードのトークンID「cd_000001」もしくは「cd_000002」を付与してWebブラウザー410を介し、クライアントアプリケーション420に認可を応答する。より具体的には、認可要求時に取得したリダイレクトURI「https://localhost:xx」に対してWebブラウザー410をリダイレクトするようWebブラウザー410にリダイレクト応答する。
S3.4にてクライアントアプリケーション420は、認可サーバーモジュール210に対して認可トークンを要求する。この認可トークン要求には、少なくとも、取得した認可コード「cd_000001」もしくは「cd_000002」、クライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」、および認可要求時に送信したリダイレクトURI「https://localhost:xx」が含まれる。
S3.5にて認可サーバーモジュール210は取得したクライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」の組をもってクライアントを認証する。より具体的には、クライアントテーブルの組と一致するかを検証する事で認証する。ここでクライアント認証に失敗した場合はクライアントアプリケーション420に認証エラーを応答する。クライアント認証に成功した場合、S3.6にて認可サーバーモジュール210は、取得した認可コード「cd_000001」もしくは「cd_000002」を検証する。認可コードの検証としては、取得した認可コードがトークンテーブルに登録されているか、登録されている場合は、有効かを検証する。さらには、認可トークン要求にて取得したクライアントID「c001@xx.com」とリダイレクトURI「https://localhost:xx」がトークンテーブルのクライアントID、リダイレクトURIと一致するかを検証する。
認可コード検証の結果が無効であった場合、認可サーバーモジュール210はクライアントアプリケーション420にトークン不正エラーを応答する。そして、認可コード検証の結果が有効であった場合、認可サーバーモジュール210はS3.7にて認可トークンを発行する。より具体的には、トークンID「at_000001」もしくは「at_000002」を発行し、認可コードに紐づくユーザーのUUID「10000001」、スコープ「read」もしくは「group」、および認証したクライアントID「c001@xx.com」をトークンテーブルに登録する。その際、トークン種別は認可トークンとし、有効期限として当該認可トークンが有効である期限の日時を登録する。さらに認可サーバーモジュール210はS3.8にてリフレッシュトークンを発行する。より具体的には、トークンID「rt_000001」もしくは「rt_000002」を発行し、それぞれの認可トークンに紐づくユーザーのUUID「10000001」、スコープ、および認証したクライアントIDをトークンテーブルに登録する。その際、トークン種別はリフレッシュトークンとし、有効期限として当該リフレッシュトークンが有効である期限の日時を登録する。
なお、OAuth 2.0の場合は、認可コードは一度しか利用できないように制御することが推奨されているため、トークンID「cd_000001」、「cd_000002」の認可コードの状態を「無効」にする。無効にする処理として、状態を利用するのではなく、有効期限を過去の日時に更新することで無効扱いとすることや、テーブルのレコードそのものを削除することで無効にするという方法でもよい。
以下に認可サーバーモジュール210のトークンテーブルの例を示す。例では、表4で示した認可サーバーモジュール210のトークンテーブルに対してデータが追加された状態を示している。
そして、S3.9にて認可サーバーモジュール210は発行した認可トークンのトークンID「at_000001」もしくは「at_000002」、リフレッシュトークンのトークンID「rt_000001」もしくは「rt_000002」をクライアントアプリケーション420に応答する。
認可トークンを取得したクライアントアプリケーション420は、S3.10にてリソースサーバーモジュール310が公開するAPIに対してリソース要求を行う。より具体的には、それぞれの認可トークンを用いて設定値を参照するためのAPIを呼び出したとして説明する。
リソース要求を受けたリソースサーバーモジュール310は、S3.11にて認可サーバーモジュール210に対して権限検証を要求する。その際、リソースサーバーモジュール310は、取得した認可トークン「at_000001」もしくは「at_000002」および検証対象である要求されたリソースのスコープである「read」を認可サーバーモジュール210に渡す。S4.1の認可サーバーモジュール210における権限検証処理については後述する。
S3.12にてリソースサーバーモジュール310は認可サーバーモジュール210から権限検証の結果を取得する。結果、許可であった場合はS3.13にてリソース、より具体的には要求された設定値をリソースサーバーモジュール310は取得し、S3.14にてクライアントアプリケーション420に応答する。権限検証の結果、拒否であった場合は、S3.13をスキップし、S3.14にてクライアントアプリケーション420にエラーを応答する。
次に、認可サーバーモジュール210において、認可確認処理S2.1の結果が[拒否応答]であった場合のシーケンスについて説明する。S5.1、S5.2にて認可サーバーモジュール210は、Webブラウザー410を介し、クライアントアプリケーション420に拒否応答を応答する。より具体的には、認可要求時に取得したリダイレクトURI「https://localhost:xx」に対してWebブラウザー410をリダイレクトするようWebブラウザー410にリダイレクト応答する。
以上が、クライアントアプリケーション420が、リソースサーバーモジュール310が公開するAPIを利用するまでの、権限移譲プロトコルを利用した本実施形態のシーケンスである。OAuth2.0のAuthorization Code Grant を例に認可トークンの発行処理について説明したが、権限移譲プロトコルであればこれに限るモノではない。例えば、必ずしも認可コードの発行の必要はなく、最終的に認可情報である認可トークンが発行されさえすれば良い。
次に、図6を用いて、クライアントアプリケーション420が認可トークンをリフレッシュし、リソースサーバーモジュール310が公開するAPIを利用するための権限移譲プロトコルにおけるリフレッシュシーケンスを説明する。なお、図中“Alt”は分岐を示しており、事前のシーケンスの結果による分岐処理を示す。また、“Opt”はオプションであり、処理を省くことも可能である。
なお本シーケンスは、S6.1のユーザー操作から開始されるケースと、クライアントアプリケーション420が自身の処理中にて開始するケースとがある。そのため、S6.1、S6.2はオプションとして記載している。
S6.1にてユーザーは、Webブラウザー410に表示されている不図示の再実行操作を行う。S6.2にてWebブラウザー410からクライアントアプリケーション420に再実行が通知される。再実行を受け付けたクライアントアプリケーション420は、S7.1にて、リソースサーバーモジュール310が公開するAPIに対して、すでに取得済みの認可トークン「at_000001」、もしくは「at_000002」を用いてリソース要求を行う。ここで、それぞれの認可トークンは有効期限に達しており、無効状態になっているとして説明する。
S7.2にて、リソースサーバーモジュール310は、認可サーバーモジュール210に対して認可トークンが有効であるか否かを問い合わせるための認可トークン検証要求を行う。認可サーバーモジュール210は、トークンテーブルを参照し、認可トークンが有効か否かを確認し、結果を応答する。前述の通り無効であるため、認可サーバーモジュール210は、S7.3にて、リソースサーバーモジュール310に対して、認可トークン無効応答を送信する。そして、S7.4にてリソースサーバーモジュール310はクライアントアプリケーション420に対して認可トークンが無効であるとして認可トークン無効応答を返す。
S7.5にて、クライアントアプリケーション420は認可サーバーモジュール210に対して認可トークンリフレッシュ要求を行う。その際、認可トークン、リフレッシュトークン応答にて取得したトークンID「rt_000001」もしくは「rt_000002」、および、クライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」を送信する。
S7.6にて認可サーバーモジュール210は取得したクライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」の組をもってクライアントを認証する。より具体的には、クライアントテーブルの組と一致するかを検証する事で認証する。ここでクライアント認証に失敗した場合はクライアントアプリケーション420に認証エラーを応答する。クライアント認証に成功した場合、S7.7にて認可サーバーモジュール210は、取得したリフレッシュトークンを検証する。認可コードの検証としては、取得したリフレッシュトークンがトークンテーブルに登録されているか、登録されている場合は、有効かを検証する。さらには、認可トークンリフレッシュ要求にて取得したクライアントID「c001@xx.com」がトークンテーブルのクライアントIDと一致するかを検証する。リフレッシュトークン検証の結果が[無効]であった場合の処理は後述する。ここで、リフレッシュトークン検証の結果が[有効]であった場合、認可サーバーモジュール210はS8.1で認可確認処理を実施する。この認可確認処理S8.1については、先述のS2.1の認可確認処理と合わせて後述する。
次に、リフレッシュトークン検証の結果が[有効]であり、かつ認可確認処理S8.1の結果が[許可]であった場合、認可サーバーモジュール210はS9.1にて認可トークンを発行する。より具体的には、トークンID「at_000003」、もしくは「at_00004」を発行し、リフレッシュトークンに紐づくユーザーのUUID「10000001」、スコープ「read」もしくは「group」、および認証したクライアントID「c001@xx.com」をトークンテーブルに登録する。その際、トークン種別は認可トークンとし、有効期限として当該認可トークンが有効である期限の日時を登録する。さらに認可サーバーモジュール210はOAuth 2.0 のオプションの仕様としてS9.2にてリフレッシュトークンを再発行するよう構成することもできる。その場合は、S9.3にて利用したリフレッシュトークンを無効化する。より具体的には、トークンID「rt_000003」、「rt_00004」をそれぞれ発行し、さらに、「rt_000001」、「rt_00002」のリフレッシュトークンの状態を「無効」にする。本実施の形態では、リフレッシュトークンの再発行処理は実施しない方式で説明する。
そして、S9.4にて認可サーバーモジュール210は発行した認可トークンのトークンIDをクライアントアプリケーション420に応答する。認可トークンを取得したクライアントアプリケーション420は、S9.5にてリソースサーバーモジュール310が公開するAPIに対してリソース要求を行う。これ以降の処理については、図4中のS4.1および、S3.12からS3.14までの処理と同様であるため説明を省略する。
次に、認可サーバーモジュール210において、認可確認処理S8.1の結果が[無効]もしくは認可確認証にて[拒否]であった場合のシーケンスを説明する。S9.1にて認可サーバーモジュール210はクライアントアプリケーション420に対してリフレッシュトークンが無効であると応答する。リフレッシュトークンの無効応答を受信したクライアントアプリケーション420は、前述のS1.3認可要求を実施する。その後の処理は図4を用いて説明したシーケンスと同様出るため説明を省略する。
以上が、クライアントアプリケーション420が認可トークンをリフレッシュし、リソースサーバーモジュール310が公開するAPIを利用するための権限移譲プロトコルにおけるリフレッシュシーケンスである。
続いて、本実施の形態の特徴の一つである、図4を用いて説明した認可確認処理S2.1について図7、図8を用いて説明する。この認可確認処理S2.1を用いることで、前述のスコープグループによる認可トークンの発行が可能となる。
認可確認処理S2.1にて、認可サーバーモジュール210は、S10.1にてユーザーIDに対応するUUID、スコープを取得する。ここでUUID「10000001」で、スコープ「read」、もしくはスコープ「group」であったとして説明する。次に、認可サーバーモジュール210はS10.2にて、S10.1にて取得したUUIDを用いて、ユーザーの権限を取得する。より具体的には、UUID「10000001」を用いて認可サーバーモジュール210のユーザーテーブルから権限情報「デバイス設定者」、「設定値参照者」を取得する。
S10.3にて認可サーバーモジュール210は、S10.1で取得したスコープが複数だった場合のループ処理を説明しているが、本実施例では「read」、もしくは「group」とそれぞれ単独でスコープが指定された場合として説明する。
認可サーバーモジュール210は、S10.4にてスコープがスコープグループか否かで処理を分岐する。その際、認可サーバーモジュール210のスコープ定義テーブルの権限情報を確認し、ここが「グループ」であった場合はスコープグループであるとして説明するが、その方式に限るわけではない。例えば、別途スコープかスコープグループかを区別するための項目を増やすことも考え得るし、スコープIDの形式としてプレフィックスやポストフィックスを付与したスコープIDとして、その付与された情報で判別可能とすることもできる。結果、「read」の場合は、スコープグループではないのでS10.5へ、「group」の場合はスコープグループであるため、S10.8へ処理を分岐する。
S10.5にて認可サーバーモジュール210はスコープとユーザーの権限の確認を行う。より具体的には、スコープ定義テーブルの権限情報が、S10.2で取得したユーザーの権限に含まれているか否かを確認する。より具体的には、「read」スコープは権限情報として「設定値参照者」が定義されているため、S10.2で取得したユーザーの権限に「設定値参照者」が含まれているかが確認される。S10.6にて権限ありとなった場合は、S10.3のループ処理を継続し、すべてのスコープに対して権限ありとなった場合、S10.11へ処理を継続する。S10.6にて権限なし、となった場合はS10.7にて権限エラーを応答し、処理を終了する。本実施例ではユーザーの権限に「設定値参照者」が含まれているため、権限あり、としてS10.11 へ処理を継続する。
S10.4の判定の結果、スコープグループだった場合、認可サーバーモジュール210はS10.8にてスコープグループに紐づく全スコープを取得する。より具体的には、表3で示すスコープ定義テーブルからグループ情報を取得する。本実施例では「group」スコープのグループ情報は「admin, edit, read, device」が定義されている。次に、S10.9に取得した全スコープの各々に対してS10.5で説明したスコープとユーザーの権限の確認処理を実施する。そして、S10.10にて、全スコープのうち1個でもユーザーが権限を有している場合は、権限あり、としてS10.3のループ処理を継続し、すべてのスコープに対して権限ありとなった場合、S10.11へ処理を継続する。
S10.10にて全て権限なし、となった場合はS10.7にて権限エラーを応答し、処理を終了する。本実施例ではユーザーの権限に「設定値参照者」、「デバイス設定者」が含まれており、さらに、「read」スコープ、「device」スコープの権限情報がそれぞれ一致するため、2個権限を有していることになる。結果、S10.10にて権限あり、としてS10.11 へ処理を継続する。なお、1個でも権限を有している場合に権限ありと判断するため、S10.8で取得するスコープ全てに対して権限を確認せず、途中、1個でも権限あり、と判断された場合に処理を中断し、S10.10にて権限あり、と判断するよう処理を構成することもできる。
S10.11にて認可サーバーモジュール210は認可確認画面をWebブラウザー410に応答する。図8aはスコープグループではないスコープが指定された場合に応答される認可確認画面の例である。また、図8bはスコープグループが指定された場合に応答される認可確認画面の例である。これら画面の共通の部分に関しては、同一の番号を付与している。認可確認画面8000、8100は、認可要求に含まれるクライアントIDをキーとしてクライアントテーブルから取得したクライアント名を表示する領域であるアクセス元表示領域8001を備える。さらに、認可要求で取得したスコープに対応する説明を表示する領域である委譲権限表示領域8002を備える。本実施例の場合、リソースサーバーモジュール310の提供するサービスの内の全ての機能に対応するスコープがスコープグループを示す「group」に関連付いているので、全てのスコープに対応する権限の内のユーザーが所持している権限が権限移譲の範囲である旨を説明している。
なお、全てのスコープに対応する権限の内のユーザーが所持している権限が権限移譲の範囲である旨を必ずしも認可確認画面8000に表示する必要はない。しかし、表示しない場合であっても、スコープグループに関連付く少なくとも1つ以上のスコープの範囲、本実施例の場合「admin, edit, read, device」の範囲でクライアントアプリケーション420がリソースサーバーモジュール310が提供するWebサービスを利用する可能性があることを表示させる必要はある。また、認可確認画面8000、8100は、ユーザーが上記情報の内容について認可操作を実行する許可ボタン8003、および拒否を実行する拒否ボタン8004を備える。さらに図8bが示すように、スコープグループが指定された場合は、委譲権限表示領域8002で示した移譲する権限の範囲がユーザーの権限の変化によって動的に変更される旨を説明する領域であるスコープグループ説明領域8101を備える事もできる。
S10.12にて、Webブラウザー410は、取得した認可確認画面8000もしくは8100をユーザーに提示する。そして、S10.13にて、ユーザーが許可ボタン8003、もしくは拒否ボタン8004を押下した場合は、その認可確認結果を取得し認可サーバーモジュール210に通知する。
S10.14にて、認可サーバーモジュール210は認可確認結果を取得する。次に、認可サーバーモジュール210は、S10.15にて、S10.14で取得した認可確認結果が許可であった場合は、S10.16にて認可確認処理の結果を「許可応答」として処理を終了する。そして、認可確認結果が拒否であった場合は、S10.17にて認可確認処理の結果を「拒否応答」として処理を終了する。
以上が、本実施の形態の特徴の一つである認可確認処理である。この認可確認処理を用いることで、スコープグループによる認可トークンの発行が可能となる。なお、図6で説明したリフレッシュシーケンスにおけるS8.1の認可確認処理は、当該処理のうち、S10.1のユーザーUUID、スコープ取得を、リフレッシュトークンから行い、さらに、S10.3のループ処理が終了した際に、許可応答を返し、S10.7の権限エラーの場合に拒否応答を返す処理であることを除いて、その他処理について同様であるため説明を省略する。
続いて、本実施の形態の特徴の一つである、図4を用いて説明した権限検証処理S4.1について図9を用いて説明する。この権限検証処理S4.1を用いることで、スコープグループを指定して取得した認可トークンであれば、そのスコープグループ内に含まれるスコープの範囲内にて、権限検証が実施される。そして、そのスコープに対応する権限をユーザーが所持していた場合は権限検証の結果、権限ありと判断される。
S11.1にて認可サーバーモジュール210は取得した認可トークンから紐づく全スコープ、ユーザーのUUIDを取得する。本実施の形態では「at_000001」もしくは、「at_000002」が認可トークンとして取得された場合をそれぞれ説明する。認可トークン「at_000001」の場合、認可サーバーモジュール210の表5に示すトークンテーブルにて、ユーザーのUUID「10000001」、スコープ「read」が取得される。認可トークン「at_000002」の場合、認可サーバーモジュール210のトークンテーブルにて、ユーザーのUUID「10000001」、スコープ「group」が取得される。
次に、S11.2にて認可サーバーモジュール210は取得されたスコープの数だけループ処理を実施するが、本実施の形態では、それぞれ1個のスコープが取得された場合を説明する。S11.3にて認可サーバーモジュール210は取得したスコープがスコープグループであるか否かで処理を分岐する。その際、認可サーバーモジュール210のスコープ定義テーブルの権限情報を確認し、ここが「グループ」であった場合はスコープグループであるとして説明するが、その方式に限るわけではない。
例えば、別途スコープかスコープグループかを区別するための項目を増やすことも考え得るし、スコープIDの形式としてプレフィックスやポストフィックスを付与したスコープIDとして、その付与された情報で判別可能とすることもできる。スコープが「read」の場合は、スコープグループではないのでS11.2のループ処理を継続し、すべてのスコープに対する処理が完了するとS11.5へ遷移する。また、スコープが「group」の場合はスコープグループであるため、S11.4へ処理を分岐する。
S11.4にて、認可サーバーモジュール210はスコープグループに紐づく全スコープを取得する。より具体的には、スコープ定義テーブルからグループ情報を取得する。本実施例では「group」スコープのグループ情報は「admin, edit, read, device」が定義されている。そして取得したグループ情報を分解し、それぞれスコープを後続の処理対象として記憶する。そして、S11.2のループ処理を継続し、すべてのスコープに対する処理が完了するとS11.5へ遷移する。
S11.5にて認可サーバーモジュール210はS11.1にて取得したUUIDを用いて、ユーザーの権限を取得する。より具体的には、UUID「10000001」を用いて認可サーバーモジュール210のユーザーテーブルから権限情報「デバイス設定者」、「設定値参照者」を取得する。
S11.6にて認可サーバーモジュール210は権限検証リクエストに含まれる検証対象のスコープの数分ループ処理を実施する。本実施の形態では、検証対象のスコープとして設定値を参照するためのスコープである「read」が指定されたとして説明する。
S11.7にて認可サーバーモジュール210は検証対象のスコープがS11.2のループ処理でスコープグループを分解した結果を含む、トークンから取得した一つないし複数のスコープに含まれているかを検証する。ここで含まれていない場合は、S11.8にて本検証対象のスコープに対しては権限がないと判断し、その旨応答として記憶する。そしてS11.7のループ処理を継続する。
一方、S11.7の判断にて検証対象のスコープがトークンから取得したスコープに含まれていると判断された場合、S11.9にて検証対象のスコープとユーザーの権限の確認を行う。本実施の形態では、検証対象のスコープ「read」は、認可トークン「at_000001」から取得されたスコープが「read」であるため、含まれると判断され、S11.9に処理を分岐する。また、認可トークン「at_000002」から取得されたスコープは、「admin」,「edit」, 「read」, 「device」であるため、含まれると判断され、S11.9に処理を分岐する。
S11.9にて認可サーバーモジュール210は検証対象のスコープとユーザーの権限の確認を行う。より具体的には、スコープ定義テーブルの権限情報が、S11.5で取得したユーザーの権限に含まれているか否かを確認する。より具体的には、検証対象のスコープ「read」スコープは権限情報として「設定値参照者」が定義されているため、S11.5で取得したユーザーの権限に「設定値参照者」が含まれているかが確認される。S11.9にて権限ありとなった場合は、S11.10にて、本検証対象のスコープに対しては権限があるとして記憶する。また、含まれていない場合は、本検証対象のスコープに対しては権限がないとして記憶する。そして、S11.7のループ処理を継続し、すべての検証対象のスコープに対して権限検証が終了すると、S11.11にてそれら権限検証の結果を応答し、処理を終了する。その際、記憶された権限検証の結果を全て応答する。例えば、検証リクエストに複数のスコープが含まれていた場合は、それぞれのスコープに対する検証結果が応答される。本実施の形態では、「at_00001」、「at_00002」双方とも、権限あり、という結果が応答される。
以上の処理が、認可サーバーモジュール210における権限検証処理である。この処理により、スコープグループを指定して取得した認可トークンであれば、そのスコープグループが分解され検証される。そのため、スコープグループ内のスコープの範囲内であれば、ユーザーの認可処理を実施することなく、ユーザーの権限の検証判断、つまり、S11.9の処理を実施することが可能となる。つまり、ユーザーの権限の変更に対し、ユーザーに再度認可確認処理を強いることなく、ユーザーの権限に即した権限検証処理を実施することが可能となる。
次に、図10を用いてOAuth2.0を例にスコープ定義に変更があった場合においても、ユーザーの再認可を必要することなくAPI利用が継続できるケースと、ユーザーの権限に変更があった場合においても、ユーザーの再認可を必要とすることなくAPI利用が継続できるケースとを時系列で説明する。
図10aはスコープ定義の変更とAPI実行の可否の振る舞いを時系列で示した図である。図中右方向の矢印は時間軸である。また時間軸に対する矢印は矢印がさす特定の時間におけるスコープ定義や、ユーザーの権限、およびクライアントアプリケーション420からリソースサーバーモジュール310へのAPI利用および、その結果を示している。
まず、図に示す通り、ユーザー「user@xx.com」は、その権限情報として「デバイス設定者」、「設定値参照者」を所持している。次に、スコープ定義としては図で示している通りである。特にスコープID「group」は、そのメンバーとして「read」、「device」スコープが含まれている。
その状態で、クライアントアプリケーション420にてスコープ「group」で認可トークン1を取得したとする。認可トークンを取得するためのシーケンスおよびフローについては前述したとおりである。
次に、クライアントアプリケーション420は取得した認可トークン1を利用してリソースサーバーモジュール310のスコープ「read」を要求するリソースへのAPIを実行する。結果、スコープグループ「group」にはスコープ「read」が含まれており、さらにユーザーはスコープ「read」に紐づく権限である「設定値参照者」の権限を有しているため、APIの実行は成功する。
次に、クライアントアプリケーション420は取得した認可トークン1を利用してリソースサーバーモジュール310のスコープ「order」を要求するリソースへのAPIを実行する。結果、スコープグループ「group」にはスコープ「order」が含まれていないため、ユーザーの権限検証されることなく、APIの実行は拒否される。ここまでが課題として説明した状態である。つまり、スコープ「order」を指定してOAuth 2.0のAuthorization Code Grantを再度処理し、別の認可トークンを取得しなければこのAPIを利用することができず、ユーザーは認可操作をもう一度実施しなければならない。
次に、スコープ定義のスコープ「group」のメンバーにスコープ「order」を追加したとする。その後に、クライアントアプリケーション420は取得した認可トークン1を利用して再度リソースサーバーモジュール310のスコープ「order」を要求するリソースへのAPIを実行する。結果、スコープグループ「group」にはスコープ「order」が含まれており、さらにユーザーはスコープ「order」に紐づく権限である「デバイス設定者」の権限を有しているため、APIの実行は成功する。
つまりユーザーに権限が付与されている限り、「group」を指定して取得した認可トークンは、そのままスコープ「order」を必要とするAPIを利用することができる。結果、リソースサーバーモジュール310に新しい機能が実装された場合、その機能を呼び出すAPIをクライアントアプリケーション420は認可トークンをユーザーに再発行させる処理を要求することなく利用できる。
図10bはユーザー権限の変更とAPI実行の可否の振る舞いを時系列で示した図である。図中右方向の矢印は時間軸である。また時間軸に対する矢印は矢印がさす特定の時間におけるスコープ定義や、ユーザーの権限、およびクライアントアプリケーション420からリソースサーバーモジュール310へのAPI利用および、その結果を示している。
まず、図に示す通り、ユーザー「user@xx.com」は、その権限情報として「デバイス設定者」、「設定値参照者」を所持している。次に、スコープ定義としては図で示している通りである。特にスコープID「group」は、そのメンバーとして「read」、「device」および「order」スコープが含まれている。また、「order」スコープに紐づく権限情報として「設置作業者」が関連づいている。
その状態で、クライアントアプリケーション420にてスコープ「group」で認可トークン1を取得したとする。認可トークンを取得するためのシーケンスおよびフローについては前述したとおりである。なお、図示していないが、ここでスコープ「order」を指定して認可トークン1の取得を実施しようとした場合、フローで説明したとおりユーザーに権限がないため、取得に失敗する。
次に、クライアントアプリケーション420は取得した認可トークン1を利用してリソースサーバーモジュール310のスコープ「read」を要求するリソースへのAPIを実行する。結果、スコープグループ「group」にはスコープ「read」が含まれており、さらにユーザーはスコープ「read」に紐づく権限である「設定値参照者」の権限を有しているため、APIの実行は成功する。
次に、クライアントアプリケーション420は取得した認可トークン1を利用してリソースサーバーモジュール310のスコープ「order」を要求するリソースへのAPIを実行する。結果、スコープグループ「group」にはスコープ「order」が含まれているが、ユーザーはスコープ「order」に紐づく権限である「設置作業者」の権限を有していないため、APIの実行は拒否される。ここまでが前提の状態である。
次に、ユーザー「user@xx.com」に「設置作業者」の権限を付与する。その後、クライアントアプリケーション420は取得した認可トークン1を利用して再度リソースサーバーモジュール310のスコープ「order」を要求するリソースへのAPIを実行する。結果、スコープグループ「group」にはスコープ「order」が含まれており、さらにユーザーはスコープ「order」に紐づく権限である「設置作業者」の権限を有しているため、APIの実行は成功する。つまり、ユーザーの権限の変更があった場合に、再度OAuth 2.0のAuthorization Code Grantを処理することなく、そのままスコープ「order」を必要とするAPIを利用することができる。
以上、本実施形態によれば、スコープグループを定義しスコープグループを利用して権限委譲することによって、ユーザーの権限の変更があったとしても、ユーザーに再度認可操作を求めることなく変更されたユーザーの権限の範囲内でAPI利用を継続することができる。また、サービスの新たな機能の実装に伴いスコープに変更があったとしても、同じくユーザーに再度認可操作を求めることなく、ユーザーの権限に応じて新たな機能に対応するAPIを含むAPI利用を継続することができる。
<第2の実施形態>
図7で説明した認可確認処理においてスコープグループが指定された場合、認可確認処理を必要とすることなく取得した認可トークンもしくはリフレッシュした認可トークンを用いることで、ユーザーの権限の範囲内でリソースサーバーモジュール310のAPIを利用することが可能であった。
図7で説明した認可確認処理においてスコープグループが指定された場合、認可確認処理を必要とすることなく取得した認可トークンもしくはリフレッシュした認可トークンを用いることで、ユーザーの権限の範囲内でリソースサーバーモジュール310のAPIを利用することが可能であった。
しかしながら、権限委譲するにあたり、例えば、エンタープライズ用途の場合であって組織のセキュリティ要求が厳しいケースや、セキュリティ意識が高いユーザーが利用する場合、認可確認画面にて詳細に明示されていない範囲の権限を委譲することや、現状保持していない権限を委譲することが許可されないケースも考慮される。
そのようなケースの場合に、特定の条件によっては、クライアントアプリケーション420がスコープグループを指定して権限移譲プロトコルの処理を開始したとしても、スコープグループとしてではなく、自身が所持している権限の範囲内でのスコープに制限して権限委譲をする手段を第2の実施形態として説明する。
図11は認可サーバーモジュール210における上述の特定の条件、つまりスコープグループを指定されたとしても、グループとしての権限委譲ではなく、その中でユーザーが権限を有する範囲のみに権限委譲をするための条件を設定するOAuth 2.0設定画面の例である。認可サーバーモジュール210が提示するOAuth 2.0設定画面11000は、全体としての設定を行う、全体設定11001と、クライアントごとに設定するクライアント設定11002と、スコープグループごとに設定するスコープグループ設定11003からなる。なお、この設定は、エンタープライズでの利用の場合は、組織全体の設定として備える事も可能であるし、ユーザーごとの設定として備える事も可能である。また、保存ボタン11004を押下する事で、認可サーバーモジュール210に設定を行う。閉じるボタン11005は認可サーバーモジュール210に設定を行わずにOAuth 2.0設定画面を閉じるためのボタンである。
ここで、全体設定11001が有効になっている場合は、スコープグループが指定されたとしても、必ず、ユーザーが所持している権限の範囲のみ権限が委譲される設定である。次に、クライアント設定11002が有効になっている場合は、有効になっている特定のクライアントからの認可要求の場合は、スコープグループが指定されたとしても、ユーザーが所持している権限の範囲のみ権限が委譲される設定である。最後に、スコープグループ設定11003が有効になっている場合は、有効になっている特定のスコープグループが指定されている場合は、そのスコープグループの範囲内において、ユーザーが所持している権限の範囲のみ権限が委譲される設定である。
図12は図7を用いて説明した認可サーバーモジュール210における認可確認処理において、第2の実施形態における処理を追加したフローである。なお、図7と同様の処理を実施する箇所については同じ処理番号を付与しており説明を省略する。 S12.1にて、認可サーバーモジュール210はユーザー情報やスコープの取得の後、さらにクライアント情報、より具体的には認可要求を行ったクライアントアプリケーション420のクライアントIDを取得する。本実施の形態では、クライアントID「c001@xx.com」が取得される。次に、S12.2にて図11を用いて説明したOAuth 2.0設定画面にて特定の条件の設定情報を取得する。
その後、スコープグループに対してS10.8からS10.10の処理を実施したのちに、S12.3にて、認可サーバーモジュール210は特定の条件に合致するかを検証する。より具体的には、全体設定11001が設定されているか、もしくはS12.1で取得したクライアントIDに対応するクライアントがクライアント設定11002にて設定されているか、もしくは現在検証しているスコープグループが、スコープグループ設定11003にて設定されているか、を確認する。どれが一つの設定が合致した場合は、認可確認必須設定がなされている、としてS12.4へ処理を分岐する。一つも合致しない場合は、S10.3のループ処理へ処理を分岐し、以降は図7を用いて説明した通りである。
S12.4にて認可サーバーモジュール210はS10.9にて確認した際に、スコープとユーザーの権限の確認の結果、権限あり、と判断されたスコープのみを抽出する。そして、認可要求として検証しているスコープグループではなく、抽出した権限を有するスコープのみが認可要求されたとしてスコープを置き換え、S10.3のループ処理を継続する。つまり、S10.11の認可確認画面応答において、スコープグループの場合は図10bを応答するとして説明したが、スコープグループではなく、権限を有するスコープに置き換えて応答するため、図10aで説明した認可確認画面が応答されることになる。
以降の処理は図7を用いて説明した通りである。
以上、特定の条件によっては、クライアントアプリケーション420がスコープグループを指定して権限移譲プロトコルの処理を開始したとしても、スコープグループとしてではなく、自身が所持している権限の範囲内でのスコープに制限して権限委譲をすることができる。
<第3の実施形態>
図12で説明した認可確認処理では、特定の条件を設定した場合のみ、認可確認を強制するとして説明した。しかしながら、例えば、コンシューマー利用の場合はあらかじめOAuth 2.0設定を実施しておくことは煩雑であり、設定が漏れた場合は自動的にスコープグループとして認可確認処理が実施される。それは悪意あるシステム管理者によって、認可サーバーモジュール210のスコープ定義を変更することによって、ユーザーが意図していない権限委譲を実施したことにすることが可能となってしまう。
図12で説明した認可確認処理では、特定の条件を設定した場合のみ、認可確認を強制するとして説明した。しかしながら、例えば、コンシューマー利用の場合はあらかじめOAuth 2.0設定を実施しておくことは煩雑であり、設定が漏れた場合は自動的にスコープグループとして認可確認処理が実施される。それは悪意あるシステム管理者によって、認可サーバーモジュール210のスコープ定義を変更することによって、ユーザーが意図していない権限委譲を実施したことにすることが可能となってしまう。
例えば、ユーザーが認可することに抵抗が少ないスコープグループを定義し、ユーザーに認可操作を行わせ、その後、ユーザーが認可をためらうようなスコープをそのスコープグループに所属させるといったことを行うことが可能となってしまう。そこで、第3の実施形態として、ユーザーが認可操作をするごとに、スコープグループとして権限を委譲するか、自身の権限の範囲内のみで権限を委譲するかを選択することを可能とした形態を説明する。なお、第3の実施形態は、第1の実施形態もしくは第2の実施形態の権限移譲システムにて実施される。
図13は、図7もしくは図12で説明した認可確認処理のうち、スコープグループが権限委譲されるケースにおけるS10.11にて応答する認可確認画面の例である。ここで、図8bとして説明した認可確認画面8100に対して、ユーザー確認項目13001としてスコープグループとして権限を委譲するか否かを選択可能とする項目を設ける。ここでユーザー確認項目13001を選択すると、認可サーバーモジュール210は、S10.9にて確認した際に、スコープとユーザーの権限の確認の結果、権限あり、と判断されたスコープのみを抽出し、そのスコープを委譲権限表示領域8002に再表示する。結果、図13で示した認可確認画面13000の委譲権限表示領域8002の状態から、図8aで示した認可確認画面8000の委譲権限表示領域8002の状態に変更される。
その後に、許可ボタン8003が押下されると、認可サーバーモジュール210はS10.16の処理にて、許可応答を返すとともに、S3.1にて認可コードを発行する際に紐づけるスコープを、スコープグループではなく、S10.9にて確認した際に、スコープとユーザーの権限の確認の結果、権限あり、と判断されたスコープを用いる。つまりS10.11にて、S10.1にて取得されるスコープがS10.9で権限ありと判断されたスコープとなり、S10.2、S10.3、S10.4、S10.5、S10.6の処理が実施されたことと同じ結果が得られる。
以降の処理は図4を用いて説明した通りであり、S10.9にて権限ありと判断されたスコープのみがS3.1の認可コード発行処理における認可サーバーモジュール210のトークンテーブルに登録されるスコープとなる。結果、発行される認可トークンに紐づくスコープは、スコープグループではなく、S10.9にて権限ありと判断されたスコープとなる。また、認可確認画面13000にて、ユーザー確認項目13001がチェックされていない状態で許可ボタン8003が押下された場合はスコープグループとして権限委譲がなされる。つまり、S3.1の認可コード発行処理における認可サーバーモジュール210のトークンテーブルに登録されるスコープはスコープグルーとなる。結果、発行さえる認可トークンに紐づくスコープがスコープグループとなる。
以上の処理によって、ユーザーは、認可サーバーモジュール210に対して認可確認画を用いることによってスコープグループとして権限委譲するか、もしくは自身が権限を所持している範囲にて権限委譲するかを選択することが可能となる。結果、悪意あるシステム管理者によってスコープグループの設定を変更することで、ユーザーが意図しない権限委譲が行われたとするような行為を防ぐことが可能となる。
[その他の実施例]
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
200 認可サーバー
300 リソースサーバー
400 端末
210 認可サーバーモジュール
310 リソースサーバーモジュール
410 Webブラウザー
420 クライアントアプリケーション
300 リソースサーバー
400 端末
210 認可サーバーモジュール
310 リソースサーバーモジュール
410 Webブラウザー
420 クライアントアプリケーション
Claims (15)
- Webサービスを提供するリソースサーバーにおける認証処理および認可処理を実行する認可サーバーであって、
前記Webサービスを利用する範囲が定義されたスコープであって、少なくとも1つ以上のスコープを関連付けたスコープグループを指定する認可要求をクライアントから受信する受信手段と、
前記クライアントを有する端末により表示された認可確認画面を介し、認証済みユーザーの前記Webサービスにおける権限をクライアントへ移譲するための認可操作を前記ユーザーが行ったことに応じて、前記スコープグループに関連付けられた認可情報を発行する発行手段と、
前記クライアントが前記Webサービスを利用するために送信した前記認可情報の検証要求を前記リソースサーバーから受信した際、前記スコープグループと関連付く少なくとも1つ以上のスコープを取得し、前記検証要求が指定する検証対象のスコープが取得された少なくとも1つ以上のスコープに含まれており、かつ前記ユーザーが有する権限で利用できる範囲を定義しているスコープが取得された少なくとも1つ以上のスコープに含まれている場合、前記クライアントは前記検証対象のスコープで定義された範囲で前記Webサービスを利用する権限が移譲されている旨を前記リソースサーバーに送信する検証手段と、
を有する認可サーバー。 - 前記認可確認画面を前記端末へ提供する前記発行手段は、前記スコープグループを指定する認可要求が受信された場合には、前記スコープグループに関連付く少なくとも1つ以上のスコープの範囲で前記クライアントにより前記Webサービスが利用される旨を表示する前記認可確認画面を前記端末へ提供することを特徴とする請求項1に記載の認可サーバー。
- 前記認可確認画面を前記端末へ提供する前記発行手段は、前記クライアントは前記ユーザーから移譲された権限で前記Webサービスを利用する旨を表示する前記認可確認画面を前記端末へ提供することを特徴とする請求項1または2に記載の認可サーバー。
- 前記発行手段は、ユーザーに付与された権限に変更があった場合に前記認可操作を再び行うか否かを指定させる項目を含む設定画面を前記端末へ提供し、前記クライアントを有する端末により表示された前記設定画面を介し、前記認可操作を再び行うことが指定されたことに応じて、前記スコープグループに関連付く少なくとも1つ以上のスコープの内、前記ユーザーが有する権限で利用できる範囲を定義しているスコープのみに関連付けられた認可情報を発行することを特徴とする請求項1乃至3の何れか1項に記載の認可サーバー。
- 前記認可確認画面を前記端末へ提供する前記発行手段は、ユーザーに付与された権限に変更があった場合に前記認可操作を再び行うか否かを指定させる項目を含む前記認可確認画面を前記端末へ提供し、前記クライアントを有する端末により表示された前記認可確認画面を介し、前記認可操作を再び行うことが指定されたことに応じて、前記スコープグループに関連付く少なくとも1つ以上のスコープの内、前記ユーザーが有する権限で利用できる範囲を定義しているスコープのみに関連付けられた認可情報を発行することを特徴とする請求項1乃至4の何れか1項に記載の認可サーバー。
- 前記Webサービスは複合機もしくはプリンターに設定する設定値を配信する機能を備え、前記クライアントは前記設定値を作成し前記Webサービスにアップロードする機能を備えていることを特徴とする請求項1乃至5の何れか1項に記載の認可サーバー。
- 前記スコープグループには、前記設定値に対する全ての操作が可能な管理者権限、前記設定値を編集可能な設定値編集者権限、設定値を参照することができる設定値参照者権限、および前記設定値を反映する複合機もしくはプリンターを特定するための情報を設定値に設定するデバイス設定者権限の何れか1つの権限で利用できる範囲を定義しているスコープの内、少なくとも1つ以上のスコープが関連付くことを特徴とする請求項6に記載の認可サーバー。
- Webサービスを提供するリソースサーバーにおける認証処理および認可処理を実行する認可サーバーの制御方法であって、
前記Webサービスを利用する範囲が定義されたスコープであって、少なくとも1つ以上のスコープを関連付けたスコープグループを指定する認可要求をクライアントから受信する受信ステップと、
前記クライアントを有する端末により表示された認可確認画面を介し、認証済みユーザーの前記Webサービスにおける権限をクライアントへ移譲するための認可操作を前記ユーザーが行ったことに応じて、前記スコープグループに関連付けられた認可情報を発行する発行ステップと、
前記クライアントが前記Webサービスを利用するために送信した前記認可情報の検証要求を前記リソースサーバーから受信した際、前記スコープグループと関連付く少なくとも1つ以上のスコープを取得し、前記検証要求が指定する検証対象のスコープが取得された少なくとも1つ以上のスコープに含まれており、かつ前記ユーザーが有する権限で利用できる範囲を定義しているスコープが取得された少なくとも1つ以上のスコープに含まれている場合、前記クライアントは前記検証対象のスコープで定義された範囲で前記Webサービスを利用する権限が移譲されている旨を前記リソースサーバーに送信する検証ステップと、
を含む制御方法。 - 前記認可確認画面を前記端末へ提供する前記発行ステップにおいて、前記スコープグループを指定する認可要求が受信された場合には、前記スコープグループに関連付く少なくとも1つ以上のスコープの範囲で前記クライアントにより前記Webサービスが利用される旨を表示する前記認可確認画面を前記端末へ提供することを特徴とする請求項8に記載の制御方法。
- 前記認可確認画面を前記端末へ提供する前記発行ステップにおいて、前記クライアントは前記ユーザーから移譲された権限で前記Webサービスを利用する旨を表示する前記認可確認画面を前記端末へ提供することを特徴とする請求項8または9に記載の制御方法。
- 前記発行ステップにおいて、ユーザーに付与された権限に変更があった場合に前記認可操作を再び行うか否かを指定させる項目を含む設定画面を前記端末へ提供し、前記クライアントを有する端末により表示された前記設定画面を介し、前記認可操作を再び行うことが指定されたことに応じて、前記スコープグループに関連付く少なくとも1つ以上のスコープの内、前記ユーザーが有する権限で利用できる範囲を定義しているスコープのみに関連付けられた認可情報を発行することを特徴とする請求項8乃至10の何れか1項に記載の制御方法。
- 前記認可確認画面を前記端末へ提供する前記発行ステップにおいて、ユーザーに付与された権限に変更があった場合に前記認可操作を再び行うか否かを指定させる項目を含む前記認可確認画面を前記端末へ提供し、前記クライアントを有する端末により表示された前記認可確認画面を介し、前記認可操作を再び行うことが指定されたことに応じて、前記スコープグループに関連付く少なくとも1つ以上のスコープの内、前記ユーザーが有する権限で利用できる範囲を定義しているスコープのみに関連付けられた認可情報を発行することを特徴とする請求項8乃至11の何れか1項に記載の制御方法。
- 前記Webサービスは複合機もしくはプリンターに設定する設定値を配信する機能を備え、前記クライアントは前記設定値を作成し前記Webサービスにアップロードする機能を備えていることを特徴とする請求項8乃至12の何れか1項に記載の制御方法。
- 前記スコープグループには、前記設定値に対する全ての操作が可能な管理者権限、前記設定値を編集可能な設定値編集者権限、設定値を参照することができる設定値参照者権限、および前記設定値を反映する複合機もしくはプリンターを特定するための情報を設定値に設定するデバイス設定者権限の何れか1つの権限で利用できる範囲を定義しているスコープの内、少なくとも1つ以上のスコープが関連付くことを特徴とする請求項13に記載の制御方法。
- Webサービスを提供するリソースサーバーにおける認証処理および認可処理を実行する認可サーバーを制御するプログラムであって、
前記Webサービスを利用する範囲が定義されたスコープであって、少なくとも1つ以上のスコープを関連付けたスコープグループを指定する認可要求をクライアントから受信する受信ステップと、
前記クライアントを有する端末により表示された認可確認画面を介し、認証済みユーザーの前記Webサービスにおける権限をクライアントへ移譲するための認可操作を前記ユーザーが行ったことに応じて、前記スコープグループに関連付けられた認可情報を発行する発行ステップと、
前記クライアントが前記Webサービスを利用するために送信した前記認可情報の検証要求を前記リソースサーバーから受信した際、前記スコープグループと関連付く少なくとも1つ以上のスコープを取得し、前記検証要求が指定する検証対象のスコープが取得された少なくとも1つ以上のスコープに含まれており、かつ前記ユーザーが有する権限で利用できる範囲を定義しているスコープが取得された少なくとも1つ以上のスコープに含まれている場合、前記クライアントは前記検証対象のスコープで定義された範囲で前記Webサービスを利用する権限が移譲されている旨を前記リソースサーバーに送信する検証ステップと、
を含むプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016115518A JP2017220113A (ja) | 2016-06-09 | 2016-06-09 | 認可サーバー、制御方法、およびプログラム。 |
US15/608,513 US10425421B2 (en) | 2016-06-09 | 2017-05-30 | Authorization server, control method, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016115518A JP2017220113A (ja) | 2016-06-09 | 2016-06-09 | 認可サーバー、制御方法、およびプログラム。 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017220113A true JP2017220113A (ja) | 2017-12-14 |
Family
ID=60573327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016115518A Pending JP2017220113A (ja) | 2016-06-09 | 2016-06-09 | 認可サーバー、制御方法、およびプログラム。 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10425421B2 (ja) |
JP (1) | JP2017220113A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11206252B2 (en) | 2019-01-24 | 2021-12-21 | Ricoh Company, Ltd. | Information processing system, authentication platform, and authorization information verification method |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10395036B2 (en) * | 2017-03-16 | 2019-08-27 | Dell Products, L.P. | Continued runtime authentication of information handling system (IHS) applications |
US10924509B2 (en) * | 2017-09-29 | 2021-02-16 | Salesforce.Com, Inc. | Cross-site request forgery protection |
JP7453179B2 (ja) * | 2021-04-20 | 2024-03-19 | トヨタ自動車株式会社 | 認証システム |
CN113435898B (zh) * | 2021-07-09 | 2022-06-14 | 支付宝(杭州)信息技术有限公司 | 数据处理方法以及系统 |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6066647B2 (ja) * | 2012-09-27 | 2017-01-25 | キヤノン株式会社 | デバイス装置、その制御方法、およびそのプログラム |
JP6675163B2 (ja) | 2015-07-24 | 2020-04-01 | キヤノン株式会社 | 権限委譲システム、認可サーバの制御方法、認可サーバおよびプログラム |
-
2016
- 2016-06-09 JP JP2016115518A patent/JP2017220113A/ja active Pending
-
2017
- 2017-05-30 US US15/608,513 patent/US10425421B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11206252B2 (en) | 2019-01-24 | 2021-12-21 | Ricoh Company, Ltd. | Information processing system, authentication platform, and authorization information verification method |
Also Published As
Publication number | Publication date |
---|---|
US10425421B2 (en) | 2019-09-24 |
US20170359354A1 (en) | 2017-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10412075B2 (en) | Authorization server, non-transitory computer-readable medium, and authority delegating system | |
JP6857065B2 (ja) | 認証認可サーバー、リソースサーバー、認証認可システム、認証方法及びプログラム | |
US9311469B2 (en) | Authorization server system, control method thereof, and non-transitory computer-readable medium | |
JP2017220113A (ja) | 認可サーバー、制御方法、およびプログラム。 | |
JP6198477B2 (ja) | 権限移譲システム、認可サーバーシステム、制御方法、およびプログラム | |
CN110138718B (zh) | 信息处理系统及其控制方法 | |
JP6904857B2 (ja) | 権限委譲システム、制御方法、およびプログラム | |
US11360724B2 (en) | Information processing system and control method to execute a function of printer using local authentication information associated with the function on client device logging into cloud server | |
JP6061633B2 (ja) | デバイス装置、制御方法、およびそのプログラム。 | |
US9626137B2 (en) | Image forming apparatus, server device, information processing method, and computer-readable storage medium | |
US20140230020A1 (en) | Authorization server and client apparatus, server cooperative system, and token management method | |
JP6675163B2 (ja) | 権限委譲システム、認可サーバの制御方法、認可サーバおよびプログラム | |
JP6245949B2 (ja) | 認可サーバーシステム、その制御方法、およびそのプログラム。 | |
JP2016009299A (ja) | シングルサインオンシステム、端末装置、制御方法およびコンピュータプログラム | |
US20160014107A1 (en) | Data synchronizing system, control method thereof, authorization server, and storage medium thereof | |
JP2020177537A (ja) | 認証認可サーバー、クライアント、サービス提供システム、アクセス管理方法とプログラム | |
JP7409618B2 (ja) | 情報処理装置およびその制御方法とプログラム | |
US9027107B2 (en) | Information processing system, control method thereof, and storage medium thereof | |
JP2016009466A (ja) | Webサービスシステム、認証認可装置、情報処理装置、情報処理方法及びプログラム | |
JP2016085638A (ja) | サーバー装置、端末装置、システム、情報処理方法及びプログラム | |
WO2022259378A1 (ja) | 情報処理システム、リソース管理装置、リソース管理方法及びプログラム | |
JP6128958B2 (ja) | 情報処理サーバーシステム、制御方法、およびプログラム | |
JP2022117303A (ja) | 認証連携サーバ、認証連携方法、認証連携システムおよびプログラム |