JP2019046059A - 権限委譲システム、制御方法、およびプログラム - Google Patents
権限委譲システム、制御方法、およびプログラム Download PDFInfo
- Publication number
- JP2019046059A JP2019046059A JP2017167284A JP2017167284A JP2019046059A JP 2019046059 A JP2019046059 A JP 2019046059A JP 2017167284 A JP2017167284 A JP 2017167284A JP 2017167284 A JP2017167284 A JP 2017167284A JP 2019046059 A JP2019046059 A JP 2019046059A
- Authority
- JP
- Japan
- Prior art keywords
- client
- authorization
- authorization code
- user
- server
- 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/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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0815—Network architectures or network communication protocols for network security for authentication of entities providing single-sign-on or federations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
- G06F21/608—Secure printing
-
- 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/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- 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
- H04L63/0807—Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
-
- 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
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- 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
- H04L63/0876—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
【課題】Webサービスへのアクセス権限を検証する権限委譲システムを提供する。
【解決手段】送信手段によって送信される認可コード要求は、認可コード要求と認可コード応答とを関連付けるためのパラメーターの値としてログインコンテキストが設定されたパラメーターと署名情報とを含む。認可サーバーにおいて、署名情報が検証された後に、認可コード要求に対応する認可コード応答をクライアントに送信する。クライアントは、受信した認可コード応答に含まれるパラメーターと、送信手段によって送信された認可コード応答が含むパラメーターとを用いて、認可コード応答が認可コード要求に対応していることを検証する。
【選択図】図10
【解決手段】送信手段によって送信される認可コード要求は、認可コード要求と認可コード応答とを関連付けるためのパラメーターの値としてログインコンテキストが設定されたパラメーターと署名情報とを含む。認可サーバーにおいて、署名情報が検証された後に、認可コード要求に対応する認可コード応答をクライアントに送信する。クライアントは、受信した認可コード応答に含まれるパラメーターと、送信手段によって送信された認可コード応答が含むパラメーターとを用いて、認可コード応答が認可コード要求に対応していることを検証する。
【選択図】図10
Description
本発明は、Webサービスへのアクセス権限を検証する権限委譲システムに関する。
個々のWebサーバーはWebサービスを提供するためにAPIを公開しており、公開されているAPIを介してWebサービス同士が連携する形態がある。その際セキュリティの観点から、Webサービスが管理するユーザーの認証情報を受け渡すことなく、他のWebサービスによってアクセスされることを認可する手段が必要となる。
その手段として、Webサービス同士の連携を実現させるための標準プロトコル(OAuth 2.0)の採用が進んでいる。OAuth 2.0は、ユーザーの認証情報をそのユーザーの同意に基づいてWebサービス間で安全に受け渡す(すなわち委譲する)ための仕組みであり、詳細は後述する。
OAuth 2.0によれば、ユーザーが認可操作を行うとWebサービスBは認可コードを受信する。認可コードとは、WebサービスAへのアクセスがユーザーによって認められたことを証明するためのコードである。受信した認可コードと、WebサービスBであることを証明するための情報を用いて、WebサービスBはWebサービスAに対して認可トークンの発行要求を送信する。認可トークンとは、WebサービスAが公開するAPIにWebサービスBがアクセスすることを認可するためのトークンである。WebサービスBが認可トークンを受信することで、WebサービスBがWebサービスAのAPIにアクセスすることが認可される。WebサービスBである事を認証するための情報は、WebサービスBを一意に識別するためのIDおよび、秘匿情報であるシークレット、デジタル証明書によるデジタル署名が挙げられる。
ユーザーの認可操作によりWebサービスBがWebサービスAのAPIにアクセスすることを認可することを権限委譲と称する。なお、OAuth 2.0では、ユーザーの認可操作により認可コードを発行し、認可コードから認可トークンを発行するサーバーを認可サーバーと称する。また、APIを公開するサーバーをリソースサーバー、公開されたAPIにアクセスする主体をクライアントと称する。上記の例でいえば、WebサービスAを提供するサーバーが認可サーバー兼リソースサーバーであり、WebサービスBを提供するサーバーがクライアントである。
図1を用いてOAuth 2.0の処理フローであるAuthorization Code Grantを説明する。まず、OAuth 2.0を実行するための事前操作として、認可サーバーにクライアントをOAuth 2.0のクライアントとして登録するための登録要求を行う(S0.0)。具体的には、クライアントの登録要求は認可サーバーの登録エンドポイント(図中ではエンドポイントを「EP」と記載)に対して送信され、クライアントの起動時か、後述のS1.1の認可フローの開始時にクライアントが未登録であった場合に開始される。登録要求の方法としては、クライアントが能動的に認可サーバーと通信する方法や、ユーザーがWebブラウザーを介して認可サーバーにアクセスしてクライアントを登録する方法が挙げられる。
S0.0の登録要求には、後述の認可確認画面に表示するためのクライアント名、説明、アイコン画像、および必須パラメーターであるリダイレクトURIが含まれる。リダイレクトURIとは、認可サーバーからの認可コード応答をクライアントが受信するために、認可サーバーが認可コード応答を送信する応答先を指定する応答先情報(アドレス)である。認可コード応答については後述する。クライアントの登録要求を受信した認可サーバーはクライアントを識別するクライアントIDと、クライアントを認証する秘匿情報であるクライアントシークレットとを発行し、クライアントの登録応答としてクライアントに返却する(S0.1)。認可サーバーは、S0.1でクライアントIDとクライアントシークレットと、S0.0で受信した各種情報およびリダイレクトURIとを紐づけて保持する。クライアントは、S0.1で受信したクライアントIDとクライアントシークレットを保持する。以上がOAuth 2.0を実行する事前操作であるクライアントの登録フローである。
次に、認可サーバーにおいてユーザーを認証するためのフローを、図1を用いて説明する。ユーザーはクライアントにログインする(S1.0)。クライアントは、ログインしたユーザーを特定するための情報であるログインコンテキストを生成し保持する。生成されたログインコンテキストからログインしたユーザーを特定する情報(ローカルユーザーID等)を取得する事ができる。ユーザーは、Webブラウザーを介して認可開始のURIにアクセスすることで、OAuth 2.0の認可フローを開始する(S1.1)。クライアントは認可フローを開始するための認可開始URIにアクセスされると、認可サーバーの認可エンドポイントに対して認可コード要求を送信する(S1.2)。認可コード要求には、クライアントID、リダイレクトURI、stateパラメーターを含む。
stateパラメーターは認可コード要求と認可コード応答とを一意に紐づけるための情報であり、CSRF(cross−site request forgery)攻撃や、トークン置換(以下、認可コード置換)攻撃を防ぐために用いられる。そのため、stateパラメーターは推測不可能でかつ重複しない値である必要がある。なお、後述の認可コード応答でクライアントが受信するstateパラメーターとS1.2の認可コード要求で送信したstateパラメーターとの一致を検証する。さらに認可コード要求を実行したユーザーを識別するために、クライアントで発行されるstateパラメーターはリダイレクトURIとログインコンテキストと紐付いてクライアントで管理される。
S1.2で認可コード要求を受信した認可サーバーは、ユーザーが認可サーバーにログインしていなかった場合、Webブラウザーにユーザーを認証するためのログイン画面を応答する(S1.3)。ユーザーは、Webブラウザーを介してユーザーID、パスワードを入力し、認可サーバーに対して認証要求を行う(S1.4)。認証要求を受信した認可サーバーは、S1.4で受信したユーザーIDとパスワードとの組み合わせが事前に登録されている組み合わせと一致するかを検証し、一致する場合は認証トークンを発行する。発行された認証トークンはWebブラウザーのCookieに応答される。
認可サーバーはユーザーに対して、クライアントの認可を同意するための認可確認画面をWebブラウザーに応答する(S1.5)。ただし、S1.2で受信したクライアントIDとリダイレクトURIとの組み合わせが、認可サーバーに予め登録されたクライアントIDとリダイレクトURIとの組み合わせと一致しない場合は、Webブラウザーにエラー画面を応答する。これにより、不正なURIへのリダイレクト(転送)を防ぐことができる。また、ログインしているユーザーが既に同一のクライアントIDで認可操作済みであった場合はS1.5を省略する事もできる。認可済みのユーザーIDとクライアントIDの組み合わせを以下、同意情報と称する。
S1.6のユーザーによる認可操作の後、認可サーバーは認可コードを発行し、クライアントに対して認可コード応答として認可コードとstateパラメーターを送信する(S1.7)。具体的には、認可コードとstateパラメーターとをリダイレクトURIにクエリパラメーターとして付与し、リダイレクトURIで指定された応答先に認可コードとstateパラメーターとをリダイレクトするようにWebブラウザーに送信する。S1.7で発行された認可コードは、認可サーバーにおいてクライアントID、ユーザーID、リダイレクトURLと紐づけて保存される。さらに認可サーバーは同意情報を保存する。
リダイレクトURIに対して認可コード応答を受信したクライアントは、認可コード応答に含まれるstateパラメーターと、クライアントが管理するstateパラメーターとが一致するかを検証する。検証の結果、stateパラメーターが一致した場合、クライアントは認可サーバーのトークンエンドポイントに対してトークン要求を送信する(S2.0)。トークン要求にはクライアントID、クライアントシークレット、S1.7で取得した認可コード、および、S1.2で受信したリダイレクトURIが含まれる。
S2.0でトークン要求を受信した認可サーバーは、クライアントIDとクライアントシークレットの組み合わせが予め登録された組み合わせと一致するかを検証する。検証の結果、一致が確認されるとクライアントが認証される。さらに認可サーバーは、S2.0で受信した認可コードを保持しているか、保持している場合にはその認可コードは有効期限内か、認可トークンと紐づいたクライアントIDとリダイレクトURIがS2.0のトークン要求で受信したものと一致するか、を検証する。この検証により、S1.2の認可コード要求を送信したクライアントとS2.0のトークン要求を送信したクライアントとが一致するかを認可サーバーで検証する事ができる。
検証が成功した場合、認可サーバーはクライアントに対して認可トークンを発行し、トークン応答としてクライアントに応答する(S2.1)。その際、認可トークンを再取得するためのリフレッシュトークンもクライアントに対して発行し、トークン応答として応答する事もできる。クライアントは、S2.1で受信した認可トークンを用いてリソースサーバーが公開するAPIにアクセスすることが可能となる。また、認可トークンを発行した後に、認可サーバーで管理する認可コードを破棄することでリプレイ攻撃を防ぐことが可能となる。
S2.1のトークン応答にリフレッシュトークンが含まれる場合、クライアントにおいてログインコンテキストとリフレッシュトークンとが紐付けて管理される。それにより、次回以降のAPIへのアクセス時に認可操作(S1.2〜S1.7)を実施せずに認可トークンを再度取得する事ができる。具体的には、S1.1の認可開始を受けた際に、クライアントにおいてユーザーのログインコンテキストとリフレッシュトークンとが紐付いているかを確認する。紐づいていない場合は前述のOAuth 2.0のフロー(S1.2以降の処理)を実施する。紐づいている場合は、認可サーバーのトークンエンドポイントに対してリフレッシュ要求を行う(S2.2)。このリフレッシュ要求はクライアントID、クライアントシークレット、およびリフレッシュトークンを含む。
リフレッシュ要求を受信した認可サーバーは、クライアントID、クライアントシークレットの組み合わせがS0.1で事前登録されたものと一致するかを検証する。一致が確認されクライアントが認証されると、受信したリフレッシュトークンが認可サーバーで保持されているか、保持されている場合はそのリフレッシュトークンは有効期限内か、さらにリフレッシュトークンに紐づいたクライアントIDがリフレッシュ要求のものと一致するかを検証する。これらの検証が全て成功した場合、認可サーバーは認可トークンを発行し、クライアントにトークン応答として認可トークンを送信する。その際、認可トークンを再取得するために新たなリフレッシュトークンを再発行し、トークン応答と同時にクライアントに対して送信する形態も可能である。また、認可サーバーにおいて新たなリフレッシュトークンを発行した後に、認可サーバーでそれまで管理されていたリフレッシュトークンを破棄する事でリプレイ攻撃を防ぐことができる。以上がOAuth 2.0におけるAuthorization Code Grantの処理フローである。OAuth 2.0による処理フローにより、認可サーバーが管理するユーザーの認証情報をクライアントに送信する代わりに、認可サーバーが認可トークンを発行し、クライアントは発行された認可トークンを用いてリソースサーバーが公開するAPIにアクセスすることができる。特許文献1では、OAuth 2.0による処理フローを用いて、複数の外部サービスシステムと連携する情報処理システムが開示されている。
権限委譲システムにおけるパラメーターの管理コストを抑えたい。例えば、図1で説明したOAuth 2.0の処理フローでは、S1.2で認可サーバーの認可エンドポイントに対して認可コード要求を送信する際に、stateパラメーターを設定する。stateパラメーターの値は推測不可能でかつ重複しない値であり、クライアントが認可サーバーに送信した認可コード要求とクライアントが受信した認可コード応答とをクライアントで対応づけるための値である。しかし、stateパラメーターの値は認可コード要求を実行する度に発行しなければならず、さらに、stateパラメーターの値は削除しない限りクライアントで保持されるため、クライアントへの管理コストの負荷になっていた。
本願発明は、認可コード要求と認可コード応答とを対応付ける、例えばstateパラメーターといったパラメーターの役割を維持しつつ、クライアントにおけるパラメーターの発行および管理のコストを削減することを目的とする。
クライアントによるリソースサーバーへのアクセスがユーザーによって許可されたことに応じて認可サーバーが認可コードを発行するための認可コード要求を、前記クライアントが前記認可サーバーに送信する送信手段と、前記認可コード要求に対する応答である認可コード応答を、前記クライアントが前記認可サーバーから受信する受信手段と、前記ユーザーの許可に応じて、前記クライアントが前記リソースサーバーの公開するWebサービスを利用できるように処理する認可フローが開始される前に、前記クライアントに前記ユーザーがログインしたことでログインコンテキストを生成する生成手段と、を有する権限委譲システムであって、前記送信手段によって送信される認可コード要求は、前記認可コード要求と前記認可コード応答とを関連付けるためのパラメーターの値として前記ログインコンテキストが設定されたパラメーターと署名情報とを含み、前記認可サーバーにおいて前記署名情報が検証された後に、前記認可コード要求に対応する前記認可コード応答を前記クライアントに送信し、前記クライアントは、前記受信手段によって受信した認可コード応答に含まれるパラメーターと、前記送信手段によって送信された認可コード応答が含むパラメーターとを用いて、前記認可コード応答が認可コード要求に対応していることを検証する。
本願発明によれば、認可コード要求と認可コード応答とを対応付ける、例えばstateパラメーターといったパラメーターの役割を維持しつつ、クライアントにおけるパラメーターの発行および管理のコストを削減することができる。
以下、本発明を実施するための最良の形態について図面を用いて説明する。
まず図2を用いて、本発明の実施形態に係る権限委譲システムについて説明する。WAN(Wide Area Network)100はWWW(World Wide Web)システムによって構築されている。WAN100と各種デバイス200〜500はLAN(Local Area Network)101を介して接続されている。
認可サーバー200はOAuth 2.0を実現するためのサーバーであり、認証要求の受信や認可コードの発行、管理等の処理を行う。リソースサーバー300はWebサービスを提供するためのAPIを公開している。図2では、認可サーバー200とリソースサーバー300はLAN101で接続されている形態を示しているが、WAN100を介して接続される構成も可能である。また、認可サーバー200はLAN101を介して不図示のデータベースサーバーと接続されており、認可サーバー200が自身の機能を実現する際に用いるデータをそのデータベースサーバーに格納するように構成してもよい。図2では認可サーバー200とリソースサーバー300を別のサーバーであるものとして説明しているが、同一のサーバー上に両サーバーの機能が構成されている形態でもよい。
クライアント400はOAuth2.0におけるクライアントに相当し、例えばプリンターやMFP、もしくはPCやスマートフォン等が挙げられる。端末500はOAuth2.0におけるユーザーエージェントに相当し、ユーザーは端末500を介して、認可サーバー200に対するユーザーの認証要求やクライアント400に対するログイン操作等、各種デバイスの機能を利用することができる。端末500として具体的にはPCやスマートフォン等が挙げられる。
クライアント400および端末500はそれぞれWebブラウザー410とWebブラウザー510を備える。ユーザーはWebブラウザー410またはWebブラウザー510を操作して後述の認可操作を実行する。クライアント400と端末500はLAN101を介して接続されている。以降、Webブラウザー410とWebブラウザー510のどちらで実行するかを問わない場合は、符番を振らずに「Webブラウザー」と称する。
次に図3を用いて、認可サーバー200、リソースサーバー300およびクライアント400、端末500のハードウェア構成を説明する。なお、図3は一般的な情報処理装置のブロック図であり、本実施形態の各種デバイスには一般的な情報処理装置のハードウェア構成やIaaS(Infrastructure as a Service)として提供される情報処理装置の仮想的なハードウェア構成を適用できる。図3では、クライアント400を例に説明するが、リソースサーバー300や認可サーバー200、端末500も同様のハードウェア構成を有するものとする。
CPU2001は、RAM2002、ROM2003、外部メモリ2011などからプログラムを取り出してプログラムの命令を実行し、クライアント400の制御を行うユニットである。後述のシーケンスはこのプログラムの命令が実行されることにより実現される。また、CPU2001はシステムバス2004に接続される各ブロックを制御する。
RAM2002は、CPU2001が命令を実行する際に使用するワークメモリである。ROM2003や外部メモリ2011に保存されたOSやアプリケーション等のプログラムがRAM2002へとロードされ、そのプログラムの命令をCPU2001が順次読みだすことで命令を実行する。ROM2003は、アプリケーションプログラムおよびOSを含む組込済みプログラム、およびデータ等が記録されている記憶装置である。
KBC(キーボードコントローラ)2005は、KB(キーボード)2009や不図示のポインティングデバイスからの入力を制御するユニットである。CRTC(Cathode Ray Tube Controller)2006は、CRTディスプレイ2010の表示を制御するユニットである。DKC(Disk Controller)2007は外部メモリ2011に対するデータアクセスを制御するユニットである。NC(ネットワークコントローラ)2008はWAN100やLAN101を介して接続された他のデバイスとの通信制御処理を実行する。なお、IaaSとして提供される仮想的な情報処理装置の場合は、KBC2005やCRTC2006等を備えず、NC2008を介して接続される端末が備えるキーボードやCRTディスプレイから操作されるよう構成される。
尚、後述の説明においては、特に断りのない限り、各種デバイスの機能が実行される際のハードウェアの主体はCPU2001であり、ソフトウェアの主体はRAM2002、ROM2003、外部メモリ2011等にインストールされたプログラムであるものとする。
次に図4を用いて、認可サーバー200、リソースサーバー300、クライアント400、端末500が有する機能について説明する。認可サーバー200は認可サーバー部210、HTTPサーバー部220を有する。HTTPサーバー部220はWAN100を介してクライアント400と端末500に接続されており、Webブラウザーや後述のクライアントアプリケーション420とHTTP通信を行う機能である。また、HTTPサーバー部220はSSL/TLSによる通信が可能であり、不図示の証明書ストアを有する。
認可サーバー部210はHTTPサーバー部220を介してWebブラウザー510からの要求を受信し、受信した要求に対する結果を応答する機能である。具体的には、ユーザー認証の要求をHTTPサーバー部220がWebブラウザー510から受信し、認証が成功したユーザーのユーザー情報が紐づいた認証トークンを生成し、Webブラウザー510に認証トークンを通知する。認証トークンとは、ユーザーが認可サーバー200にログインしている事を示すためのトークン、またはユーザーが認可サーバー200において認証されているかを検証するためのトークンである。認証トークンを用いることで認可サーバー200はユーザーを識別することが可能となる。一方の認可コードは、認証されたユーザーの認可操作により権限委譲されたクライアント400がユーザーに成り代わってリソースサーバー300のAPIにアクセスすることを許可された事を示すトークンである。また、認可サーバー部210は、認可トークンに署名情報を付与するための秘密鍵を保持するように構成する事もできる。その場合は、この秘密鍵を用いて認可トークンに署名情報を付与し、署名情報付きの認可トークンをクライアント400に対して発行する。
リソースサーバー300はリソースサーバー部310を有する。リソースサーバー部310は、Webサービスを提供するためのAPIを公開する機能である。なお、認可サーバー200と同様に、HTTPサーバー部を備え、HTTPサーバー部を介して外部との受送信を実行する形態でもよい。
クライアント400はWebブラウザー410とクライアントアプリケーション420と認証部430を有する。Webブラウザー410はWWWを利用するためのユーザーエージェントによって実現される機能であり、端末500が備えるWebブラウザー510も同様の機能である。Webブラウザー410はユーザーの操作により、認可サーバー200およびクライアントアプリケーション420と通信を行う。クライアントアプリケーション420は、リソースサーバー300が公開するAPIを実行することで自身が提供する機能と合わせたWebサービスをユーザーに提供する。本実施例では、クライアントアプリケーション420がOAuth 2.0におけるクライアントに相当する。
認証部430はユーザーを認証するための機能である。ユーザーはクライアント400の機能を利用するために、クライアント400における不図示の入力画面においてローカルユーザーIDとローカルユーザーパスワードを入力する。入力を受けたクライアント400は、認証部430において予め登録されている情報(ローカルユーザーIDとローカルユーザーパスワード)と入力された情報とを照合することでユーザーの認証処理を行い、ログインコンテキストを生成する。なお認証処理の形態はこれに留まらず、例えば、ICカードを使った認証や指紋等の生体認証でもよい。
ログインコンテキストは、クライアント400でローカルユーザーを識別するための情報であり、例えば、ローカルユーザーIDから構成される。このログインコンテキストはクライアントアプリケーション420と認証部430で共有される。また、本実施例ではクライアント400へのログイン処理についてユーザーが直接クライアント400を操作してログインする形態で説明するが、Webブラウザー510を介してリモートでログインする形態でもよい。その場合、認証部430は不図示のログイン画面をWebブラウザー510に応答する。ユーザーはそのログイン画面にローカルユーザーIDとローカルユーザーパスワードを入力することでユーザーは認証される。その際、認証部430においてログインコンテキストが生成され、クライアントアプリケーション420と認証部430で共有される。
本実施例では、OAuth 2.0の処理を実行する上での安全性を損なわずに、クライアントのURIが変更された場合の処理の煩雑さを解消する処理について説明する。図1で説明した処理については同じ符番を振り、詳細な説明は省略する。
まず、図5を用いて、認可サーバー200がユーザーを認証するためのログイン画面と、ユーザーに対してクライアント400の認可の同意を問うための認可確認画面について説明する。
図5(a)は、ユーザーが認可サーバー200にログインするためのログイン画面の一例であり、Webブラウザーに表示される。ユーザーがWebブラウザーを介して認可サーバー200の認可エンドポイントに認可コード要求を送信し、ユーザーが認可サーバー200にログインしていない場合にWebブラウザーに表示される。ログイン画面5000は、ユーザーID入力欄5001、パスワード入力欄5002、ログイン操作を実行するためのログインボタン5003を備える。ログインボタン5003が押下された後の処理については後述する。
図5(b)は、ユーザーが認証された結果、認可サーバー200がWebブラウザーに応答する認可確認画面の一例である。認可確認画面5100は、ユーザーに対して同意を求める内容として、認可先のクライアント400のクライアント名5101、クライアント400に関する説明5102、および、アイコン画像5103を有する。さらに認可確認画面5100は、ユーザーがクライアント400を認可するための許可ボタン5104、認可を拒否するための拒否ボタン5105を備える。許可ボタン5104、拒否ボタン5105が押下された後の処理については後述する。
次に、図6を用いて本願発明の特徴を備えたOAuth 2.0のAuthorization Code Grantの処理フローを説明する。なお、図1と処理が同じものについては同じ符号を付与しており、詳細な説明は省略する。また、図1のS0.0を後述のS3.0、S0.1を後述のS3.1、S1.2を後述のS4.0、S2.0を後述のS5.0、S2.2を後述のS5.1に置き換えることで本実施例におけるOAuth 2.0の処理フローを実行することができる。
まず、OAuth 2.0を実行する事前操作としてクライアント400の登録フローについて図6を用いて説明する。本実施例ではクライアント400が能動的に認可サーバー200と通信してクライアント400の登録要求を実行する形態で説明するが、ユーザーがWebブラウザーを介して認可サーバー200にアクセスし、クライアント400の登録要求を実行する形態でもよい。クライアント400の登録フローはクライアント400が起動したときか、もしくはS1.1の認可フローの開始時にクライアント400が未登録であった場合に開始するものとする。
クライアント400は認可サーバー200にクライアント400の登録要求を送信する(S3.0)。登録要求を受信した認可サーバー200はクライアント400を識別するためのクライアントIDと、クライアント400を認証するための暗号鍵と復号鍵(公開鍵と秘密鍵)の鍵ペアを生成する。以降の実施例では、秘密鍵と暗号鍵を一例に説明する。認可サーバー200は、生成されたクライアントIDと秘密鍵とを登録応答としてクライアント400に返却する(S3.1)。クライアント400ではクライアントIDと秘密鍵とが紐付いて保存され、認可サーバー200ではクライアントIDと公開鍵とが紐づいて保存される。本実施例ではクライアントIDが「client_01」であるものとして説明する。クライアント400が有する紐付け情報の一例を表1に、認可サーバー200が有する紐付け情報の一例を表2に示す。
登録応答時にクライアント400に送信される情報は、上記の形態に留まらず、秘密鍵の主体情報としてクライアントIDを埋め込み、登録応答は秘密鍵のみをクライアント400に送信する形態も可能である。または、認可サーバー200で予め秘密鍵を生成し、クライアント400の生産時にその秘密鍵を予めインストールしておくことでクライアント400の登録フロー(S3.0〜S3.1)を実行しない形態も可能である。以上がクライアント400の登録フローである。
従来は、クライアント400の事前登録の際(S0.0)にリダイレクトURIとクライアント400に関する情報とを認可サーバー200に送信し、送信された情報を認可サーバー200で管理した。それに対し、本願発明での事前登録(S3.0)は、それらの情報を送信したり、送信された情報を認可サーバー200で管理したりはしない。
次に、図6を用いて、ユーザーがクライアント400にログインしてから、クライアント400が認可サーバー200に対して認可コード要求を送信するまでのフローを説明する。ユーザーはクライアント400にログインする(S1.0)。その際のローカルユーザーIDは「local_user_01」であるものとする。クライアント400はローカルユーザーIDを特定可能なログインコンテキストを生成し保持する。なおログインコンテキストはユーザーのログアウト操作で消滅するように構成することもできるし、ログインコンテキストの有効期限を設定しその時間の経過によって消滅するよう構成することもできる。
次に、ユーザーはWebブラウザーを介してクライアント400の認可開始のURIにアクセスする(S1.1)。ユーザーエージェントがWebブラウザー410である場合、Webブラウザー410を起動してアクセスするか、もしくはWebブラウザー410のブックマークを用いてアクセスする事ができる。もしくは、クライアントアプリケーション420の不図示のUIを操作する事により、Webブラウザー410が起動し開始される構成にする事もできる。ユーザーエージェントがWebブラウザー510である場合は、Webブラウザー410がWebブラウザー510によるリモートアクセスを受信し、Webブラウザー510において認可開始のURIを入力してアクセスするか、ブックマークを用いてアクセスする事ができる。もしくはWebブラウザー510によるリモートアクセスによりクライアントアプリケーション420が不図示の画面を応答し、その画面に貼られている認可開始のURIへのリンクを押下する事でアクセスするという構成も考えられる。
S1.1でクライアント400が認可開始URIへのアクセスを受信すると、クライアント400は認可サーバー200の認可エンドポイントに対して認可コード要求を送信する(S4.0)。具体的には、認可サーバー200の認可エンドポイントへのリダイレクト指示をWebブラウザーに送信する。S4.0の認可コード要求には、認可コード応答のレスポンスタイプに認可コードを指定するための情報と、認可コード要求と認可コード応答とを一意に紐づけるためのstateパラメーターとを含む。
さらにS4.0の認可コード要求はJWT(JSON Web Token)を含む。具体的にはOAuth 2.0 JWT Profileにおいてclient_assertion_type:jwt−bearer を宣言し、そのclient_assertionとしてJWTをパラメーターとして設定する。図7にJWTをパラメーターに設定した際の認可コード要求の一例を示す。JWTはヘッダー部(「Header」から始まる部分)、ペイロード部(「Payload」から始まる部分)、デジタル署名部(「Encoded」から始まる部分)から構成されており、それぞれがBase64というエンコード方式によってエンコードされている。
ペイロード部には、「iss」(発行者を示す)および「sub」(主体を示す)としてクライアントID「client_01」が設定される。「aud」(利用者を示す)には、認可サーバー200の認可エンドポイントのURIを設定し、「exp」(有効期限)、「iat」(発行日時)も設定する。「client_name」にはクライアント名を設定し、「description」にはクライアント400の説明を設定する。今回は、クライアント400のクライアント名として「デバイスXX」が設定され、クライアント400に関する説明として「YYに設置されている¥r¥nデバイスXXです。」が設定されている。「redirect_uri」にはリダイレクトURIが設定され、今回は「https://192.168.1.1/redirect」が設定されている。必要に応じて「icon_image」にアイコン画像に関する情報をアイコン画像の画像形式とともに設定する。また、アイコン画像に関する情報として、アイコン画像が存在するURIを設定する事も可能であり、認可サーバー200に保持している画像があれば、その画像を識別するための情報を設定する事も可能である。
各種情報を設定した後に、ヘッダー部およびペイロード部の文字列をBase64でエンコードし、その文字列に対してクライアント400が保持している秘密鍵を使ってデジタル署名を付与する。S4.0においてJWTを取得した認可サーバー200は、クライアントIDから公開鍵を特定し、その公開鍵を使ってJWTに含まれるデジタル署名を検証する事でクライアント400を認証し、JWTの各文字列が改竄されていない事を検証する。その結果、S4.0の認可コード要求のJWTに含まれるリダイレクトURIはクライアント400が設定したものであり、改竄されていない事が検証できる。
以上が、ユーザーがクライアント400にログインしてから、クライアント400が認可サーバー200に対して認可コード要求を送信するまでのフローである。JWTを用いることで認可コード要求に含まれるリダイレクトURIを信用できるため、認可サーバー200は事前登録されたリダイレクトURIと比較する必要もなく、さらには認可サーバー200にリダイレクトURIを事前登録する必要もない。したがって、クライアント400のURIが変更され、リダイレクトURIが変更された場合でも、変更後のクライアント400のURIを用いて認可サーバー200に認可コード要求として送信することができる。
また、クライアント名、説明、アイコン画像等、認可確認画面に表示されるクライアント400に関する情報を表記する際の使用言語は、クライアント400に格納されているローカルユーザーの使用言語に関する言語情報や、WebブラウザーのAccept−Languageヘッダーに設定されている言語情報(Webブラウザーからのリクエストに含まれる言語情報)に基づいて決定してもよい。つまり、S4.0の認可コード要求に含まれるクライアント400に関する情報をこれらの言語情報に基づいて記載することもできる。これにより、認可サーバー200はクライアント400に関する情報を受信するだけで、クライアント400にログインしているローカルユーザーの使用言語に即した認可確認画面をユーザーに提供することができる。
次に、Webブラウザーを介してユーザーにログイン画面を提示してからクライアント400に認可コードを発行する処理について、図6を用いて説明する。認可エンドポイントに対して認可コード要求を受信した認可サーバー200は、ユーザーが認可サーバー200にログインしていない場合はログイン画面を提示する(S1.3)。ログイン画面の一例は図5aに示した通りである。ユーザーはログイン画面5000にユーザーIDとパスワードを入力し、ログインボタン5003を押下することで認可サーバー200に認証要求を送信する(S1.4)。認証要求を受信した認可サーバー200は、ユーザーIDとパスワードの組み合わせが認可サーバー200に事前登録されている情報と照合し、一致する場合は認証トークンを発行する。発行された認証トークンはWebブラウザーのCookieに応答される。ここで、認証トークンはランダムな推測不可能な文字列で構成されてもよいし、ログインしたユーザーの識別情報とログイン日時を含んだ暗号化された文字列として構成する事もできる。前者の場合、認証トークンはログインしたユーザーの識別情報(本実施例ではユーザーID)と組み合わせて認可サーバー200で保持される。本実施例のユーザーIDは「user_01」であるものとする。
認可サーバー200は認可確認画面をWebブラウザーに応答する(S1.5)。認可確認画面の一例は図5(b)に示した通りである。ただし、S4.0の認可コード要求で受信したJWTのデジタル署名を公開鍵で検証して不正だった場合、不図示のエラー画面を応答し処理を終了する。デジタル署名の検証の処理により、不正なURIへのリダイレクトを防ぐことができる。以降は、JWTのデジタル署名が正当であったものとして説明する。
S4.0の認可コード要求で受信したJWTに含まれる値(クライアント名5101、説明5102、および、アイコン画像5103)に基づいて認可確認画面5100がWebブラウザーに表示される。ここでユーザーが拒否ボタン5105を押下し、さらにクライアントIDとリダイレクトURIの組み合わせが事前登録のものと一致した場合は、ユーザーがクライアント400の認可を拒否した旨を示す情報を認可サーバー200がリダイレクトURIのクエリパラメーターに付与する。そして、そのリダイレクトURIで指定された応答先に情報をリダイレクトするようにWebブラウザーに応答する。
このように、JWTを用いることで不正な認可コード要求を拒絶し、認可コード要求が拒絶されたことを示す表示画面をWebブラウザーに提供することができる。また、S4.0の要求が拒絶されなかったとしても、認可確認画面においてユーザーが認可を拒否することで、拒否されたことを示す情報をWebブラウザーに送信できる。
一方、ユーザーが許可ボタン5104を押下した場合は認可操作が実行され(S1.6)、認可サーバー200は認可コードを発行する。S1.6で発行された認可コードおよび、S4.0の認可コード要求で受信したstateパラメーターをクエリパラメーターとしてリダイレクトURIに付与し、そのリダイレクトURIで指定された応答先にWebブラウザーが認可コード及びstateパラメーターをリダイレクトするよう応答する(S1.7)。発行された認可コードはクライアントID、ユーザーID、リダイレクトURIと紐づけて認可サーバー200において保存される。認可サーバー200において保存された認可コードは、後述のトークン要求を受信した際のクライアント400の検証で用いられる。今回は、クライアントID「client_01」、ユーザーID「user_01」、リダイレクトURI「https://192.168.1.1/redirect」と紐づけて認可コードが保存されるものとする。認可コードは推測不可能なランダムな文字列である必要があり、かつ有効期限を持つことが好ましい。また、認可サーバー200は、ユーザーから認可の同意をうけたとして同意情報(ユーザーIDとクライアントID)をログインしているユーザーの情報として登録する。
S1.7で認可コード応答を受信したクライアント400は、認可サーバー200のトークンエンドポイントに対してトークン要求を行う(S5.0)。このトークン要求には認可フローがAuthorization Code Grantである事を示す定義「grant_type=authorization_code」と、取得した認可コードおよびクライアント認証情報とを含むJWT(JSON Web Token)である。ここで設定するJWTは、より具体的にはOAuth 2.0 JWT Profileにおけるclient_assertion_type:jwt−bearer を宣言し、そのclient_assertionとしてJWTをパラメーターに設定する。図8にJWTで示されたトークン要求の一例を示す。図7の認可コード要求と重複する部分については、詳細な説明は省略する。
S5.0でトークン要求を受けた認可サーバー200は、クライアントIDから特定した公開鍵を利用してJWTの署名を検証する。検証が成功しクライアント400が認証されると認可トークンを発行し、クライアント400にトークン応答を行う(S2.1)。認可サーバーのトークンエンドポイントに対してリフレッシュ要求を行う(S5.1)。リフレッシュ要求におけるクライアント400の認証方式が、S2.2ではクライアントIDとシークレットの組み合わせを用いて照合してクライアント400を認証する。それに対し、S5.1ではクライアントIDに付与されたデジタル署名を秘密鍵で検証し、クライアント400を認証する。以上が、Webブラウザーにログイン画面を提示してからクライアント400に認可コードを発行する処理である。
次に、認可コード要求において設定するリダイレクトURIを決定するための処理について、図9を用いて説明する。図9の処理はクライアント400においてリダイレクトURIの決定する処理フローである。本処理は、クライアント400が認可フローの開始要求(S1.1)を受信したことにより開始される(S9.1)。クライアント400は認可フローの開始要求のHostヘッダーを取得する(S9.2)。クライアント400は取得したHostヘッダーのドメイン部が「localhost」であるかを判定する(S9.3)。localhostは、プログラムが実行されているデバイス自身を指すホスト名であり、今回であれば、認可フローの開始要求を送信したWebブラウザーを指す。S9.3の判定結果により、認可フローの開始要求を送信したWebブラウザーを特定することができる。今回は、Webブラウザー410が認可フローの開始要求をクライアント400に送信したものとする。Hostヘッダーが「localhost」であった場合は、リダイレクトURIのドメイン部を「localhost」に決定する(S9.8)。例えば、「https://localhost/redirect」がリダイレクトURIとなる。
S9.3においてHostヘッダーのドメイン部が「localhost」でなかった場合、クライアント400はHostヘッダーのドメイン部がIPアドレスであるかを判断する(S9.4)。IPアドレスでない場合はS9.2で取得したHostヘッダーを用いて、不図示のDNSサーバーに問い合わせてIPアドレスを取得する(S9.5)。例えばHostヘッダーの例として「www.canon.jp:443」である場合、ドメイン(Fully Qualified Domain Name: FQDN)である「www.canon.jp」に対してポート番号「443」が付与されている。その場合、Hostヘッダーの一部としてドメイン部分のみを切り出して、DNSサーバーに問い合わせる。IPアドレスを取得した後は、後述のS9.6の処理を実行する。
S9.4においてHostヘッダーのドメイン部がIPアドレスであった場合、クライアント400に予め設定されているIPアドレスと取得したIPアドレスをクライアント400で比較する(S9.6)。IPアドレスが一致するか否かを判定し(S9.7)クライアント400、IPアドレスが一致しなかった場合は、S9.1で受信したアクセスが不正であるとしてエラー終了する(S9.9)。IPアドレスが一致した場合はS9.1で受信したアクセスが正当であると判断し、S9.2で取得したHostヘッダーのドメイン部を利用したURIを作成し、作成したURIをリダイレクトURIとして決定する(S9.8)。以上が、クライアント400におけるリダイレクトURIの決定方法である。これにより、IPアドレスやホスト名が変更されても、OAuth 2.0の処理フローにおける認可フローの開始要求をきっかけにしてリダイレクトURIを決定する事ができる。
本実施例により、OAuth 2.0のAuthorization Code Grantの処理フローにおいて、安全性を損なうことなく、リダイレクトURIや認可確認画面に提示するためのクライアントの情報について事前に登録、管理する必要がなくなり、かつ動的な変更に対して簡易に対応する事が可能となる。
図1や図6で説明したOAuth 2.0の処理フローでは、S1.2(図6ではS4.0)において認可サーバーの認可エンドポイントに対して認可コード要求を送信する際に、stateパラメーターを設定する。stateパラメーターの値は、認可コード要求と認可コード応答とを一意に紐づけるための推測不可能でかつ重複しない値である。しかし、stateパラメーターの値は認可コード要求を実行する度に発行しなければならず、さらに、stateパラメーターの値は削除しない限り、クライアント400において保持されるため、クライアント400への管理コストの負荷になっていた。実施例2では、クライアント400におけるstateパラメーターの値の発行および管理のコストを削減するための処理を説明する。実施例2に関する後述の説明では、従来技術(図1)と組み合わせた形態で説明するが、実施例1(図6)との組み合わせも可能である。
図10を用いて、実施例2におけるOAuth 2.0のAuthorization Code Grantの処理フローを説明する。なお、図1と処理が同じものについては同じ符号を付与し、詳細な説明は省略する。実施例2におけるクライアント400の事前登録は、従来技術のパターン(S0.0〜S0.1)で記載されているが実施例1のパターン(S3.0〜S3.1)でもよいため、ここでの説明は省略する。また、ユーザーがクライアント400にログイン(S1.0)してからクライアント400に対して認可開始要求を送信(S1.1)するまでの処理は、従来技術または実施例1と同様なので説明は省略する。
クライアント400はS1.1で認可開始のURLにアクセスを受けると、認可サーバー200の認可エンドポイントに対して認可コード要求を送信する(S7.0)。具体的にはWebブラウザーを介して認可エンドポイントへリダイレクトする。S7.0の認可コード要求には、レスポンスタイプとして認可コードを指定するための情報と、クライアント400を一意に識別するためのクライアントID、認可コード要求と認可コード応答とを一意に対応づけるための情報であるstateパラメーター、リダイレクトURLを含む。ただし、stateパラメーターの値にはログインコンテキストを設定する。ログインコンテキストとは、クライアント400にログインしたユーザーの情報を保持したデータオブジェクトであり、例えばローカルユーザーIDやローカルユーザーのメールアドレス等のローカルユーザーを特定するローカルユーザー情報が含まれている。また、認可コード要求で送信されるクライアントIDと、stateパラメーターとして設定されたログインコンテキストはJWTに含まれる。JWTにおけるパラメーターの設定については、後述の図11で説明する。
S7.0で認可コード要求を受信した認可サーバー200は、S1.3〜S1.6の処理により認可サーバー200にログインしているユーザーに対して、クライアント400の認可を要求し、ユーザーによってクライアント400が認可されることで、認可操作が実行される。S1.6の認可操作が実行されると、認可サーバー200は認可コードを発行する。発行した認可コードはクライアントID、ユーザーID、リダイレクトURLと紐づけて保存される。今回はクライアントID「client_01」、ユーザーID「user_01」、リダイレクトURL「https://192.168.1.1/redirect」と紐づけて認可コードが保存される。
認可コードおよび、S7.0でstateパラメーターの値として設定されたログインコンテキストを、WebブラウザーがリダイレクトURLにリダイレクトするように応答する(S7.1)。その際、認可サーバー200は認可コードとstateパラメーターに対して公開鍵を使ってデジタル署名を付与する。リダイレクトURLで認可コード応答を受信したクライアント400は保持している秘密鍵を使ってデジタル署名値を検証し、S7.1で受信した認可コード応答の内容が改竄されていないかを検証する。具体的には、クライアント400は、クライアント400に保存されたログインコンテキストとS7.1で受信したログインコンテキストとが一致することを検証し、認可コード要求と認可コード応答が紐付いていることを確認できる。
S7.1で受信した認可コード応答の内容が改ざんされていないことが検証された後に認可サーバー200がクライアント400に対して認可トークンを発行する処理(S2.0〜S2.2)は実施例1のパターン(S5.0〜S5.1、S2.1)でもよいため、ここでの説明は省略する。以上が、実施例2におけるOAuth 2.0のAuthorization Code Grantの処理フローである。
次に図11を用いて、S7.0の認可コード要求でクライアント400から認可サーバー200に送信されるJWTの一例を説明する。JWTを構成する文字列のうち、図8と同様の文字列については詳細の説明を省略する。ペイロード部には、iss(発行者)、sub(主体)などの他、stateが設定されている。今回、aud(利用者)には認可サーバー200の認可エンドポイントとして「https://xxx.com/authrization」が設定されている。また、stateにはログインコンテキストとして「user://local_user_01, mail: local_user_01@abc.com」が設定されている。ヘッダー部およびペイロード部はBase64でエンコードされ、その文字列に対してクライアント400が保持している秘密鍵を使ってデジタル署名を付与する。以上が、S7.0の認可コード要求でクライアント400から認可サーバー200に送信されるJWTの一例である。
図11ではログインコンテキストをJSON(JavaScript(登録商標) Object Notation)形式のテキストデータで示しているが、その形式に限定されない。S7.1の認可コード応答の受信時にクライアント400でローカルユーザーを特定可能であればよく、例えばログインコンテキストを可逆、もしくは非可逆暗号化した値でもよい。
実施例2より、クライアント400が既存で保持するログインコンテキストをstateパラメーターの値として設定することで、クライアント400でstateパラメーターに設定するための新たな値を生成する必要もなく、クライアント400における生成や管理のコストを削減することができる。
また、ログインコンテキストはローカルユーザーを一意に特定し、他と重複しない情報であり、クライアント400にローカルユーザーがログインした際にクライアント400のOS(不図示)において生成され、ログオフした際に消える情報である。ローカルユーザーのログイン操作でログインコンテキストが生成されることにより、ログイン中のローカルユーザーがアクセス権限を有するWebページがWebブラウザー上に公開される。ローカルユーザーのログオフ操作でログインコンテキストが消えることにより、ローカルユーザーがアクセス権限を有するWebページが別のユーザーに公開されることなく、セキュリティーを担保することができる。
一方のstateパラメーターは認可コード要求と認可コード応答とを一意に関連付けるために推測不可能でかつ重複しない値である。つまり、本実施例で、stateパラメーターの値をログインコンテキストに置き換えることで、stateパラメーターの特性(他と重複しない情報)を維持しつつ、クライアント400におけるstateパラメーターの値の生成や管理のコストを削減することができる。
さらに、認可コード要求と認可コード応答においてJWTを用いることで、OAuth 2.0の処理を実行する上での安全性を損なうことなく、ユーザー情報を含むstateパラメーターを認可サーバー200とクライアント400との間で安全にやり取りすることができる。
クライアント400のローカルユーザーIDと一意的に紐付くユーザーIDを認可サーバー200で保存せず、複数のローカルユーザーIDに対して一つのユーザーIDが紐づいている場合がある。具体的には、クライアント400ではユーザー毎にローカルユーザーIDを登録されるが、認可サーバー200ではユーザー毎にユーザーIDは発行されず、共通のユーザーIDを複数のローカルユーザーIDを用いて利用される場合がある。例えば、複数のアカウント(ユーザーID)を作成する煩わしさから、同じ部門内で業務用の共通のアカウントを作成し複数の部員で共有する形態がある。
その結果、同意情報(クライアントIDとユーザーIDを含む)がクライアント400を利用する複数のユーザーによって共有される。そして、あるユーザーは認可操作を実行していないにも関わらず、同意情報に含まれるユーザーIDを共有する別のユーザーが認可操作を実行する問題が生じる。
ユーザーIDを共有しないようにするための手段として、認可サーバー200でユーザーIDを個々に保管する方法があるが、ユーザー一人一人に対してユーザーIDを発行しなければならず、ユーザーIDの作成と管理のコストがかかる。実施例3では、認可サーバー200で新たなユーザーIDを作成し管理することなく、複数のユーザーにユーザーIDを共有させない形態について説明する。
まず、認可サーバー200で管理される同意情報について説明する。表3は認可サーバー200で保管されている同意情報の一例である。
表3の「client_id」はクライアントID、「user_id」は認可サーバー200で登録されたユーザーのユーザーID、「login_context」はS7.0の認可コード要求で認可サーバー200に送信されるログインコンテキストである。ログインコンテキストには、クライアント400にログインしたローカルユーザーのローカルユーザー情報が含まれる。「login_context」に値が設定されていない場合は同意情報としてログインコンテキストを考慮せず、「login_context」に値が設定されている場合は同意情報としてログインコンテキストを考慮することを意味する。「consent」はS1.5の認可確認画面においてユーザーが同意したかを示すフラグで、「1」ではクライアント400の認可が同意されたことを示し、「0」は拒否されたことを示す。表3の同意情報テーブルにレコードが無い場合は、ユーザーによる認可が未だ行われていないことを示す。また、同意情報テーブルの別の形態として、「consent」を設けない形態も可能である。その形態とは、ユーザーがクライアント400の認可を拒否した場合に同意情報テーブルからレコードを削除する形態等である。
表3の同意情報は、認可サーバー200がユーザーから認可操作を受け付ける(S1.6)ことで生成される。S1.6では、クライアントIDとユーザーIDとを含む同意情報を認可サーバー200で管理する形態を述べた。本実施例では、同意情報としてクライアントIDとユーザーIDに加えて、S7.0(図10)で受信したログインコンテキストが表3のように同意情報として管理されている形態である。
同意情報としてログインコンテキストを含むかどうかの判断基準は、クライアント400にログインコンテキストが存在するかどうかに依る。認可サーバー200が、クライアント400にログインコンテキストが存在するかを判断する形態として、主に次の二つが考えられる。一つ目は、S0.0でクライアント400に関する情報を登録する際に、クライアント400はログインコンテキストを有するマルチユーザーデバイスであることを認可サーバー200に通知する形態である。
二つ目は、Webブラウザーが認可サーバー200に対して認可要求を送信する際に、stateパラメーターとともにstateパラメーターの値がログインコンテキストであることを通知する別のパラメーターを送信する形態である。本実施例ではこのいずれかの形態により、認可サーバー200はクライアント400にログインコンテキストが存在すると判断し、ユーザーの同意情報にログインコンテキストを含めるものとする。
図12を用いて、Webブラウザーに認可確認画面を表示するかを判定するフローを説明する。図12のフローは、S12.1で認可サーバー200は認可コード要求を受信した後に、S12.2でログイン画面を表示するかどうかを判断する際に実行される。ログイン画面の一例は図5(a)に示した通りである。Webブラウザーはそのログイン画面においてユーザーIDとパスワードとが入力されることで、認可サーバー200は認証要求をWebブラウザーから受信する(S12.3)。なお、S12.1、S12.2、S12.3の処理は、それぞれ図10におけるS7.0、S1.3、S1.4に相当するため、詳細な説明は省略する。
認可サーバー200はS12.3で受信したユーザーIDとS7.0で受信したログインコンテキストとクライアントIDとが、予め同意情報として認可サーバー200に保存されているユーザーIDとクライアントIDとログインコンテキストとが一致するかを判定する(S12.4)。
S12.4において予め登録されている同意情報と、S12.3のユーザーIDとS7.0のログインコンテキストとクライアントIDとの一致が確認できた場合はS12.5に進む。ここで、一致するユーザーIDとクライアントIDとログインコンテキストが認可サーバー200において同意情報として登録されている、ということは、ユーザーIDとログインコンテキストで特定されるユーザーがクライアントIDで特定されるクライアント400を用いて認可操作を既に実行していることを示す。
一方、S12.4において一致する同意情報が確認できなかった場合は、ユーザーによる認可操作がこれまでに実行されなかったものとみなし、S12.3のユーザーIDとS7.0のログインコンテキストとクライアントIDとに基づいて新たな同意情報を作成する(S12.9)。新たに作成された同意情報は、表3で一例を示した同意情報にレコードとして追加される。
S12.4において一致する同意情報が確認された後、予め登録されている同意情報は、ユーザーによる認可の同意が済んでいる情報かを判定する(S12.5)。具体的には表3のconsentの値を確認する。consentが「1」である場合、認可確認画面(S1.5)と認可操作(S1.6)を実行することなく、クライアント400への認可コード応答を実行し、本処理フローは終了する。
一方、consentが「0」である場合、またはS12.9において新たな同意情報が作成された場合は、認可の同意を問うための画面である認可確認画面をWebブラウザーに応答し(S12.6)、ユーザーの操作による同意結果を受け付け(S12.7)、同意結果を認可サーバー200に保存する(S12.8)。保存される同意情報の一例は表3に示した通りである。なお、S12.6とS12.7の処理は、それぞれ図10のS1.5とS1.6の処理に相当するため、詳細な説明は省略する。以上が、Webブラウザーに認可確認画面を表示するかを判定するフローである。
実施例3により、これまでの同意情報(ユーザーIDとクライアントID)に対してログインコンテキストを加えることで、ユーザーIDとログインコンテキストとが一致しない度に認可同意画面を表示し、新たにユーザー情報を作成し管理させることなく、複数のユーザーに同意情報を共有させない形態を実現できる。
実施例4では、認可トークンを発行する際に認可コードを用いず、認可サーバー200における認可コードの生成、管理負荷を軽減する形態を説明する。
図13を用いて、本実施例におけるOAuth 2.0のAuthorization Code Grantの処理を説明する。上記の実施例で説明済みの処理については、同じ符番を振り詳細な説明は省略する。また、実施例4における後述の説明では、従来技術の形態(図1)と組み合わせた形態で説明するがその形態に限定されず、実施例1(図6)や実施例2(図10)、実施例3との組み合わせも可能である。
まず、S1.1で認可フローの開始要求がクライアント400に送信された後に、クライアント400が認可コード要求を認可サーバー200に送信する(S7.2)。S7.2で受け渡される情報はS1.2と同様であるが、認可コード要求のレスポンスタイプには「code」ではなく、「id_token」を指定する。認可コード要求のレスポンスタイプに「id_token」を指定することにより、後述の認可コード応答において認可サーバー200は認可コードでなく、ユーザーIDをクライアント400に送信することが可能となる。
S1.3〜S1.6でユーザーがクライアント400の認可に同意した後、認可サーバー200はクライアント400に認可コード応答を送信する(S7.3)。その際、認可サーバー200はユーザーID(user_id)とstateパラメーターを、リダイレクトURLにWebブラウザーがリダイレクトするように応答する。具体的には認可サーバー200は、ユーザーIDとstateパラメーターに対してクライアント400の公開鍵を使ってデジタル署名を付与する。
S7.3の認可コード応答を受信したクライアント400は、クライアント400が保持する秘密鍵を用いてデジタル署名を検証し、認可コード応答の内容が改竄されていない事を検証する。さらにクライアント400は、認可コード要求で送信したstateパラメーターと認可コード応答で受信したstateパラメーターとが一致することを検証し、認可コード要求と認可コード応答が紐付いていることを確認する。
認可コード要求と認可コード応答とが紐付いていることが検証された後、クライアント400は認可サーバー200のトークンエンドポイントに対してトークン要求を行う(S7.4)。このトークン要求には認可フローがAuthorization Code Grantである事を示すための「grant_type=authorization_code」を含む。OAuth2.0の規則に従って「grant_type」の値は「authorization_code」としているが、本実施例では、認可トークンを発行するために用いるのは認可コードではなくユーザーIDである。
トークン要求にはさらに、クライアントシークレット、クライアントID およびS7.3で取得したユーザーIDとしてJWT(JSON Web Token)を含む。ここで設定するJWTは具体的に、OAuth 2.0 JWT Profileにおけるclient_assertion_type:jwt−bearer を宣言し、そのclient_assertionとしてJWTをパラメーターに設定する。今回は、クライアントIDは「client_01」、ユーザーIDは「user_01」であるものとする。さらに、クライアント400は、クライアント400が保持している秘密鍵を用いてクライアントIDおよびユーザーIDに対してデジタル署名を付与する。
S7.4でトークン要求を受けた認可サーバー200は、クライアントIDから特定した公開鍵を用いてトークン要求に付与されたデジタル署名を検証し、クライアント400を認証する。そして受信したクライアントIDとユーザーIDを用いて同意情報を取得し、ユーザーがクライアント400の認可に同意しているかを判定する。ユーザーが同意していると判定された場合、認可サーバー200は認可トークンを発行し、トークン応答として発行した認可トークンをクライアント400に送信する(S7.5)。ここで、認可トークンを再取得するためのリフレッシュトークンを発行しない。その理由は、図1で説明したAuthorization Code Grantのフローでは、認可コードを使って認可トークンの発行を行い、認可コードは認可トークンを発行した時点で無効にされていた。そのため、再度Authorization Code Grantの処理フローを実施する処理を省略するためにリフレッシュトークンを発行し、認可サーバー200とクライアント400とがリフレッシュトークンを保管する必要があった。しかし本実施例においては、認可トークンの発行を同意情報(クライアントIDとユーザーIDを含む)に基づいて行うため、再度認可トークンを取得する場合にも認可サーバー200が管理する同意情報を用いてトークン要求を実行すればよい。
以上が、認可トークンを発行する際に認可コードを用いない処理である。実施例4より、認可サーバー200は認可コードとリフレッシュトークンの発行および保管処理を省くことができ、認可サーバー200における認可コードとリフレッシュトークンの管理コストを削減することができる。また、クライアント400はリフレッシュトークンの保管処理を省くことができるので、クライアント400の管理コストも削減できる。
なお、実施例4と実施例3(同意情報にログインコンテキストを含める形態)とを組み合わせる場合、S7.4のトークン要求でクライアントIDとユーザーIDとログインコンテキストとを送信する必要がある。
[その他の実施例]
上記の実施例は、リダイレクトURLやクライアント400に関する情報をJWTに含める形態(実施例1)と、ログインコンテキストをstateパラメーターとして設定する形態(実施例2)と、認可コードを発行せずに認可トークンを発行する形態(実施例4)はいずれの組み合わせも可能である。
上記の実施例は、リダイレクトURLやクライアント400に関する情報をJWTに含める形態(実施例1)と、ログインコンテキストをstateパラメーターとして設定する形態(実施例2)と、認可コードを発行せずに認可トークンを発行する形態(実施例4)はいずれの組み合わせも可能である。
認可コード要求の際に、認可の範囲を示すscopeパラメーターを指定することもできる。例えば、認可コード要求時に指定されたscopeパラメーターを認可コード、認可トークン、リフレッシュトークンと紐付けて管理してもよい。また、認可確認画面5100を表示する際に、scopeパラメーターが示す認可の範囲を表示するように構成してもよい。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピューター(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
200 認可サーバー
300 リソースサーバー
400 クライアント
500 端末
410 Webブラウザー
510 Webブラウザー
300 リソースサーバー
400 クライアント
500 端末
410 Webブラウザー
510 Webブラウザー
Claims (13)
- クライアントによるリソースサーバーへのアクセスがユーザーによって許可されたことに応じて認可サーバーが認可コードを発行するための認可コード要求を、前記クライアントが前記認可サーバーに送信する送信手段と、
前記認可コード要求に対する応答である認可コード応答を、前記クライアントが前記認可サーバーから受信する受信手段と、
前記ユーザーの許可に応じて、前記クライアントが前記リソースサーバーの公開するWebサービスを利用できるように処理する認可フローが開始される前に、前記クライアントに前記ユーザーがログインしたことでログインコンテキストを生成する生成手段と、
を有する権限委譲システムであって、
前記送信手段によって送信される認可コード要求は、
前記認可コード要求と前記認可コード応答とを関連付けるためのパラメーターの値として前記ログインコンテキストが設定されたパラメーターと署名情報とを含み、
前記認可サーバーにおいて前記署名情報が検証された後に、前記認可コード要求に対応する前記認可コード応答を前記クライアントに送信し、
前記クライアントは、
前記受信手段によって受信した認可コード応答に含まれるパラメーターと、前記送信手段によって送信された認可コード応答が含むパラメーターとを用いて、
前記認可コード応答が認可コード要求に対応していることを検証する権限委譲システム。 - 前記署名情報は、
前記クライアントが有する暗号鍵を用いて前記認可コード要求に付与され、
前記認可サーバーは、
前記認可サーバーが有する復号鍵を用いて前記認可コード要求に付与されている署名情報を検証する請求項1に記載の権限委譲システム。 - 前記送信手段は、
前記クライアントによる前記リソースサーバーへのアクセスを前記認可サーバーが許可するための認可コード要求を、前記クライアントがユーザーエージェントを介して前記認可サーバーに送信し、
前記パラメーターはstateパラメーターであり、
前記ログインコンテキストは、
ローカルユーザーID、および前記ローカルユーザーのメールアドレスのうち少なくとも1つ含み、前記ローカルユーザーを一意に識別するための情報である
請求項1または2に記載の権限委譲システム。 - 前記権限委譲システムは、
前記クライアントによる前記リソースサーバーへのアクセスを許可される際に用いられる同意情報に、前記認可サーバーが受信したパラメーターに設定されているログインコンテキストを含める請求項1乃至3のいずれか一つに記載の権限委譲システム。 - 前記同意情報は、
前記クライアントを識別するクライアントIDと、前記認可サーバーにログインしているユーザーを識別するユーザーIDとを少なくとも含む請求項4に記載の権限委譲システム。 - 前記権限委譲システムは、
前記クライアントが前記認可サーバーに対して、前記クライアントIDと前記ユーザーIDとを含み、認可トークンを前記クライアントが取得するためのトークン要求と、署名情報とを送信し、
前記トークン要求を受信した認可サーバーは暗号鍵を用いて前記トークン要求とともに受信した署名情報を検証した後に、
前記トークン要求に含まれるクライアントIDで特定されるクライアントによる前記リソースサーバーへのアクセスを、
前記トークン要求に含まれるユーザーIDで特定されるユーザーが認可したかを確認した後に、前記認可サーバーは前記クライアントに前記認可トークンを発行する発行手段をさらに有する請求項5に記載の権限委譲システム。 - 前記認可トークンは、
前記クライアントが前記リソースサーバーにアクセスすることを認可したことを示すトークンである請求項6に記載の権限委譲システム。 - 前記発行手段は、
前記トークン要求に含まれるクライアントIDとユーザーIDで特定される同意情報に対して、前記クライアントによる前記リソースサーバーへのアクセスを前記ユーザーが認可したことを示すフラグが、付与されていることを確認した後に前記認可トークンを発行する手段である請求項6または7に記載の権限委譲システム。 - 前記送信手段によって送信される認可コード要求は、前記認可サーバーが前記認可コード応答を応答する応答先を指定するための応答先情報と署名情報とを含み、
前記認可サーバーにおいて前記署名情報が検証された後に、前記認可サーバーは前記送信手段によって送信された認可コード要求に含まれる前記応答先情報に基づいて、前記認可コード要求に対する認可コード応答を送信する手段をさらに有する請求項1乃至請求項8のいずれか一つに記載の権限委譲システム。 - クライアントによるリソースサーバーへのアクセスがユーザーによって許可されたことに応じて認可サーバーが認可コードを発行するための認可コード要求を、前記クライアントが前記認可サーバーに送信する送信手段と、
前記認可コード要求に対する応答である認可コード応答を、前記クライアントが前記認可サーバーから受信する受信手段と、
前記ユーザーの許可に応じて、前記クライアントが前記リソースサーバーの公開するWebサービスを利用できるように処理する認可フローが開始される前に、前記クライアントに前記ユーザーがログインしたことでログインコンテキストを生成する生成手段と、
を含む制御方法であって、
前記送信手段によって送信される認可コード要求は、
前記認可コード要求と前記認可コード応答とを関連付けるためのパラメーターの値として前記ログインコンテキストが設定されたパラメーターと署名情報とを含み、
前記認可サーバーにおいて前記署名情報が検証された後に、前記認可コード要求に対応する前記認可コード応答を前記クライアントに送信し、
前記クライアントは、
前記受信手段によって受信した認可コード応答に含まれるパラメーターと、前記送信手段によって送信された認可コード応答が含むパラメーターとを用いて、
前記認可コード応答が認可コード要求に対応していることを検証する制御方法。 - コンピューターに
クライアントによるリソースサーバーへのアクセスがユーザーによって許可されたことに応じて認可サーバーが認可コードを発行するための認可コード要求を、前記クライアントが前記認可サーバーに送信する送信手段と、
前記認可コード要求に対する応答である認可コード応答を、前記クライアントが前記認可サーバーから受信する受信手段と、
前記ユーザーの許可に応じて、前記クライアントが前記リソースサーバーの公開するWebサービスを利用できるように処理する認可フローが開始される前に、前記クライアントに前記ユーザーがログインしたことでログインコンテキストを生成する生成手段として機能させるためのプログラムであって、
前記送信手段によって送信される認可コード要求は、
前記認可コード要求と前記認可コード応答とを関連付けるためのパラメーターの値として前記ログインコンテキストが設定されたパラメーターと署名情報とを含み、
前記認可サーバーにおいて前記署名情報が検証された後に、前記認可コード要求に対応する前記認可コード応答を前記クライアントに送信し、
前記クライアントは、
前記受信手段によって受信した認可コード応答に含まれるパラメーターと、前記送信手段によって送信された認可コード応答が含むパラメーターとを用いて、
前記認可コード応答が認可コード要求に対応していることを検証するプログラム。 - クライアントによるリソースサーバーへのアクセスがユーザーによって許可されたことに応じて認可サーバーが認可コードを発行するための認可コード要求を、前記クライアントが前記認可サーバーに送信する送信手段と、
前記認可コード要求に対する応答である認可コード応答を受信する受信手段と、
を有するクライアントであって、
前記送信手段によって送信される認可コード要求は、
前記認可コード要求と前記認可コード応答とを関連付けるためのパラメーターの値としてログインコンテキストが設定されたパラメーターと署名情報とを含み、
前記認可サーバーにおいて前記署名情報が検証された後に、前記クライアントは前記認可コード要求に対応する前記認可コード応答を前記認可サーバーから受信し、
前記受信手段によって受信した認可コード応答に含まれるパラメーターと、前記送信手段によって送信された認可コード応答が含むパラメーターとを用いて、
前記認可コード応答が認可コード要求に対応していることを検証するクライアント。 - 前記送信手段は、
前記クライアントによる前記リソースサーバーへのアクセスを前記認可サーバーが許可するための認可コード要求を、前記クライアントがユーザーエージェントを介して前記認可サーバーに送信し、
前記パラメーターはstateパラメーターであり、
前記ログインコンテキストは、
ローカルユーザーID、および前記ローカルユーザーのメールアドレスを少なくとも1つ含み、前記ローカルユーザーを一意に識別するための情報である請求項12に記載のクライアント。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017167284A JP2019046059A (ja) | 2017-08-31 | 2017-08-31 | 権限委譲システム、制御方法、およびプログラム |
US16/113,948 US10785204B2 (en) | 2017-08-31 | 2018-08-27 | Authority transfer system, control method therefor, and client |
KR1020180102419A KR102313859B1 (ko) | 2017-08-31 | 2018-08-30 | 권한 위양 시스템, 그 제어 방법 및 클라이언트 |
CN201811012993.9A CN109428891B (zh) | 2017-08-31 | 2018-08-31 | 权限转移系统及其控制方法和客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017167284A JP2019046059A (ja) | 2017-08-31 | 2017-08-31 | 権限委譲システム、制御方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019046059A true JP2019046059A (ja) | 2019-03-22 |
Family
ID=65514830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017167284A Pending JP2019046059A (ja) | 2017-08-31 | 2017-08-31 | 権限委譲システム、制御方法、およびプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US10785204B2 (ja) |
JP (1) | JP2019046059A (ja) |
KR (1) | KR102313859B1 (ja) |
CN (1) | CN109428891B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021002189A (ja) * | 2019-06-21 | 2021-01-07 | 富士通株式会社 | 情報処理装置、情報処理方法、および情報処理プログラム |
JP7636456B2 (ja) | 2023-02-21 | 2025-02-26 | 日立ヴァンタラ株式会社 | サーバシステム及び不正ユーザ検知方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11108762B2 (en) | 2018-06-05 | 2021-08-31 | The Toronto-Dominion Bank | Methods and systems for controlling access to a protected resource |
JP7170550B2 (ja) * | 2019-01-28 | 2022-11-14 | キヤノン株式会社 | 管理装置およびその制御方法 |
CN110225045A (zh) * | 2019-06-18 | 2019-09-10 | 平安科技(深圳)有限公司 | 全链路数据鉴权方法、装置、设备及存储介质 |
EP3994593B1 (en) * | 2019-07-05 | 2023-08-30 | Visa International Service Association | System, method, and computer program product for third-party authorization |
CN110798447B (zh) * | 2019-09-18 | 2021-10-08 | 广州朗国电子科技有限公司 | 一种基于网络通信的智能终端本地授权方法、装置及系统 |
EP3861676A1 (en) | 2019-10-21 | 2021-08-11 | Google LLC | Verifiable consent for privacy protection |
CN110852724B (zh) * | 2019-11-19 | 2023-03-14 | 深圳前海环融联易信息科技服务有限公司 | 一种流程转授权的方法、装置、计算机设备及存储介质 |
US11463258B2 (en) | 2020-03-13 | 2022-10-04 | Ebay Inc. | Secure token refresh |
CN111949958B (zh) * | 2020-08-14 | 2023-08-18 | 中国工商银行股份有限公司 | Oauth协议中的授权认证方法及装置 |
CN112564916A (zh) * | 2020-12-01 | 2021-03-26 | 上海艾融软件股份有限公司 | 应用于微服务架构的访问客户端认证系统 |
CN113612744B (zh) * | 2021-07-23 | 2023-09-22 | 天津中新智冠信息技术有限公司 | 远程授权系统和方法 |
US20230093470A1 (en) * | 2021-09-17 | 2023-03-23 | Salesforce, Inc. | Account authorization mapping |
CN113569204B (zh) * | 2021-09-27 | 2022-06-10 | 北京华安天成智能技术有限公司 | 远程生产授权管理系统及方法 |
JP2023140742A (ja) * | 2022-03-23 | 2023-10-05 | 東芝テック株式会社 | 画像形成装置 |
CN115996141B (zh) * | 2022-11-18 | 2024-09-20 | 深圳市蓝凌软件股份有限公司 | 文件访问认证方法、装置、设备和存储介质 |
CN117331964B (zh) * | 2023-12-01 | 2024-02-27 | 成都明途科技有限公司 | 数据查询方法、装置、设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6066647B2 (ja) * | 2012-09-27 | 2017-01-25 | キヤノン株式会社 | デバイス装置、その制御方法、およびそのプログラム |
US8615794B1 (en) * | 2013-01-09 | 2013-12-24 | Ping Identity Corporation | Methods and apparatus for increased security in issuing tokens |
JP6439370B2 (ja) | 2014-05-28 | 2018-12-19 | 株式会社リコー | 情報処理システム、情報処理方法、情報処理装置及びプログラム |
US9912648B2 (en) * | 2014-07-15 | 2018-03-06 | Square, Inc. | Two-factor authentication with push notification for a security code |
JP2017004301A (ja) * | 2015-06-11 | 2017-01-05 | キヤノン株式会社 | 認証サーバーシステム、方法、プログラムおよび記憶媒体 |
CN106714075B (zh) * | 2015-08-10 | 2020-06-26 | 华为技术有限公司 | 一种处理授权的方法和设备 |
US9800580B2 (en) * | 2015-11-16 | 2017-10-24 | Mastercard International Incorporated | Systems and methods for authenticating an online user using a secure authorization server |
CN105978947A (zh) * | 2016-04-27 | 2016-09-28 | 努比亚技术有限公司 | 对同一账号登录设备数量控制的方法及移动终端 |
CN105897757B (zh) * | 2016-06-12 | 2019-01-04 | 上海携程商务有限公司 | 授权认证系统及授权认证方法 |
CN106534143A (zh) * | 2016-11-28 | 2017-03-22 | 上海斐讯数据通信技术有限公司 | 一种跨应用认证授权的方法和系统 |
-
2017
- 2017-08-31 JP JP2017167284A patent/JP2019046059A/ja active Pending
-
2018
- 2018-08-27 US US16/113,948 patent/US10785204B2/en not_active Expired - Fee Related
- 2018-08-30 KR KR1020180102419A patent/KR102313859B1/ko active Active
- 2018-08-31 CN CN201811012993.9A patent/CN109428891B/zh active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021002189A (ja) * | 2019-06-21 | 2021-01-07 | 富士通株式会社 | 情報処理装置、情報処理方法、および情報処理プログラム |
JP7218679B2 (ja) | 2019-06-21 | 2023-02-07 | 富士通株式会社 | 情報処理装置、情報処理方法、および情報処理プログラム |
JP7636456B2 (ja) | 2023-02-21 | 2025-02-26 | 日立ヴァンタラ株式会社 | サーバシステム及び不正ユーザ検知方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190024817A (ko) | 2019-03-08 |
KR102313859B1 (ko) | 2021-10-18 |
US20190081943A1 (en) | 2019-03-14 |
CN109428891B (zh) | 2022-05-10 |
US10785204B2 (en) | 2020-09-22 |
CN109428891A (zh) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102362456B1 (ko) | 권한 위양 시스템, 그 제어 방법 및 저장 매체 | |
JP2019046059A (ja) | 権限委譲システム、制御方法、およびプログラム | |
CN110138718B (zh) | 信息处理系统及其控制方法 | |
JP6929181B2 (ja) | デバイスと、その制御方法とプログラム | |
JP5926441B2 (ja) | マルチパーティシステムにおける安全な認証 | |
JP6335657B2 (ja) | 権限委譲システム、方法、認証サーバーシステム、およびプログラム | |
JP4782986B2 (ja) | パブリックキー暗号法を用いたインターネット上でのシングルサインオン | |
JP6061633B2 (ja) | デバイス装置、制御方法、およびそのプログラム。 | |
US20140230020A1 (en) | Authorization server and client apparatus, server cooperative system, and token management method | |
CN107690788A (zh) | 识别和/或认证系统和方法 | |
JP2022113037A (ja) | 多要素認証機能を備えた画像形成装置 | |
JP2013145457A (ja) | プログラム、ネットワークシステム | |
JP7043480B2 (ja) | 情報処理システムと、その制御方法とプログラム | |
JP2016085638A (ja) | サーバー装置、端末装置、システム、情報処理方法及びプログラム | |
JP6653368B2 (ja) | 認証サーバ、認証システム及びプログラム | |
JP2018037025A (ja) | プログラム、認証システム及び認証連携システム | |
JP7521598B2 (ja) | 認証代行装置、認証代行方法および認証代行プログラム | |
JP2008009644A (ja) | 認証システムおよび認証方法 |