JP2017027459A - 権限委譲システム、その制御方法、認可サーバおよびプログラム - Google Patents

権限委譲システム、その制御方法、認可サーバおよびプログラム Download PDF

Info

Publication number
JP2017027459A
JP2017027459A JP2015147023A JP2015147023A JP2017027459A JP 2017027459 A JP2017027459 A JP 2017027459A JP 2015147023 A JP2015147023 A JP 2015147023A JP 2015147023 A JP2015147023 A JP 2015147023A JP 2017027459 A JP2017027459 A JP 2017027459A
Authority
JP
Japan
Prior art keywords
authorization
authority delegation
token
client
request
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
JP2015147023A
Other languages
English (en)
Other versions
JP6675163B2 (ja
Inventor
勇人 松ヶ下
Isato Matsugashita
勇人 松ヶ下
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 JP2015147023A priority Critical patent/JP6675163B2/ja
Priority to US15/213,601 priority patent/US10154036B2/en
Publication of JP2017027459A publication Critical patent/JP2017027459A/ja
Application granted granted Critical
Publication of JP6675163B2 publication Critical patent/JP6675163B2/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0892Network architectures or network communication protocols for network security for authentication of entities by using authentication-authorization-accounting [AAA] servers or protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • 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
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers

Abstract

【課題】クライアントIDや、シークレットを変更することなしに、漏えいしたリフレッシュトークンを無効にすることで、より安全性を高めた権限委譲システムを提供する。
【解決手段】権限委譲システムは、サービスを提供するリソースサーバ103と、リソースサーバ103が有するユーザのデータへのアクセスを、認可トークンに基づいてクライアント装置である連携サーバ104に認めるための権限委譲を行う認可サーバ102とを含む。認可サーバ102は、権限委譲を求める権限委譲要求を受信し、受信した権限委譲要求に基づいて、リフレッシュトークンを検索する。そして、検索したリフレッシュトークンが有効であるか否かを判断し、有効と判断された場合に、リフレッシュトークンを無効化する。
【選択図】図1

Description

本発明は、権限委譲システム、その制御方法、認可サーバおよびプログラムに関する。
近年、インターネット上に展開された所謂クラウドサービスの利用が拡大している。例えば、CRM(Customer Relationship Management)サービスを利用して顧客関係を管理する事がビジネスの現場で拡大している。また、SNS(Social Networking Service)を利用して、リアルタイムに情報発信、情報収集を行う事が、個人だけでなく、ビジネスの現場でも拡大している。
また、これら多数のクラウドサービスは個々にWebサービスのAPI(Application Programming Interface)を公開している。これにより、他のアプリケーションやクラウドサービスからAPIを介してサービスが提供する機能を利用する事が可能となっている。これにより、複数のクラウドサービスが公開する複数のAPIを組み合わせ、あたかも一つのWebサービスのように構成するマッシュアップという機能が広がりつつある。サービスの提供者からすると、クラウドサービス間の連携の仕組みは容易に実装できるものが好ましい。
その一方で、複数のクラウドサービスを連携するマッシュアップ機能の利用機会の増加によって、ユーザが望んだ以上の情報が複数のクラウドサービス間で交換され、ユーザデータや個人情報が漏えいするリスクが増加する。本来、各クラウドサービスにて必要以上にユーザデータ、個人情報等を取得することは望ましくない。さらには、ユーザが連携を望まないクラウドサービスに対してユーザデータ、個人情報が提供される恐れが高まる。
このような状況において、OAuth 2.0と呼ばれる、認可の連携を実現させるための標準プロトコルが策定されている。OAuth 2.0の詳細については、以降で説明する。特許文献1にはOAuth 2.0を利用した技術が開示されている。
特開2014−067379号公報
しかしながら、現状のOAuth 2.0における認可トークンの有効期間が経過した後にユーザの認可操作なしにリフレッシュする構成には、セキュリティの面で課題がある。例えば、クライアントID、シークレットおよびリフレッシュトークンが漏えいした場合、悪意のあるクライアントによって、認可操作なしに認可トークンが取得され、ユーザのリソースが取得されてしまう。また、クライアントのクライアントID、シークレットおよびリフレッシュトークンの漏えいに対応するために、クライアント内で管理しているクライアントIDや、シークレットを変更することは、クライアントの実装や、運用に大きな影響を与えることになる。
本発明は、クライアントIDや、シークレットを変更することなしに、漏えいしたリフレッシュトークンを無効にすることで、より安全性を高めた権限委譲システムを提供することを目的とする。
上記課題を解決するために、本発明は、サービスを提供するリソースサーバと、前記リソースサーバが有するユーザのデータへのアクセスを認可情報に基づいてクライアント装置に認めるための権限委譲を行う認可サーバとを含む権限委譲システムであって、前記権限委譲を求める権限委譲要求を受信する受信手段と、前記権限委譲要求に基づいて、更新認可情報を検索する検索手段と、前記検索手段により検索された前記更新認可情報が有効であるか否かを判断する判断手段と、前記判断手段において有効と判断された場合、検索された前記更新認可情報を無効化する無効化手段とを備えることを特徴とする。
本発明によれば、クライアントIDや、シークレットを変更することなしに、漏えいしたリフレッシュトークンを無効にすることで、より安全性を高めた権限委譲システムを提供することが可能となる。
システム構成図である。 各装置のハードウェア構成図である。 各装置のソフトウェアモジュール構成図である。 OAuth 2.0を利用した認可のシーケンス図である。 ログイン画面の一例を示す図である。 OAuth 2.0を利用したリフレッシュのシーケンス図である。 認可確認処理を説明するフローチャートである。 認可確認処理を説明するフローチャートである。 認可確認画面の一例を示す図である。 第2実施形態における認可確認処理を説明するフローチャートである。 第2実施形態における認可確認処理を説明するフローチャートである。 第2実施形態における認可解除および拒否解除画面の一例を示す図である。 第2実施形態における認可確認画面の一例を示す図である。
まず、OAuth 2.0について説明する。OAuth 2.0によれば、あるサービスAが管理するユーザのデータを保持するAPIに対して、そのユーザから認められたサービスBがアクセスすることができる。このときサービスAは、サービスBからアクセスされる範囲を明らかにした上で、サービスBによるAPIへのアクセスに対してユーザの明示的な認可を得ることになっている。ユーザが明示的に認可を行うことを認可操作と称する。
ユーザが認可操作を行うと、サービスBはサービスAからアクセスを認められたことを証明するトークン(以下、認可トークンと称する)を受け取り、以降のサービスAのAPIへのアクセスはその認可トークン(認可情報)を用いて実現できる。このユーザの認可操作によってユーザのリソースに対するアクセスをサービスBに認める行為を権限委譲と称する。
ここで認可トークンを用いるとサービスBは、ユーザの認証情報なしに、認可を行ったユーザの権限でサービスAのAPIにアクセスできる。そのため、ユーザから認可を受け認可トークンを取得したサービスBは、その認可トークンを厳重かつ適正に管理する責務を負う。また、この認可トークンは有効期間が設定されており、その有効期間内であれば、APIを利用することが可能である。
OAuth 2.0では、サービスBの成り済ましを防ぐために、サービスBを認証する必要がある。このサービスBを認証するために、サービスAは予めサービスBの認証情報、より具体的にはクライアントIDおよびシークレットを発行、管理し、さらにはサービスBにそれら認証情報を設定しておく必要がある。以降、サービスAからみたサービスBのことをクライアントと称する。
また、OAuth 2.0では、ユーザの認可操作、認可トークン発行、およびクライアントの認証を行う認可サーバと、ユーザのデータをリソースとして管理し、WebサービスとしてAPIを公開するリソースサーバを分けて構成する事が可能である。その場合、クライアントはユーザからの権限委譲を受け、認可サーバから認可トークンを取得し、その認可トークンを用いてリソースサーバのAPIを利用する。そして、リソースサーバは、取得した認可トークンを認可サーバに検証依頼し、結果、アクセスの許可を得られた場合にのみリソースへのアクセスを許可し、クライアントにデータを応答するよう構成される。認可サーバでの検証としては、たとえば、上述の認可トークンが有効期間内であるかを検証する。
上述の通り、OAuth 2.0では、ユーザの認可操作を元に、認可トークンが発行され、その認可トークンを用いることにより、認可トークンの有効期間内であれば、他のサービスのAPIを利用することが可能となる。つまり、認可トークンの有効期間が経過し、無効となった場合は、再度、認可トークンを発行しなければAPIを利用することができない。しかしながら、認可トークンを再発行するために、毎回ユーザに認可操作を要求することは煩雑であり、利便性に欠ける。
そこで、OAuth 2.0では、認可トークンをユーザの認可操作なしで再発行する、つまりリフレッシュするためのプロトコルが策定されている。リフレッシュでは、認可トークンをリフレッシュするためリフレッシュトークン(更新認可情報)を用いる。このリフレッシュトークンは通常、認可トークンと比べて長期間有効である。クライアントは上述のクライアントID、シークレット、リフレッシュトークンを認可サーバに送信することでユーザの認可操作なしで新しい有効期間の認可トークンを取得することができる。
OAuth 2.0では、リフレッシュトークンの発行、管理について二つの方式が定義されており選択可能となっている。第一の方式は、認可操作の結果取得される認可コードを利用して認可トークンを取得する際にあわせて取得されるリフレッシュトークンが固定の方式である。その後、後述するリフレッシュフローが何度実行されても、リフレッシュトークンが変更されることがない。つまり、リフレッシュ対象が認可トークンのみの方式である。第二の方式は、リフレッシュトークンが動的の方式である。リフレッシュフローが実行されるたびに、新しいリフレッシュトークンが発行され、古いリフレッシュトークンが無効になる。つまり、認可トークンだけでなくリフレッシュトークンも更新される方式である。リプレイ攻撃を考慮すると、リフレッシュトークンもリフレッシュする第二の方式のほうがよりセキュアだと考えられる。
本願発明の各実施形態における権限委譲システムでは、リフレッシュトークンの発行、管理の方式として第二の方式に対してより有用であるため、第二の方式で説明する。しかしながら第二の方式に制限するものではなく、第一の方式においても、実施することは可能である。
初めに、本願発明の各実施例にて用いられる用語の定義について説明する。
サービスとは、サーバ上で起動するソフトウェアがクライアントからの要求に従い実行されることでそのクライアントに対して提供される機能のことを指す。なお、そのソフトウェアであるWebアプリケーションのこともサービスと呼ぶ場合もある。本実施の形態においては、クラウドサービスとして連携サーバが提供するサービスと、リソースサーバが提供するサービスの2つのサービスがあり、ユーザは、端末を介して連携サーバが提供するサービスを利用している想定で説明している。また、リソースサーバはWebサービスとしてAPIを公開しており、連携サーバはこのAPIを利用する事でユーザに対してマッシュアップ機能を提供している想定にて説明する。つまり、リソースサーバから見た場合、連携サーバはクライアントに相当する。
無論、これは本実施の形態を説明する上での想定であり、連携サーバ、リソースサーバ、および端末はおのおの単数で構成される事を限定しているわけではない。例えば、複数台から構成されたサーバ群がサービスを提供していても良い。よって、本願発明でサーバシステムと称した場合、1台または複数台から構成されるサーバを指すこととする。
なお、連携サーバが、リソースサーバのAPIを利用するためには、後述するOAuth 2.0のAuthorization Code Grantによるユーザの認可操作を伴った権限委譲が必要となる。言い換えると、ユーザから権限委譲を受けた連携サーバは、リソースサーバのAPIを利用する事ができるようになる。
(第1実施形態)
本実施の形態に係る権限委譲システムは、図1に示すような構成のネットワーク上に実現される。
WAN100は、Wide Area Networkであり、本発明ではWorld Wide Web(WWW)システムが構築されている。LAN101は各構成要素を接続するLocal Area Networkである。
認可サーバ102はOAuth 2.0を実現するための認可サーバであり、認可サーバモジュールが設置されている。リソースサーバ103はリソースサーバであり、Webサービスとして公開されるAPIを備えるリソースサーバモジュールが設置されている。連携サーバ104は連携サーバであり、連携サーバモジュールが設置されている。連携サーバモジュールは、リソースサーバ103が備えるリソースサーバモジュールが公開するAPIを利用する事で、自身が提供するサービスと合わせてマッシュアップ機能をユーザに提供する。
端末105は端末であり、Webブラウザ106が設置されている。例えば、PCやスマートフォンと呼ばれる携帯端末等である。ユーザはWebブラウザ106を用いて連携サーバ104、認可サーバ102と通信する。また認可サーバ102、リソースサーバ103はLAN101を介して接続されている。また、認可サーバ102、リソースサーバ103、連携サーバ104、および端末105は、それぞれWAN100を介して通信可能に接続されている。また認可サーバ102は、不図示のデータベースサーバとLAN101を介して接続しており、認可サーバモジュールが利用するデータを格納するよう構成してもよい。さらには、リソースサーバ103、認可サーバ102も同一のサーバ上に構成されていてもよい。また、連携サーバ104を独立したサーバではなく、アプリケーションとして構成することも考えられる。例えば、リソースサーバ103や認可サーバ102がPaaS(Platform as a Service)として構成され、連携サーバ104をそのプラットフォーム上で動作するアプリケーションサービスとして構成する。
本実施形態に係る権限委譲システムは、図2に示すような構成のサーバおよび端末から成るシステム上に実現される。
図2は、認可サーバ102、リソースサーバ103、連携サーバ104、および端末105のハードウェア構成を示す。なお、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当する。本実施形態の各サーバおよび端末には一般的な情報処理装置のハードウェア構成やIaaS(Infrastructure as a Service)として提供される除法処理装置の仮想的なハードウェア構成を適用できる。
CPU201は、ROM203のプログラム用ROMに記憶或いはハードディスク(HD)等の外部メモリ211からRAM202にロードされたOSやアプリケーション等のプログラムを実行し、システムバス204に接続される各ブロックを制御する。ここでOSとはコンピュータ上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをOSと呼ぶ。後述する各シーケンスの処理はこのプログラムの実行により実現できる。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。キーボードコントローラ(KBC)205は、キーボード209や不図示のポインティングデバイスからのキー入力を制御する。CRTコントローラ(CRTC)206は、CRTディスプレイ210の表示を制御する。ディスクコントローラ(DKC)207は各種データを記憶するハードディスク(HD)等の外部メモリ211におけるデータアクセスを制御する。ネットワークコントローラ(NC)208はWAN100、LAN101を介して接続された他の機器との通信制御処理を実行する。
IaaSとして提供される仮想的な情報処理想定の場合においては、KBC205、CRTC206等を備えず、NC208を介して接続される端末に備えるキーボード209や、CRTディスプレイ210から操作されるよう構成される。
なお、後述の全ての説明においては、特に断りのない限りサーバや端末における実行のハード上の主体はCPU201であり、ソフトウェア上の主体は外部メモリ211にインストールされたアプリケーションプログラムである。
図3は本実施の形態に係る、認可サーバ102、リソースサーバ103、連携サーバ104それぞれのモジュール構成を示す図であり、各々がモジュールを実行することでサービスを提供する。なお認可サーバ102、リソースサーバ103、連携サーバ104は図2のものと同一である。
認可サーバ102は認可サーバモジュール301、HTTPサーバモジュール302を持つ。HTTPサーバモジュール302はWAN100を介して接続する端末105に設置されたWebブラウザ106とのHTTP通信を行うためのモジュールである。また、SSL/TLSによる通信が可能に構成されており、不図示の証明書ストアを持つ。また、本実施例では、後述する認可要求を受け付けた場合に、要求元に対してユーザID、パスワードによるユーザ認証を要求するよう構成している。
次に、認可サーバモジュール301はHTTPサーバモジュール302上で、もしくは、連携して動作するWebアプリケーションであり、HTTPサーバモジュール302を介してWebブラウザ106からの要求を受け付け、処理し、応答する。その際、本実施例では、HTTPサーバモジュール302にて、ユーザ認証を受け付け、要求元の認証に成功した場合、認証したユーザ情報を紐づけた、認証トークンを生成し、認可サーバモジュール301に通知するよう構成されている。
ここで、認証トークンとは、ユーザを認証し、ログインしている事を示す、もしくは認証されているかを検証するためのトークンであり、この認証トークンを利用する事でユーザを識別する事が可能となる。後述の認可トークンは、認証されたユーザが、さらに、認可操作をおこなった対象のクライアントが、ユーザの権限をもって、ユーザに成り代わってアクセスを許可した事を示すためのトークンであり、両者は異なる。特に顕著なのは、認証トークンの場合はユーザの確認を目的としているが、認可トークンは権限の確認を目的としている点である。
また、認可トークンは、認可コードを用いて取得し、クライアントがAPIを利用するための権限を持つことを示すトークンである。さらには、リフレッシュトークンは、同じく認可コードを用いて取得し、認可コードを再発行することが可能であることを示すトークンである。HTTPサーバモジュール302、および認可サーバモジュール301における処理の詳細は後述する。
認可サーバモジュール301はLAN101を介してリソースサーバモジュール303からの認可トークン検証処理を受け付け、処理し、応答するよう構成されている。この認可トークン検証処理は、RPC(Remote Procedure Call)として構成する事も可能であるし、HTTPサーバモジュール302を介してLAN101内で通信可能なWebサービスのAPIとして構成する事も可能である。
リソースサーバ103はリソースサーバモジュール303を持つ。リソースサーバモジュールは不図示のHTTPサーバモジュール上で動作するよう構成する事も可能である。リソースサーバモジュール303はWebサービスとして公開するAPIを備えており、後述する連携サーバ104からのリソース要求を受け付け、処理し、応答する。また、リソースサーバモジュール303は認可サーバモジュール301に対してLAN101を介して後述の認可トークン検証処理を要求する。
連携サーバ104は連携サーバモジュール304を持つ。連携サーバモジュール304は不図示のHTTPサーバモジュール上で動作するよう構成する事も可能である。連携サーバモジュール304はWebアプリケーションであり、Webブラウザ106からの要求を受け付け、処理し、応答する。また、連携サーバモジュール304は、リソースサーバモジュール303が公開するWebサービスのAPIを呼び出すHTTPクライアントとしても構成されている。
図4、図5および各表を用いて、連携サーバモジュール304が、リソースサーバモジュール303が公開するAPIを利用するまでの、OAuth 2.0のAuthorization Code Grantを利用した本実施形態のシーケンスを説明する。
なお、図中“Ref”は参照を示しており、別図で説明する。また、“Alt”は分岐を示しており、事前のシーケンスの結果による分岐処理を示す。
まず、表1に認可サーバモジュールのユーザテーブルのデータ例、表2に認可サーバモジュールのクライアントテーブルのデータ例を示す。
Figure 2017027459
Figure 2017027459
本実施形態のシーケンスで説明するユーザは、ユーザID「user@xx.com」および、そのパスワードを利用するとして説明する。
また、本シーケンスで説明する連携サーバモジュール304は、クライアントID「c001@xx.com」及びその各種データであるシークレット、リダイレクトURIを保持している。このリダイレクトURIは、連携サーバモジュール304が、認可応答を受け付けるためのURIである。これらデータは、あらかじめ認可サーバモジュール301に登録されている必要があるが、登録手段については不図示の画面を用いた方法や、認可サーバモジュール301が公開するAPIによって実施する手段が考えられる。
S401にて、ユーザはWebブラウザ106に表示されている不図示の連携開始操作を実行する。S402にて、Webブラウザ106から連携サーバモジュール304に連携開始が通知される。連携開始を受けた連携サーバモジュール304は、S403ないしS410にて、Webブラウザ106、HTTPサーバモジュール302を介して認可サーバモジュール301に対して認可要求(権限委譲要求)を行う。
ここで、S403の認可要求から、S421の認可トークン、リフレッシュトークン応答までの認可トークンの発行処理はOAuth 2.0に定義されているAuthorization Code Grantフローに従って実施される。
認可要求には、少なくとも、前述の連携サーバモジュール304が保持しているクライアントID「c001@xx.com」およびリダイレクトURI「https://xx/res」を含む。さらに、連携サーバモジュール304がユーザから権限委譲されるリソースの範囲を示すスコープ「profile」も含む。なお、リダイレクトURIは前述したとおり、認可サーバ102にて発行された認可コードを受け付けるクライアントのURLである。
S404にて、HTTPサーバモジュール302は、Webブラウザ106から認可要求を受け付ける。
S405にて、HTTPサーバモジュール302は、Webブラウザ106からの認可要求に、HTTP Cookieとして有効な認証トークンが含まれているか検証する。
含まれている場合、HTTPサーバモジュール302は、認証トークンを認可サーバモジュール301に通知し、S410に移行する。
含まれていない場合は、以下の処理を実行する。S406にて、HTTPサーバモジュール302は、ユーザ認証をするためにログイン画面をWebブラウザ106に応答する。
ここで、図5はHTTPサーバモジュール302が応答するログイン画面例である。
本実施例ではユーザはユーザIDおよびパスワードを入力し、それらの組が認可サーバモジュール301のユーザテーブルに登録されている情報の組と一致する場合に認証するよう構成されている。なおユーザを認証する手段として他の手段、例えば、X.509の証明書や、パスワードを複数回入力する多段階認証等、別の手段を構成する事も可能であり、本手段に限定するものではない。
図5のログイン画面500は、ユーザIDを入力するユーザID入力欄501、パスワードを入力するパスワード入力欄502、およびログイン操作を実行するためのログインボタン503から成る。 S407にて、ユーザはWebブラウザ106に表示されたログイン画面500に必要な情報を入力し、ログインボタン503を押下する。
S408にて、Webブラウザ106は、入力された情報をHTTPサーバモジュール302に送信する。
S409にて、HTTPサーバモジュール302はユーザID、パスワードを取得し、ユーザテーブルのユーザID、パスワードの情報の組と比較し一致するかを検証する事でユーザを認証する。
本実施形態では、ユーザID「user@xx.com」、パスワード「user」がログイン画面500に入力され、HTTPサーバモジュール302は、それらデータを検証し、認証する。なお、HTTPサーバモジュール302は、ユーザ認証に失敗、つまり、ユーザテーブルに情報が登録されていない場合は、不図示の認証エラー画面をWebブラウザ106に応答する。
ユーザ認証に成功した場合、HTTPサーバモジュール302は認証トークンを生成する。この認証トークンはHTTPサーバモジュール302の不揮発メモリ上に、ユーザIDに対応するUUIDと対応付けて保存される。UUIDとは、Universal Unique Identifierであり、重複しないユニークなIDである。本実施形態では、ユーザID「user@xx.com」に対応するUUID「10000001」に対応付けて保存される。
S410にて、HTTPサーバモジュール302は、認可サーバモジュール301に対し、認証トークンを含む認可要求を行う。なお、この認証トークンはHTTP Cookieとして設定され、HTTPサーバモジュール302からWebブラウザ106への応答に設定され通知される。
以後、Webブラウザ106から認可サーバモジュール301へのアクセスは、HTTPサーバモジュール302による認証トークンの検証、認証処理、および認証トークンの認可サーバモジュール301への通知が実行されるとして説明を省略する。
S411にて、認可サーバモジュール301は、受信した認可要求のうち、クライアントIDとリダイレクトURLの組が正しいか検証する。より具体的には、クライアントテーブルに登録されているクライアントIDとリダイレクトURLの組が一致するか検証する。不一致の場合、認可サーバモジュール301は不図示のエラー画面を、HTTPサーバモジュール302を介してWebブラウザ106に応答する。
一致した場合、認可サーバモジュール301はS412で認可確認処理を実施する。この認可確認処理については、図7を用いて後述する。
次に、認可サーバモジュール301において、認可確認処理の結果が[許可応答]であった場合のシーケンスについて説明する。
S413にて認可サーバモジュール301は、認可コードを発行する。より具体的には、トークンID「cd_000001」を発行する。そして、認可要求に含まれるクライアントID「c001@xx.com」とリダイレクトURI「https://xx/res」、スコープ「profile」、および、認証し許可を得たユーザのユーザIDに対応するUUID「10000001」を認可サーバモジュールのトークンテーブルに登録する。その際、トークン種別を認可コードとし、有効期限として当該認可コードが有効である期限の日時を登録する。なお、表3のトークンテーブルの例では、トークンが有効か否かを示す状態を「有効」として登録しているが、有効期限を検証することで有効性を毎度確認する構成としてもよい。
表3に、認可サーバモジュールのトークンテーブルの例を示す。表3では、トークンID「rt_000000」のリフレッシュトークンが発行済みの状態で示しているが、このリフレッシュトークンの利用については、認可確認処理にて説明する。
Figure 2017027459
S414、S415にて認可サーバモジュール301は、Webブラウザ106を介し、連携サーバモジュール304に、発行した認可コードのトークンID「cd_000001」を付与して認可を応答する。より具体的には、認可要求時に取得したリダイレクトURI「https://xx/res」に対してWebブラウザ106をリダイレクトするよう、Webブラウザ106にリダイレクト応答する。
S416にて連携サーバモジュール304は、認可サーバモジュール301に対して認可トークンを要求する。この認可トークン要求には、少なくとも、取得した認可コード「cd_000001」、クライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」、および認可要求時に送信したリダイレクトURI「https://xx/res」が含まれる。
S417にて認可サーバモジュール301は取得したクライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」の組をもってクライアントを認証する。より具体的には、クライアントテーブルの組と一致するかを検証する事で認証する。ここでクライアント認証に失敗した場合は連携サーバモジュール304に認証エラーを応答する。
クライアント認証に成功した場合、S418にて認可サーバモジュール301は、取得した認可コード「cd_000001」を検証する。認可コードの検証としては、取得した認可コードがトークンテーブルに登録されているか、登録されている場合は、有効かを検証する。さらには、認可トークン要求にて取得したクライアントID「c001@xx.com」とリダイレクトURI「https://xx/res」がトークンテーブルのクライアントID、リダイレクトURIと一致するかを検証する。認可コード検証の結果が無効であった場合、認可サーバモジュール301は連携サーバモジュール304にトークン不正エラーを応答する。
そして、認可コード検証の結果が有効であった場合、認可サーバモジュール301はS419にて認可トークンを発行する。より具体的には、トークンID「at_000001」を発行し、認可コードに紐づくユーザのUUID「10000001」、スコープ「profile」、および認証したクライアントID「c001@xx.com」をトークンテーブルに登録する。その際、トークン種別は認可トークンとし、有効期限として当該認可トークンが有効である期限の日時を登録する。
さらに、S420にて、認可サーバモジュール301は、リフレッシュトークンを発行する。より具体的には、トークンID「rt_000001」を発行する。そして、認可トークン「at_000001」に紐づくユーザのUUID「10000001」、スコープ「profile」、および認証したクライアントID「c001@xx.com」をトークンテーブルに登録する。
その際、トークン種別はリフレッシュトークンとし、有効期限として当該リフレッシュトークンが有効である期限の日時を登録する。また、OAuth 2.0では、認可コードは一度しか利用できないように制御することが推奨されているため、トークンID「cd_000001」の認可コードの状態を「無効」にする。なお、無効にする処理として、状態を利用するのではなく、有効期限を過去の日時に更新することで無効扱いとすることや、テーブルのレコードそのものを削除することで無効にするという方法でもよい。
表4に認可サーバモジュールのトークンテーブルの例を示す。ここで、トークンID「rt_000000」のリフレッシュトークンの状態が「無効」になっているが、この更新処理については後述する。
Figure 2017027459
そして、S421にて、認可サーバモジュール301は、発行した認可トークンのトークンID「at_000001」、リフレッシュトークンのトークンID「rt_000001」を連携サーバモジュール304に応答する。
認可トークンを取得した連携サーバモジュール304は、S422にてリソースサーバモジュール303が公開するAPIに対してリソース要求を行う。
次に、認可サーバモジュール301において、認可確認処理の結果が[拒否応答]であった場合のシーケンスについて説明する。
S423、S424にて認可サーバモジュール301は、Webブラウザ106を介し、連携サーバモジュール304に拒否応答を応答する。より具体的には、認可要求時に取得したリダイレクトURI「https://xx/res」に対してWebブラウザ106をリダイレクトするようWebブラウザ106にリダイレクト応答する。
以上が、連携サーバモジュール304が、リソースサーバモジュール303が公開するAPIを利用するまでの、OAuth 2.0のAuthorization Code Grantを利用した本実施形態のシーケンスである。
次に、図6を用いて本実施形態での、連携サーバモジュール304が認可トークンをリフレッシュし、リソースサーバモジュール303が公開するAPIを利用するためのOAuth 2.0のリフレッシュシーケンスを説明する。
なお、図中“Alt”は分岐を示しており、事前のシーケンスの結果による分岐処理を示す。また、“Opt”はオプションであり、処理を省くことも可能である。
本シーケンスは、S601のユーザ操作から開始されるケースと、連携サーバモジュール304が自身の処理中にて発生するケースとがある。そのため、S601およびS602はオプションとして記載している。
S601にて、ユーザは、Webブラウザ106に表示されている不図示の再実行操作を行う。
S602にて、Webブラウザ106から連携サーバモジュール304に再実行が通知される。再実行を受け付けた連携サーバモジュール304は、S603にて、リソースサーバモジュール303が公開するAPIに対して、すでに取得済みの認可トークン「at_000001」を用いてリソース要求を行う。ここで、認可トークン「at_000001」は有効期限に達しており、無効状態になっているとして説明する。
S605にて、リソースサーバモジュール303は、認可サーバモジュール301に対して認可トークン「at_000001」が有効であるか否かを問い合わせるための認可トークン検証要求を行う。認可サーバモジュール301は、トークンテーブルを参照し、認可トークン「at_000001」が有効か否かを確認し、結果を応答する。前述の通り無効であるため、認可サーバモジュール301は、リソースサーバモジュール303に対して、認可トークン無効応答を送信する。
そして、S606にてリソースサーバモジュール303は連携サーバモジュール304に対して認可トークン「at_000001」が無効であるとして認可トークン無効応答を返す。
S607にて、連携サーバモジュール304は認可サーバモジュール301に対して認可トークンリフレッシュ要求を行う。その際、認可トークン、リフレッシュトークン応答にて取得したトークンID「rt_000001」、および、クライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」を送信する。
S608にて認可サーバモジュール301は取得したクライアントID「c001@xx.com」、シークレット「xxxxxxxxxx」の組をもってクライアントを認証する。より具体的には、クライアントテーブルの組と一致するかを検証する事で認証する。
ここでクライアント認証に失敗した場合は連携サーバモジュール304に認証エラーを応答する。
クライアント認証に成功した場合、S609にて、認可サーバモジュール301は、取得したリフレッシュトークン「rt_000001」を検証する。認可コードの検証としては、取得したリフレッシュトークンがトークンテーブルに登録されているか、登録されている場合は、有効かを検証する。さらには、認可トークンリフレッシュ要求にて取得したクライアントID「c001@xx.com」がトークンテーブルのクライアントIDと一致するかを検証する。リフレッシュトークン検証の結果が[無効]であった場合の処理は後述する。
リフレッシュトークン検証の結果が[有効]であった場合、認可サーバモジュール301は、S610にて認可トークンを発行する。より具体的には、トークンID「at_000002」を発行し、リフレッシュトークンに紐づくユーザのUUID「10000001」、スコープ「profile」、および認証したクライアントID「c001@xx.com」をトークンテーブルに登録する。その際、トークン種別は認可トークンとし、有効期限として当該認可トークンが有効である期限の日時を登録する。
さらに認可サーバモジュール301は、S611にてリフレッシュトークンを発行する。より具体的には、トークンID「rt_000002」を発行する。そして、認可トークン「at_000002」に紐づくユーザのUUID「10000001」、スコープ「profile」、および認証したクライアントID「c001@xx.com」をトークンテーブルに登録する。その際、トークン種別はリフレッシュトークンとし、有効期限として当該リフレッシュトークンが有効である期限の日時を登録する。
また、本実施形態におけるOAuth 2.0の方式では、リフレッシュトークンは一度しか利用できないように制御する方式であるため、S612にてトークンID「rt_000001」のリフレッシュトークンの状態を「無効」にする。なお、無効にする処理として、状態を利用するのではなく、有効期限を過去の日時に更新することで無効扱いとすることや、テーブルのレコードそのものを削除することで無効にするという方法でもよい。
表5に、認可サーバモジュールのトークンテーブルの例を示す。
Figure 2017027459
S613にて認可サーバモジュール301は発行した認可トークンのトークンID「at_000002」、リフレッシュトークンのトークンID「rt_000002」を連携サーバモジュール304に応答する。
認可トークンを取得した連携サーバモジュール304は、S614にてリソースサーバモジュール303が公開するAPIに対してリソース要求を行う。
次に、認可サーバモジュール301において、リフレッシュトークン検証の結果が[無効]であった場合のシーケンスを説明する。
ここで、リフレッシュトークン検証の結果が[無効]となるケースについて説明する。まず、検証の対象となるリフレッシュトークンが有効期限に達し、無効になっている通常想定されるケースである。このケースの場合は正常なケースとして、以下のシーケンスを実行するのみでよく、その他処理を必要としない。
もうひとつのケースが本実施形態の特徴である後述する処理において対応されるケースである。それは、クライアントID、シークレット、リフレッシュトークンのトークンIDが漏えいし、第三者によって認可トークンのリフレッシュ要求が行われてしまっているケースである。その場合、連携サーバモジュール304が保持しているリフレッシュトークンは、上述の通り、使用済みであるとして無効になっている。また、第三者が、リソースサーバモジュール303が公開するAPIを不正に利用できる状態が想定される。本ケースの対応については後述する。
S615にて認可サーバモジュール301は連携サーバモジュール304に対してリフレッシュトークンが無効であると応答する。リフレッシュトークンの無効応答を受信した連携サーバモジュール304は、前述のS403の認可要求を実施する。その後の処理は図4を用いて説明したシーケンスと同様出るため説明を省略する。
以上が、連携サーバモジュール304が認可トークンをリフレッシュし、リソースサーバモジュール303が公開するAPIを利用するためのOAuth 2.0のリフレッシュシーケンスである。
続いて、本実施の形態の特徴である、図4を用いて説明した認可確認処理S412について図7および図8を用いて説明する。この認可確認処理S412を用いることで、前述の対応すべきケース、すなわち、第三者が、リソースサーバモジュール303が公開するAPIを不正に利用できる状態の解消を行うことが可能となる。
ここで、OAuth 2.0では、過去に同一のクライアント、同一のユーザ、および同一のスコープにて認可操作したユーザに対して、再度同じ認可操作を求めないよう構成することも可能である。この再度同じ認可操作を求めない処理を認可確認のスキップ処理と称する。
本実施形態では、この認可確認のスキップ処理も含めて説明しているが、この認可確認のスキップ処理はOAuth 2.0においてはオプションの処理であり、必ず、認可操作を求めるよう構成することも可能である。
また、図4にて説明した認可要求において、必ず認可確認画面を応答するよう指定することが可能なように構成することもできる。
なお、この認可確認のスキップ処理を実施する条件が、上記の条件のみだった場合、ユーザは、一度認可操作した条件で、二度と認可操作を実施することができなくなる。これはユーザに対して不利益を生む可能性がある。たとえば、拒否操作で認可の拒否を選択した場合に特別な処理を追加することや、認可操作に追加の情報を提示するような処理を追加したとしても、過去に認可操作にて許可したユーザは追加の処理を実施することができない。
そこで、例えば、同一条件、つまり同一のクライアント、同一のユーザ、同一のスコープにて認可操作したと判断される期間に有効期限を設定し、期限が切れた場合は認可確認のスキップを実施しないよう構成することも考えられる。
さらに、本実施の形態の特徴として、同一条件で過去認可操作をしていたとしても、同一条件で発行されたリフレッシュトークンが有効な状態で残っている場合は認可確認のスキップを実施しない処理を追加している。これは、有効なリフレッシュトークンが残っているにもかかわらず、再度認可要求がきているという状況は通常処理では発生する可能性が低いためである。というのも、通常、有効なリフレッシュトークンが存在している状況であれば、クライアントは認可要求ではなく、リフレッシュトークンを利用して認可トークンをリフレッシュし、取得した新しい認可トークンを用いてリソースにアクセスする。つまり、有効なリフレッシュトークンが残っているにもかかわらず認可要求が来るという状況は、クライアント側にて何かしら、ユーザの認可操作を再度求める必要がある状況であることが考えられる。また、クライアントが保持しているリフレッシュトークンが利用できない状況である事が考えらえる。たとえば、クライアントについて大規模な更新があり、リフレッシュトークンの情報を一度クリアした、といったケースが考えらえる。その場合、クライアントIDは同一でも、ユーザに再度認可操作を求める方が好ましいケースとも考えられる。無論、この認可確認のスキップを実施しない条件の追加処理もオプションの処理であり、実施しないよう構成することも可能である。
S412の認可確認処理が開始されると、認可サーバモジュール301は、S701にて認可要求に含まれていたクライアントID、ユーザIDに対応するUUID、スコープを取得する。ここでクライアントIDは「c001@xx.com」、UUID「10000001」、スコープ「profile」であったとして説明する。
次に、認可サーバモジュール301はS702にて、S701で取得したクライアントID、UUID、スコープの組を用いて、トークンテーブルに同一の組のリフレッシュトークンが有効な状態で存在していないかを検索する。
S703にて、認可確認モジュール301は、S702の処理の結果、有効なリフレッシュトークンが存在しない場合は、S704の処理へ遷移する。また、有効なリフレッシュトークンが存在する場合は、S708の処理へ遷移する。
次に、認可サーバモジュール301はS704にて、認可要求を認可したことのある許可済みリストを取得する。許可済みリストには、少なくともクライアントID、UUID、スコープが含まれている。以下に認可サーバモジュールの許可済みテーブルの例を示す。
Figure 2017027459
S705にて、認可サーバモジュール301は、S701で取得したデータの組が、S704にて取得したテーブルに存在するかを検証する。例示したテーブルでは、クライアントID「c001@xx.com」、UUID「10000001」、スコープ「profile」の組は登録済みであるため、検証の結果として、許可済みとする。また、たとえば、クライアントIDが違う場合や、UUIDが違う場合、さらには、スコープのみ違う場合においては、許可済みではないと判断される。
S706にて、認可サーバモジュール301は、S705の検証結果が許可済みであった場合は、S707へ、許可済みでないと判断された場合は、S708へと処理を分岐する。
S707にて認可サーバモジュール301は、認可確認処理の結果を「許可応答」として処理を終了する。なお、このS704、S705、S706、S707で説明した処理が、前述した認可確認のスキップ処理である。前述したように、OAuth 2.0においてはオプションの処理であり、必ず、後述の認可確認画面応答を実施するよう構成することも可能である。また、図4にて説明した認可要求において、必ず認可確認画面を応答するよう指定することが可能なように構成することもできる。
また、図7においては、有効なリフレッシュトークンがあるか探索してから許可済みリストを検証する例を示したが、先に許可済みリストを検証し、許可済みであった場合に有効なリフレッシュトークンがあるか探索するようにしてもよい。
認可サーバモジュール301において、S705の許可済みリスト検証の結果、条件に該当するデータが存在しなかった場合は、S706にて許可済みでないと判断され、S708へと処理が遷移する。
S708にて認可サーバモジュール301は認可確認画面をWebブラウザ106に応答する。図8は応答される認可確認画面の例である。認可確認画面900は、認可要求に含まれるクライアントIDをキーとしてクライアントテーブルから取得したクライアント名を表示する領域であるアクセス元表示領域901を備える。さらに、認可要求で取得したスコープに対応する説明を表示する領域である委譲権限表示領域902を備える。また、認可確認画面900は、ユーザが上記情報の内容について認可操作を実行する許可ボタン903、および拒否を実行する拒否ボタン904を備える。
S709にて、Webブラウザ106は、取得した認可確認画面900をユーザに提示する。
そして、S710にて、Webブラウザ106は、ユーザが許可ボタン903、もしくは拒否ボタン904を押下した場合は、その認可確認結果を取得し認可サーバモジュール301に通知する。
S711にて、認可サーバモジュール301は、認可確認結果を取得する。
次に、S712、S713にて、S702、S703と同様の処理を行い、不要なリフレッシュトークンを削除する。S702、S703と同様の処理を再び行うのは、Webブラウザ106における認可確認処理を行っている間に、認可サーバモジュールにおいて他の処理が行われる可能性があり、有効なリフレッシュトークンがあるか否か再び検索する必要があるためである。この結果、たとえば、図4で説明したシーケンス中での認可確認処理の結果、トークンID「rt_000000」のリフレッシュトークンの状態が「無効」に更新される。また、図6で説明したシーケンス中のS615ののちに実行された場合は、第三者がリフレッシュしたのちに取得したと想定されるリフレッシュトークンも合わせて無効化される。上述の通り、この処理によって第三者による不正なAPIの実行を防ぐことが可能となる。なお、図を用いての説明では、リフレッシュトークンを無効化することのみ記載しているが、合わせて、同じ条件にて認可トークンも無効化してもよい。
次に、認可サーバモジュール301は、S714にて、S711で取得した認可確認結果が許可であった場合は、S715にて認可確認処理の結果を「許可応答」として処理を終了する。そして、認可確認結果が拒否であった場合は、S716にて認可確認処理の結果を「拒否応答」として処理を終了する。
以上が、本実施の形態の特徴である、認可確認処理である。この認可確認処理を用いることで、不用なリフレッシュトークンが無効化され、前述の対応すべきケース、すなわち、第三者が、リソースサーバモジュール303が公開するAPIを不正に利用できる状態の解消を行うことが可能となる。
(第2実施形態)
図7および図8で説明した認可確認処理では、第三者に情報が漏えいした場合の対処処理について説明した。しかしながら、OAuth 2.0では、クライアント自身がユーザからの許可を不正に取得することで、ユーザのリソースを不正に取得する、というケースが想定される。たとえば、ユーザに対して興味を持たせるような記事を記載し、続きを読むためには認可確認操作を行うよう誘導するような手法が考えられる。このようなケースの場合、ユーザは他のユーザからの注意喚起によってクライアントに対して不用な認可操作を行っていることに気づき、対処を実施することが考えられる。しかしながら、クライアント側も多種多様な手段により、再度ユーザから認可操作を得るための記事掲載等を行うことを繰り返すことで、ユーザのリソースを取得することを試みる。
そこで、これから説明する認可確認処理では、過去、ユーザが明示的に拒否したことがあるクライアントからの認可操作を再度行わないように注意喚起を行う。さらに、一度認可操作を実施してしまったクライアントから再度認可要求が来た際に、認可操作をスキップさせないようにするための処理を実施することで、上述のようなケースが発生することを軽減することを目的とする。
ここで、認可操作をスキップさせないために、すでに認可済みであるかを判断する処理において、同一条件で発行されたリフレッシュトークンが有効な状態で残っているかを確認することで対処している。それは、有効なリフレッシュトークンが残っているにもかかわらず、再度認可要求がきているという状況は通常処理では、発生する可能性が低い状態であるためである。というのも、通常、有効なリフレッシュトークンが存在している状況であれば、クライアントは認可要求ではなく、リフレッシュトークンを利用して認可トークンをリフレッシュし、取得した新しい認可トークンを用いてリソースにアクセスする。
しかしながら、上述の通り、リソースを不正に取得する目的のクライアントであれば、認可操作を促すための記事の記載を不特定多数に提示することが想定される。そのため、同一のユーザに対して、リフレッシュトークンの利用ではなく記事からの処理開始となるであろう。その結果、再度認可要求を実施するよう構成されることが想定されるからである。
以下、図10および図11を用いて上述のようなケースが発生することを軽減することを目的とした場合の認可確認処理S412について説明する。なお、図7、図8、図9と同様の構成および、同じ処理を実施する箇所については同じ番号を付与し説明を省略する。
図10および図11は、第2実施形態における認可サーバモジュール301による認可確認処理S412を説明するフローチャートである。
S701において、図7で説明したとおり、認可サーバモジュール301はクライアントID、ユーザUUID、およびスコープを取得する。
S1001において、認可サーバモジュール301は、過去に認可確認画面にて拒否を実施した、もしくは後述の方法にて、認可操作したことをキャンセル、つまり認可の解除を実施したクライアントのリストである、拒否クライアントリストを取得する。ここで、認可の解除方法としては、たとえば、認可サーバモジュール301にて後述する認可の解除面をWebブラウザ106に提示し、ユーザの操作を持って解除する方法が考えられる。
以下に、認可サーバモジュールの拒否クライアントリストのテーブルを示す。
Figure 2017027459
ここでは、ユーザIDに対応するUUID「10000001」のユーザが、クライアントID「c002@zz.com」に対して拒否操作をしたことを示している。
図12(A)は、前述した認可の解除画面の一例を示す図である。認可の解除画面1200は、認可サーバモジュールの許可済みリストテーブルのクライアントIDをもとにクライアントテーブルから取得したクライアント名1201、スコープ1202、および解除を実行するための認可解除ボタン1203からなる。
次に、認可の解除画面1200へアクセスするための処理を説明する。
ユーザは、Webブラウザ106を用いて、HTTPサーバモジュール302を介し認可サーバモジュール301に対して認可の解除画面へのアクセスを要求する。以降の認証処理については、図4を用いて説明したS404からS409での説明における認可要求を、認可の解除画面へのアクセス要求とした場合と同じであるため説明を省略する。
認可の解除画面へのアクセス要求を受け付けた認可サーバモジュール301は、受信した認証トークンに紐づいたユーザのUUIDをもとに認可サーバモジュールの許可済みリストテーブルから情報を取得する。そして、認可の解除画面1200を生成しWebブラウザ106へ応答する。
Webブラウザ106は、取得した認可の解除画面1200をユーザに提示する。そして、ユーザが認可解除ボタン1203を押下した場合は、認可の解除要求を認可サーバモジュール301に通知する。認可の解除要求は、前述したUUIDに紐づく認証トークンと認可を解除する対象であるクライアントIDを通知する。
S1004にて認可の解除要求を受け付けた認可サーバモジュール301は、S1005にてクライアントID、およびUUIDを取得する。
次に、認可サーバモジュール301は、S1006にて、取得したクライアントID、UUIDの組が許可済みリストテーブルにて一致するデータを削除する。
さらに、認可サーバモジュール301は、S1007にてトークンテーブルにて、クライアントID、およびUUIDの組が一致するデータの状態を無効にすることも可能である。
そして、認可サーバモジュール301は後述のS1008にて、拒否クライアントリストテーブルに受信したクライアントIDおよび、UUIDを登録し、処理を終了する。
なお、認可の解除画面1200について、後述する拒否クライアントの解除画面とは別の画面として例示しているが、この二つの画面について同一の画面として構成することも可能である。
S1002にて、認可サーバモジュール301は、S701で取得したクUUID、クライアントIDの組が拒否クライアントリストに登録されているかを確認する(拒否判断)。登録されていれば、拒否クライアントとしてS1003に、拒否クライアントでなければ、S702に遷移する。
S1003にて認可サーバモジュール301は、注意あり認可確認画面をWebブラウザ106に応答する。
図13は応答される注意あり認可確認画面の一例を示す図である。注意あり認可確認画面1300は、図9の構成要素に追加要素として、過去に同一クライアントからのアクセスを拒否したことを説明する拒否クライアント表示領域1301を備える。なお、注意あり認可確認画面は一例であり、このようにユーザに対して注意喚起するような認可画面をまとめて警告認可画面と称する。
この注意あり認可確認画面1300を提示することで、ユーザが過去に拒否したクライアントに対して、再度認可操作を実施してしまうことを軽減することができる。なお、ここで注意あり認可確認画面1300を応答するのではなく、ユーザが拒否を実施した場合と同様の処理に強制的に遷移するよう構成することも可能である。その場合は、S710にて拒否操作をされた場合の図8におけるS711の処理以降と同様の処理が実施される。なお、その場合は、誤って拒否してしまったクライアントに対して以降、認可操作が不能になってしまうため、認可サーバモジュール301にて拒否クライアントの解除画面を生成し、拒否を解除することもできる。
図12(B)は前述の拒否クライアントの解除画面の一例を示す図である。拒否クライアントの解除画面1204は認可サーバモジュールの拒否クライアントリストテーブルのクライアントIDをもとにクライアントテーブルから取得したクライアント名1205、および解除を実行するための拒否解除ボタン1206からなる。なお、拒否クライアントの解除画面1204へアクセスするための処理は、認可の解除画面1200へのアクセスするための処理において認可の解除画面へのアクセス要求を、拒否クライアントの解除画面へのアクセス要求とした場合と同様のため説明を省略する。
拒否クライアントの解除画面へのアクセス要求を受け付けた認可サーバモジュール301は、受信した認証トークンに紐づいたユーザのUUIDをもとに認可サーバモジュールの拒否クライアントリストテーブルから情報を取得する。そして、拒否クライアントの解除画面1204を生成しWebブラウザ106へ応答する。
Webブラウザ106は、取得した拒否クライアントの解除画面1204をユーザに提示する。そして、ユーザが拒否解除ボタン1206を押下した場合は、拒否の解除要求を認可サーバモジュール301に通知する。拒否の解除要求は、前述したUUIDに紐づく認証トークンと拒否を解除する対象であるクライアントIDを通知する。
拒否の解除要求を受け付けた認可サーバモジュール301は、拒否クライアントリストテーブルにて該当のクライアントID、およびUUIDの組が一致するデータを削除し、処理を終了する。
なお、拒否クライアントの解除画面1204について、前述した認可の解除画面1200とは別の画面として例示しているが、この二つの画面について同一の画面として構成することも可能である。
次に、注意あり認可確認画面1300にてユーザが操作を実施した場合の処理を説明する。なお、注意あり認可確認画面1300にてユーザが許可ボタン903を押下した場合の処理は、図8で説明した場合と同様であるため説明を省略する。注意あり認可確認画面1300にてユーザが拒否ボタン904を押下した場合は、図8のS716の処理ののちに、S1008にて拒否クライアントリストの更新処理を行う。より具体的には認可サーバモジュール301は、拒否クライアントリストテーブルに対して取得したUUID、クライアントIDの組が登録されていなかった場合に、登録処理を行い、処理を終了する。
S1002にて、拒否クライアントでないと判断された場合、認可サーバモジュール301はS702に遷移する。S702の処理以降は、前述した認可確認結果が拒否だった場合のS1008の追加処理を除いて図7および図8と同様のため、説明を省略する。S702の処理の結果、有効なリフレッシュトークンが存在する場合は、認可サーバモジュール301は、認可確認画面をスキップする処理を実施せず、図7および図8で説明したS708の認可確認画面応答へ処理を遷移する。以降の処理は、前述した認可確認結果が拒否だった場合のS1008の追加処理を除いて図7と同様のため、説明を省略する。
以上の処理により、OAuth 2.0において、クライアント自身がユーザからの許可を不正に取得することで、ユーザのリソースを不正に取得する、というケースに対して、ユーザが認可操作を実施してしまうことを軽減することが可能となる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。

Claims (12)

  1. サービスを提供するリソースサーバと、前記リソースサーバが有するユーザのデータへのアクセスを認可情報に基づいてクライアント装置に認めるための権限委譲を行う認可サーバとを含む権限委譲システムであって、
    前記権限委譲を求める権限委譲要求を受信する受信手段と、
    前記権限委譲要求に基づいて、更新認可情報を検索する検索手段と、
    前記検索手段により検索された前記更新認可情報が有効であるか否かを判断する判断手段と、
    前記判断手段において有効と判断された場合、検索された前記更新認可情報を無効化する無効化手段とを備える
    ことを特徴とする権限委譲システム。
  2. 前記権限委譲要求には、少なくとも、ユーザID、UUID、スコープを含む
    ことを特徴とする請求項1に記載の権限委譲システム。
  3. 前記権限委譲を許可する場合に、前記リソースサーバへアクセスするために利用される前記認可情報と、新たな認可情報を新たな権限委譲要求なしに再発行するために利用される前記更新認可情報とを発行する発行手段をさらに備える
    ことを特徴とする請求項1または請求項2に記載の権限委譲システム。
  4. 前記受信手段が前記権限委譲要求を受信した場合に、前記権限委譲を許可するか否かの認可確認画面を応答する画面応答手段と、
    認可確認画面でなされた結果を取得する結果取得手段とをさらに備え、
    前記無効化手段は、結果取得手段において取得された前記結果にかかわらず前記更新認可情報を無効化する
    ことを特徴とする請求項1ないし3のいずれか1項に記載の権限委譲システム。
  5. 前記権限委譲要求に基づいて、過去に権限委譲を行ったことがあるか検証する検証手段をさらに備える
    ことを特徴とする請求項4に記載の権限委譲システム。
  6. 前記検証手段が、過去に権限委譲を行ったことがあると判断した場合、
    前記画面応答手段は、前記認可確認画面の応答を行わない
    ことを特徴とする請求項5に記載の権限委譲システム。
  7. 権限委譲を解除する解除手段をさらに備え、
    前記受信手段は、さらに、前記権限委譲の解除を求める解除要求を受信し、
    前記解除要求を受信した場合、前記画面応答手段は、さらに、解除画面を応答し、
    前記結果取得手段は、さらに、前記解除画面でなされた結果を取得し、
    前記解除手段は、前記結果取得手段が取得した結果が解除であった場合、前記解除要求に基づいて前記権限委譲を解除する
    ことを特徴とする請求項4ないし6のいずれか1項に記載の権限委譲システム。
  8. 前記解除要求には、少なくとも、クライアントIDと、UUIDに対応する認可情報とが含まれ、
    前記解除手段は、前記クライアントIDと前記UUIDが一致するデータを削除もしくは無効にすることで前記権限委譲を解除する
    ことを特徴とする請求項7に記載の権限委譲システム。
  9. 前記権限委譲要求に基づいて、前記ユーザが権限委譲要求を拒否したことがあるクライアントもしくは前記権限委譲を解除したことがあるクライアントである拒否クライアントか否か判断する拒否判断手段をさらに備え、
    前記拒否判断手段において拒否クライアントと判断された場合、前記画面応答手段は、注意つきの認可確認画面を応答する
    ことを特徴とする請求項4ないし8のいずれか1項に記載の権限委譲システム。
  10. サービスを提供するリソースサーバが有するユーザのデータへのアクセスを認可情報に基づいてクライアント装置に認めるための権限委譲を行う認可サーバであって、
    前記権限委譲を求める権限委譲要求を受信する受信手段と、
    前記権限委譲要求に基づいて、更新認可情報を検索する検索手段と、
    前記検索手段により検索された前記更新認可情報が有効であるか否かを判断する判断手段と、
    前記判断手段において有効と判断された場合、検索された前記更新認可情報を無効化する無効化手段とを備える
    ことを特徴とする認可サーバ。
  11. サービスを提供するリソースサーバと、前記リソースサーバが有するユーザのデータへのアクセスを認可情報に基づいてクライアント装置に認めるための権限委譲を行う認可サーバとを含む権限委譲システムの制御方法であって、
    前記権限委譲を求める権限委譲要求を受信する受信工程と、
    前記権限委譲要求に基づいて、更新認可情報を検索する検索工程と、
    前記検索工程において検索された前記更新認可情報が有効であるか否かを判断する判断工程と、
    前記判断工程において有効と判断された場合、検索された前記更新認可情報を無効化する無効化工程とを備える
    ことを特徴とする権限委譲システムの制御方法。
  12. コンピュータを請求項10に記載の認可サーバが備える各手段として機能させるためのプログラム。
JP2015147023A 2015-07-24 2015-07-24 権限委譲システム、認可サーバの制御方法、認可サーバおよびプログラム Active JP6675163B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015147023A JP6675163B2 (ja) 2015-07-24 2015-07-24 権限委譲システム、認可サーバの制御方法、認可サーバおよびプログラム
US15/213,601 US10154036B2 (en) 2015-07-24 2016-07-19 Authorization delegation system, control method, authorization server, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015147023A JP6675163B2 (ja) 2015-07-24 2015-07-24 権限委譲システム、認可サーバの制御方法、認可サーバおよびプログラム

Publications (2)

Publication Number Publication Date
JP2017027459A true JP2017027459A (ja) 2017-02-02
JP6675163B2 JP6675163B2 (ja) 2020-04-01

Family

ID=57837468

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015147023A Active JP6675163B2 (ja) 2015-07-24 2015-07-24 権限委譲システム、認可サーバの制御方法、認可サーバおよびプログラム

Country Status (2)

Country Link
US (1) US10154036B2 (ja)
JP (1) JP6675163B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10425421B2 (en) 2016-06-09 2019-09-24 Canon Kabushiki Kaisha Authorization server, control method, and storage medium

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9923929B2 (en) * 2015-11-20 2018-03-20 Nasdaq, Inc. Systems and methods for in-session refresh of entitlements associated with web applications
US10567381B1 (en) 2015-12-17 2020-02-18 Amazon Technologies, Inc. Refresh token for credential renewal
JP6806543B2 (ja) * 2016-11-25 2021-01-06 キヤノン株式会社 権限検証システムおよびリソースサーバー、認証サーバー、権限検証方法
US10230720B2 (en) * 2016-12-12 2019-03-12 Sap Se Authorization code flow for in-browser applications
US20190068533A1 (en) * 2017-08-28 2019-02-28 Microsoft Technology Licensing, Llc Acquiring attachments from data storage providers for use in electronic communications
JP6643373B2 (ja) * 2018-02-09 2020-02-12 キヤノン株式会社 情報処理システムと、その制御方法とプログラム
EP3554038A1 (en) * 2018-04-11 2019-10-16 Barclays Services Limited System for efficient management of invalid access tokens
US11122035B2 (en) 2018-05-24 2021-09-14 International Business Machines Corporation Secure delegation of a refresh token for long-running operations
US11153305B2 (en) * 2018-06-15 2021-10-19 Canon U.S.A., Inc. Apparatus, system and method for managing authentication with a server
JP7234699B2 (ja) * 2019-03-05 2023-03-08 ブラザー工業株式会社 アプリケーションプログラムおよび情報処理装置
CN111988318B (zh) * 2020-08-21 2022-11-08 上海浦东发展银行股份有限公司 一种授权认证系统及其方法
CN113111316A (zh) * 2021-04-22 2021-07-13 北京天空卫士网络安全技术有限公司 一种应用授权管理的方法、装置和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080194A (ja) * 2005-09-16 2007-03-29 Yokogawa Electric Corp 制御システム及び制御システムのパラメータ設定方法
JP2013182295A (ja) * 2012-02-29 2013-09-12 Mitsubishi Electric Corp 処理実行装置及びコンピュータプログラム及び処理実行方法
JP2013246655A (ja) * 2012-05-25 2013-12-09 Canon Inc 認可サーバー及びクライアント装置、サーバー連携システム、トークン管理方法
JP2014067379A (ja) * 2012-09-27 2014-04-17 Canon Inc デバイス装置、その制御方法、およびそのプログラム
JP2014099030A (ja) * 2012-11-14 2014-05-29 Canon Inc デバイス装置、制御方法、およびそのプログラム。
JP2014102561A (ja) * 2012-11-16 2014-06-05 Canon Inc 通信装置、通信システム、情報処理方法及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832810B2 (en) * 2010-07-09 2014-09-09 At&T Intellectual Property I, L.P. Methods, systems, and products for authenticating users
JP5701844B2 (ja) * 2012-04-27 2015-04-15 株式会社東芝 通信システム、データセンタ装置及びデータセンタ装置で使用される制御方法
JP5751228B2 (ja) * 2012-09-05 2015-07-22 コニカミノルタ株式会社 会議支援システム及び制御装置並びに入力端末
US9130926B2 (en) * 2012-12-27 2015-09-08 Microsoft Technology Licensing, Llc Authorization messaging with integral delegation data
US9374369B2 (en) * 2012-12-28 2016-06-21 Lookout, Inc. Multi-factor authentication and comprehensive login system for client-server networks

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080194A (ja) * 2005-09-16 2007-03-29 Yokogawa Electric Corp 制御システム及び制御システムのパラメータ設定方法
JP2013182295A (ja) * 2012-02-29 2013-09-12 Mitsubishi Electric Corp 処理実行装置及びコンピュータプログラム及び処理実行方法
JP2013246655A (ja) * 2012-05-25 2013-12-09 Canon Inc 認可サーバー及びクライアント装置、サーバー連携システム、トークン管理方法
US20140230020A1 (en) * 2012-05-25 2014-08-14 Canon Kabushiki Kaisha Authorization server and client apparatus, server cooperative system, and token management method
JP2014067379A (ja) * 2012-09-27 2014-04-17 Canon Inc デバイス装置、その制御方法、およびそのプログラム
JP2014099030A (ja) * 2012-11-14 2014-05-29 Canon Inc デバイス装置、制御方法、およびそのプログラム。
JP2014102561A (ja) * 2012-11-16 2014-06-05 Canon Inc 通信装置、通信システム、情報処理方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10425421B2 (en) 2016-06-09 2019-09-24 Canon Kabushiki Kaisha Authorization server, control method, and storage medium

Also Published As

Publication number Publication date
JP6675163B2 (ja) 2020-04-01
US20170026376A1 (en) 2017-01-26
US10154036B2 (en) 2018-12-11

Similar Documents

Publication Publication Date Title
JP6675163B2 (ja) 権限委譲システム、認可サーバの制御方法、認可サーバおよびプログラム
US11171783B2 (en) System and method for decentralized identity management, authentication and authorization of applications
US10771459B2 (en) Terminal apparatus, server apparatus, blockchain and method for FIDO universal authentication using the same
CN110138718B (zh) 信息处理系统及其控制方法
US20230155834A1 (en) Shared registration system
US9571494B2 (en) Authorization server and client apparatus, server cooperative system, and token management method
US9215232B2 (en) Certificate renewal
US9130758B2 (en) Renewal of expired certificates
US10412075B2 (en) Authorization server, non-transitory computer-readable medium, and authority delegating system
CN112597472B (zh) 单点登录方法、装置及存储介质
JP2018163616A (ja) 認証認可サーバー、リソースサーバー、認証認可システム、認証方法及びプログラム
US20100077208A1 (en) Certificate based authentication for online services
JP5723300B2 (ja) サーバシステム、サービス提供サーバおよび制御方法
EP3226506A1 (en) Authorization processing method, device and system
US11444954B2 (en) Authentication/authorization server, client, service providing system, access management method, and medium
JP2019046059A (ja) 権限委譲システム、制御方法、およびプログラム
US10425421B2 (en) Authorization server, control method, and storage medium
JP2018092446A (ja) 認証認可システム及び情報処理装置と認証認可方法とプログラム
JP2020035079A (ja) システム、及びデータ処理方法
CN106330836B (zh) 一种服务端对客户端的访问控制方法
JP2016085638A (ja) サーバー装置、端末装置、システム、情報処理方法及びプログラム
JP2019134333A (ja) 情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム
JP2020053100A (ja) 情報処理システムと、その制御方法とプログラム
CN112970017A (zh) 设备到云存储的安全链接
JP2018037025A (ja) プログラム、認証システム及び認証連携システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200127

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: 20200210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200310

R151 Written notification of patent or utility model registration

Ref document number: 6675163

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151