JP6335657B2 - 権限委譲システム、方法、認証サーバーシステム、およびプログラム - Google Patents

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

Info

Publication number
JP6335657B2
JP6335657B2 JP2014112627A JP2014112627A JP6335657B2 JP 6335657 B2 JP6335657 B2 JP 6335657B2 JP 2014112627 A JP2014112627 A JP 2014112627A JP 2014112627 A JP2014112627 A JP 2014112627A JP 6335657 B2 JP6335657 B2 JP 6335657B2
Authority
JP
Japan
Prior art keywords
client
user
authority
service
authorization
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.)
Active
Application number
JP2014112627A
Other languages
English (en)
Other versions
JP2015228068A (ja
Inventor
小林 真琴
真琴 小林
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 JP2014112627A priority Critical patent/JP6335657B2/ja
Priority to US14/723,037 priority patent/US10003587B2/en
Publication of JP2015228068A publication Critical patent/JP2015228068A/ja
Application granted granted Critical
Publication of JP6335657B2 publication Critical patent/JP6335657B2/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/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/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • G06F21/335User authentication using certificates for accessing specific resources, e.g. using Kerberos tickets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3271Cryptographic 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 using challenge-response
    • H04L9/3273Cryptographic 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 using challenge-response for mutual authentication

Description

ユーザーの権限を別の主体に移譲する認可を行う権限委譲システム、方法、認証サーバーシステム、およびプログラムに関する。
近年インターネット上でPDF形式の電子文書を作成するサービスや電子文書を蓄積するサービス等が提供されている。このようなサービスを利用することでユーザーは、自身が所有する端末自体にPDF作成機能がない場合でもPDFを作成できるようになる他、端末の記憶容量以上に電子文書を保管できるようにもなる。さらに近年、クラウドが一般化するに伴い、前述のような複数のサービスを連携させて付加価値を創造する機会はますます増加している。サービスを連携させることでサービス提供者は、ユーザーに付加価値を提供することができる。例えば作成したPDF形式の電子文書を、ユーザーが所有する端末を経由することなく、直接インターネット上で保管できるようにもなる。その一方で、サービスが連携することにより、いくつかの課題が生まれる。
すなわち、ユーザーが望んだ以上の情報がサービス間で交換されるので、ユーザーデータや個人情報の漏えいリスクがある。例えばインターネット上には複数のサービスが存在し、様々なサービス間でサービス連携が実現されるが、ユーザーが望む結果を提供するサービス以外のサービスがユーザーデータ、個人情報等を取得することは望ましくない。一方で、サービスの提供者からすると、サービス連携の仕組みは容易に実装できるものが好ましい。
このような状況において、OAuth(非特許文献1)と呼ばれる、認可の連携を実現させるための標準プロトコルが策定されている。OAuthについては以降でさらに詳細に説明する。OAuthによれば、例えばあるサービスAが管理するユーザーのデータに、そのユーザーから認められた外部サービスBがアクセスすることができる。このときサービスAは、外部サービスBからアクセスされる範囲を明らかにした上で、外部サービスBによるアクセスに対してユーザーの明示的な認可を得ることになっている。ユーザーが明示的に認可を行うことを認可操作と称する。
ユーザーが認可操作を行うと、外部サービスBはサービスAからアクセスを認められたことを証明するトークン(以下、アクセストークンと称する)を受け取り、以降のアクセスはそのアクセストークンを用いて実現できる。ここでアクセストークンを用いると外部サービスBは、ユーザーを認証したことを示す情報なしに、認可を行ったユーザーの権限でサービスAにアクセスできる。またそのため、ユーザーから認可を受けアクセストークンを取得した外部サービスBは、そのアクセストークンを厳重かつ適正に管理する責務を負う。
また近年の機器には、OAuthを用いて、クラウドサービスと連携することでユーザーに付加価値を提供するものがある。例えばソーシャル・ネットワーキング・サービス(以下、SNSと呼ぶ)と呼ばれるサービスがある。これらのサービスはスマートフォンから利用することができる。SNSには様々なものがあるが、特定のアプリケーションをスマートフォンにインストールして利用することで、そのSNSを利用しやすくなることがある。例えば定期的に自分の居場所をSNSに投稿したいユーザーは、スマートフォンの測位機能を使い、定期的に測位とSNSへの投稿を行うアプリケーションを利用すると、便利と感じるだろう。ここでスマートフォンにインストールされたアプリケーションは、SNSにユーザーの代理でアクセスすることになる。このような場合にOAuthが利用されることがある。ユーザーは、SNSを利用するのに必要な最小限の機能、例えば記事を投稿することをアプリケーションに許可することで、アプリケーションを介してSNSを利用できるようになる。
ところでOAuthにおいては、JavaScript(登録商標)の様なスクリプト言語によるブラウザー上で実行されるクライアントに最適化されている、インプリシットグラントと呼ばれるアクセストークン取得のフローが定義されている。インプリシットグラントタイプにおけるクライアントは、リソースオーナーの認可後、アクセストークン取得のための仲介のクレデンシャルである認可コードではなく、直接アクセストークンを受け取る。このグラントタイプは、認可コードのようなアクセストークン取得を仲介するクレデンシャルを利用しないため、インプリシットグラントと呼ばれる。現状Webブラウザーから上述したサービスを利用する場合、認証したことを示す情報をCookie等でログインセッションを引き回し、OAuthのような認可確認を明示的に行わない実装もおこなわれている。さらに、現在WebブラウザーからもjQuery等を用いたAPIアクセスで前記クラウドサービスと連携するサービスを利用する形態がデファクトスタンダードになりつつある。この背景としては、モバイルの普及やブラウザーOSの登場といったトレンドが影響している。
"The OAuth 1.0 Protocol"、[online] E. Hammer−Lahav、2012年9月 <URL http://tools.ietf.org/html/rfc5849>
現在スタンダードな手法になりつつあるjQueryを用いたAPIアクセスによりクラウドサービスを利用する形態の場合、認可フローとしてOAuthを使用することになる。その場合、例え、クライアントアプリケーションとクラウド上のサーバーアプリケーションが共に自社製のアプリケーションでも、ユーザーの利便性を損なうような認可確認が必要になる。その他の課題として、Webブラウザーをクライアントとするようなアプリケーションにおいても同様に、ユーザーの利便性を損なうような認可確認が必要になる。
本発明の目的の1つは、上述した課題の少なくとも1つの課題を解決することが可能な権限移譲システムの提案である。
本発明の一実施形に係る権限移譲システムは、クライアントから利用可能なサービスを備えるサーバーシステムと、前記サービスを利用するクライアントとを含む権限移譲システムであって、前記クライアントにて表示される認証画面を介しユーザーから入力された認証情報を基に、前記ユーザーが正規なユーザーであるか否かを判断する認証手段と、前記認証手段により正規なユーザーであると判断された前記ユーザーが前記クライアントにて表示される認可確認画面を介し、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示をした場合に、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行する発行手段と、前記クライアントが前記サービスの利用を要求した際に送信する前記権限情報を基に、前記クライアントが前記ユーザーの権限で前記サービスを利用することを認可する認可手段と、前記サービスのドメインと、前記権限情報を前記クライアントに取得させるためのエンドポイントのドメインとが同一のドメインであるか否かを判断する判断手段とを有し、前記発行手段は、前記判断手段により2つのドメインが同一のドメインであると判断されたことに応じて、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示を受け付けることなく、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行することを特徴とする。
ユーザーの利便性を損なうような認可確認を省略することができる。
実施例1のシステム構成図。 実施例1の各装置のハードウェア構成図。 実施例1の各装置のモジュール構成図。 実施例1の認可確認省略可能な認可フロー図。 実施例1の認可サーバー処理のフローチャート。 実施例1のログインおよび認可確認画面。 実施例1の認可クライアントのスクリプト処理のフローチャート。 実施例2のシステム構成図。 実施例2の核装置のモジュール構成図。 実施例2の認可確認省略可能な認可フロー図。 実施例2の認可クライアントのアプリケーション処理のフローチャート。 実施例3の認可確認省略可能な認可フロー図。 実施例3の認可サーバー処理のフローチャート。 実施例3のWeb−Hosted Client処理のフローチャート。 実施例3の認可クライアントのスクリプト処理のフローチャート。 実施例4の認可サーバー処理のフローチャート。 実施例4の各装置のモジュール構成図。 実施例4のWeb−Hosted Client処理のフローチャート。 実施例3の各装置のモジュール構成図。
以下、本発明を実施するための最良の形態について図面を用いて説明する。
本実施の形態においては、インターネット上で帳票データを生成する帳票サービスと、インターネット上のデータを取得して印刷する印刷サービスが、インターネット上のサーバーに設置されていることを想定している。以降、帳票サービスや印刷サービスのように、インターネット上で機能を提供しているサービスを、リソースサービスと呼ぶ。
また本実施の形態においては、画像形成装置上にインストールされた印刷アプリケーションおよび帳票アプリケーションがリソースサービスを利用することを想定している。以降、印刷アプリケーションや帳票アプリケーションのように、リソースサービスを利用するアプリケーションを、リソースサービス連携アプリケーションと呼ぶ。無論、リソースサービスは帳票サービス、印刷サービスには限られず、アプリケーションも帳票アプリケーション、印刷アプリケーションに限られるものではない。
さらに本実施の形態における権限の移譲ではOAuthの仕組みを利用する。OAuthでは、ユーザーから移譲された権限の証明をするための情報として、トークンと呼ばれる情報を利用する。トークンは英数字から構成されるものであるがその表記方法は自由である。トークンを始めとする、ユーザーからクライアントに対して移譲された権限を示す情報を権限情報とここでは呼ぶ。
リダイレクトURIがサービスの利用元であるクライアントと同一ドメインの場合の認可確認画面スキップについて説明する。OAuthにおけるクライアントが第三者のサービスではなくWebブラウザーであるため、Webブラウザーを介して認証操作さえ行われればサービスの利用元が明確になり、Webブラウザーとサービスのドメインが同一とみなすことができるので認可確認画面スキップを行う。
本実施の形態に係る権限移譲システムは、図1に示すような構成のネットワーク上に実現される。100は、Wide Area Network(WAN100)であり、本発明ではWorld Wide Web(WWW)システムが構築されている。101、102は各構成要素を接続するLocal Area Network(LAN101、LAN102)である。
500はOAuthを実現するための認可サーバーであり、認可サービスモジュールが設置されている。300はOAuthにおけるWeb−Hostedクライアントリソースを実装するWeb−Hostedクライアントである。本実施例では、Web−Hostedクライアント300は認可サーバー500からクライアントPC200向けのアクセストークンの応答先のリダイレクトURIとして指定される。400はリソースサーバーであり、印刷サービスや帳票サービスといったリソースサービス連携アプリケーションが設置されている。なお1台のリソースサーバーに設置されるリソースサービス連携アプリケーションは1つでもよく、複数でもよい。200はユーザーが操作するクライアントPCであり、クライアントPC上のWebブラウザーを後述するクライアントスクリプトを実行し、400のリソースサーバーのリソースを用いて印刷サービスや帳票サービスといったサービスを利用する。
本実施例の特徴として、本Web−Hostedクライアント300、クライアントPCから利用可能なサービスを備えたリソースサーバー400が、認可サーバー500と同一のLAN101に接続されていることが挙げられる。Web−Hostedクライアント300、リソースサーバー400、認可サーバー500がWAN100を介さずに接続されている。このため、本実施例においてはこれらを同一ドメインとみなし、Web−Hostedクライアント300とリソースサーバー400のサービス連携を同一の認証で賄うことを特徴とする。即ち、認可サーバー500が、Web−Hostedクライアント300とリソースサーバー400の両方の認証・認可を行うので、ユーザーは一度だけ認証・認可すれば両方を利用できるということになる。
またクライアントPC200、Web−Hostedクライアント300、リソースサーバー400はそれぞれWANネットワーク100およびLAN101、LAN102を介して接続されている。なおクライアントPC200およびそれぞれのサービスはそれぞれ個別のLAN上に構成されていてもよいし同一のLAN上に構成されていてもよい。また同一のPC上に構成されていてもよい。また、Web−Hostedクライアント300、リソースサーバー400、認可サーバー500は夫々1台のサーバーとして実施例1では説明するが、夫々のサーバーが複数台のサーバー群で構成されていても良い。そこで、サーバーシステムと称した場合、サーバーが1台または複数台のサーバー群で構成される場合の両方を含むものとする。よって、認証サーバーシステムと称した場合、1台または複数台で構成される認証サーバーということになる。
図2は本実施の形態に係るクライアントPC200の構成を示す図である。またWeb−Hostedクライアント300、リソースサーバー400、認可サーバー500のサーバーコンピューターの構成も同様である。尚、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当するものとし、本実施形態のクライアントPC200およびサーバーコンピューターには一般的な情報処理装置のハードウェア構成を適用できる。
図2において、CPU201は、ROM203のプログラム用ROMに記憶された、或いはハードディスク211からRAM202にロードされたOSやアプリケーション等のプログラムを実行する。ここでOSとはコンピュータ上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをOSと呼ぶ。後述する各フローチャートの処理はこのプログラムの実行により実現できる。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。キーボードコントローラ(KBC)205は、キーボード(KB)209や不図示のポインティングデバイスからのキー入力を制御する。CRTコントローラ(CRTC)206は、CRTディスプレイ210の表示を制御する。ディスクコントローラ(DKC)207は各種データを記憶するハードディスク(HD)211やフロッピー(登録商標)ディスク(FD)等におけるデータアクセスを制御する。NC212はネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。
尚、後述の全ての説明においては、特に断りのない限り実行のハード上の主体はCPU201である。また、モジュールやアプリケーションと言ったソフトウェア上の主体は、ハードディスク(HD)211にインストールされたアプリケーションプログラムがCPU201により実行されることで実現するソフトウェア機能である。
図3は本実施の形態に係る、認可サーバー500、リソースサーバー400、クライアントPC200、Web−Hostedクライアント300の、それぞれのモジュール構成を示す図である。夫々のモジュールはCPU201により実行されることで実現するソフトウェア機能である。
認可サーバー500は認可サーバーモジュール510を持ち、認可サーバーモジュール510はユーザー識別部601、クライアント検証部520、トークン発行部530、トークン検証部540を持つ。リソースサーバー400はリソースサーバーモジュール410を持ち、リソースサーバーモジュール400はトークン権限確認部420とリソース要求処理部430を持つ。クライアントPC200はCPU201がROM202、或いは外部メモリ203に記憶されたOSを実行する事で各アプリケーションを制御する。
ここで220はそのOSであり、一般的にはリアルタイムOSが使用されるが、昨今ではLinux(登録商標)等の汎用OSが使用される事もある。さらに、クライアントPC200はWWWを利用するためのユーザーエージェントであるWebブラウザー230を備える。Web−Hostedクライアント300は、Web−Hostedクライアントモジュール310を持つ。Web−Hostedクライアントモジュール310は、クライアントPC200からのアクセストークン応答のリダイレクトURIリクエストを受信し、後述するアクセストークン取得とリソースリクエストを行うクライアントスクリプト320を返す機能を持つ。
以下に示すTable1、Table2、Table3は認可サーバー500が外部メモリに記憶するデータテーブルである。これらデータテーブルは、認可サーバー500の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。
Figure 0006335657
Table1はユーザー管理テーブルである。Table1ユーザー管理テーブルは、ユーザーID、パスワード、ユーザー種別から成る。認可サーバー500は、ユーザーID、パスワードの情報の組、即ち認証情報を検証し、正規の組み合わせであれば認証したことを示す情報を生成することで、各ユーザーもしくはクライアントを認証する機能を備える。
Figure 0006335657
Table2はクライアント管理テーブルである。Table2クライアント管理テーブルはクライアントID、クライアント名、リダイレクトURIから成る。クライアントID、クライアント名、リダイレクトURIは後述のOAuthのシーケンスで利用される値である。
Figure 0006335657
Table3はトークン管理テーブルである。Table3トークン管理テーブルは、トークンID、有効期限、スコープ、クライアントID、ユーザーIDから成る。これらTable3トークン管理テーブルの処理詳細については後述する。
ここで、クライアントPC200上のブラウザープリケーションを用いてリソースサービスを利用する際に行われる認可フローのシーケンスについて、図4を用いて説明する。OAuth2.0の仕様では、多様なクライアントに応じた複数のプロトコルシーケンスをgrant typeと呼ぶ。図4の認可フローは、OAuth2.0仕様のimplicit grantに本実施例独自の拡張を加えたgrant typeである。
まず、保護されたリソースへのアクセスが必要になるユーザーからの認可連携サービス開始要求が発生する(S4.1)。本サービス要求は、リソースオーナー1000であるユーザーがリソースサーバー400に対し、リソースオーナー1000が操作するユーザーエージェントたるクライアントPC200上のブラウザーアプリケーションを介してHTTPプロトコルを用いて行う。具体的には、リソースオーナー1000たるユーザーはクライアントPC200を操作してリソースサーバー400のアプリケーション画面(不図示)にアクセスする(S4.1)。このアプリケーション画面は例えば、リソースサーバー400のリソース連携アプリケーションが印刷アプリケーションであった場合は印刷する文書を選択する画面である。帳票アプリケーションであった場合は、作成する帳票を選択する画面である。ここでアプリケーション画面にアクセスするとは、例えば、クライアントPC200上のブラウザー上に前記アプリケーション画面が選択可能に表示されており、当該アプリケーションを選択する事を指す。当該アプリケーションを選択することにより、リソースオーナー1000はリソースサーバー400に対して認可連携サービス開始要求を送信する(S4.1)。
なお本実施例においてはリソース連携アプリケーションをリソースサーバー400上としている。しかし一般に、リソース連携アプリケーションはリソースサーバー400とは別の、クライアントアプリケーションサーバーなどに存在しても良い。本実施例ではリソースサービス連携アプリケーションとして印刷Webアプリケーション、帳票Webアプリケーションといったリソースサービスと連携するクライアントアプリケーションが設置されている。なお1台のリソースサーバーに設置されるリソースサービス連携アプリケーションは1つでもよく、複数でもよい。
次に、リソースサーバー400は、前記認可連携サービス開始要求(S4.1)により認可連携の開始を受け付けたる。受け付けたことに応じて、リソースサーバー400の持つ認可サーバー500の認証エンドポイントのURLに対して、Cookieとしてリソースサーバー400のFQDNのドメイン名であるドメインをdomain=example.comのようにセットする(S4.2)。そしてOAuthの認可リクエストをするよう、クライアントPC200のブラウザーにHTTP/1.1ステータスコード302のリダイレクト要求する(S4.3)。本リダイレクト要求のHTTP Locationヘッダーにはリソースサーバー400のID、認証フローのタイプ、認可サーバー500の認証エンドポイントのURLが含まれ、以下のようなリダイレクト要求となる。
https://auth.a01.example.com/authorize?response_type=token&client_id=ztr1JhRGa5&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
&scope=scopeA
HTTPメソッド: GET
Content−Type: application/x−www−form−urlencoded
リクエストパラメーターには、response_typeとして“token”固定文字列、client_idとして予めクライアントアプリケーションとして認可サーバー500に登録したリソースサーバー400上のクライアントアプリケーションのアプリケーションIDを指定する。さらに、redirect_uriとして予めクライアントアプリケーションとして認可サーバー500に登録したWeb−Hostedクライアント300のURLを指定する。即ち、このredirect_uriのエンドポイントが、権限情報であるアクセストークンをクライアントに取得させるためのスクリプトを生成するWeb−Hotestedクライアント300のアドレスと言える。また、OAuthでは、認可を受けたい権限範囲を示すスコープを認可リクエストに含むよう構成する事もできる。本実施例では、スコープとしてスコープAがリクエストされたとして説明する。
次に、リダイレクト要求を受信したクライアントPC200は、上記リダイレクト要求に従い認可サーバー500に対してユーザー認証、認可の要求を行う(S4.5)。認可リクエストを受け付けた認可サーバー500は、ユーザーを認証するために図6aに示すログイン画面2000をクライアントPC200上のブラウザーに応答する(S4.6)。リソースオーナー1000であるユーザーはクライアントPC200上のブラウザーに示されたログイン画面2000に対して、ユーザーID、パスワードを入力しログインを実行する(S4.7)。認可サーバー500は受け付けたユーザーID、パスワードの組が前記Table1ユーザー管理テーブルに登録されている情報と合っているかを検証する。ここで以下に示す図5a、5bのフローチャートを用いて、ユーザー認証画面表示(S4.6)、ユーザー認証(S4.7)、リダイレクトURIとCookieのドメインパラメーター比較(S4.8)について説明する。また本実施例の特徴である、認可確認画面表示(S4.9)、認可確認(S4.10)の省略について、およびアクセストークン応答(S4.11)について説明する。
図5aは、前記認可サーバー500がユーザー認証、認可の要求を受け付けた際の、認可サーバー500上の認可サーバーモジュール510の処理フローチャートである。本フローチャートは、認可サーバーモジュール510が前記クライアントPC200からの前記リダイレクト要求を受信することで始まる(ステップS5.1)。認可サーバーモジュール510は、ユーザーを認証するために図6aに示すログイン画面2000をクライアントPC200上のブラウザーに応答する。リソースオーナー1000であるユーザーはクライアントPC200上のブラウザーに示されたログイン画面2000に対して、ユーザーID、パスワードを入力しログインを実行する(S4.7)。認可サーバー500は受け付けたユーザーID、パスワードの組が前記Table1ユーザー管理テーブルに登録されている情報と合っているかを検証する。(ステップS5.2)検証の結果、ユーザーID、パスワードの組がTable1ユーザー管理テーブルに登録されていなければ(ステップS5.3)、クライアントPC200にユーザー認証エラー画面(図示せず)を通知して処理を終了する(ステップS5.8)。もし前記検証の結果ユーザーID、パスワードの組がTable1ユーザー管理テーブルに登録されていれば(ステップS5.3)、次に認可確認処理(ステップS5.4)を行う。
図5bは、本実施例における認可サーバー500上の認可サーバーモジュール510の認可確認処理のフローチャートである。認可サーバーモジュール510は、本認可確認処理においてステップS5.1にて受信した前記クライアントPC200からの前記リダイレクト要求のリクエストパラメーターを確認する(ステップS5.9)。またリクエストに含まれるCookieのドメインパラメーター、例えばdomain=example.comを取得する(ステップS5.10)。ここで認可サーバーモジュール510は、Table2クライアント管理テーブルを参照し、リダイレクト要求のリクエストパラメーターのclient_id、redirect_uriの値が前記Table2クライアント管理テーブルに含まれるかどうかを確認する(ステップS5.11)。
ここでもし、前記リダイレクト要求のリクエストパラメーターのclient_id、redirect_uriの値が前記Table2クライアント管理テーブルに含まれなければ、認可サーバーモジュール510は認可確認失敗を返却して処理を終了する(ステップS5.16)。もし前記リダイレクト要求のリクエストパラメーターのclient_id、redirect_uriの値が前記Table2クライアント管理テーブルに含まれていれば、認可サーバーモジュール510は次に前記ステップS5.10で取得したCookieのドメインパラメーターを参照し、前記リクエストパラメーターのredirect_uriのドメインと一致するかどうかを比較する(S5.12)。
本実施例の場合、Cookieのドメインパラメーターがdomian=example.comよりexample.comがドメインとなる。また、前記リクエストパラメーターのredirect_uriはURLデコードを行うとredirect_uri=https://client.example.com/cbよりexample.comがドメインとなる。よって認可確認画面をクライアントPC200に返却せず、認可確認成功を返す(ステップS5.13)。
Cookieのドメインパラメーターのドメインと、リクエストパラメーターのredirect_uriのドメインが異なっていた場合(ステップS5.12)、前記認可サーバーモジュール510は前記クライアントPC200に図6bに示す認可確認画面を返却する(ステップS5.14)。ここで前記認可サーバーモジュール510は、前記クライアントPC200からの応答を待ち、もし認可確認に失敗したならば(ステップS5.15)、認可確認失敗を返却して処理を終了する(ステップS5.16)。またもし認可確認に成功したならば(ステップS5.15)、認可確認成功を返却して処理を終了する(ステップS5.13)。
図5aにて、図5bに示される前記認可確認処理(ステップS5.4)が終了した後、認可確認が失敗したならば(ステップS5.5)、クライアントPC200にユーザー認証エラー画面(図示せず)を通知して処理を終了する(ステップS5.8)。もし前記認可確認処理(ステップS5.4)が成功したならば(ステップS5.5)、認可サーバーモジュール510は、リソースサーバー400へのアクセスを可能にするアクセストークンを生成するアクセストークン発行処理(ステップS5.6)を行う。
生成したアクセストークンは、前記Table3トークン管理テーブルに登録する。即ち、アクセストークン文字列「AT_000001」をトークンIDに格納する。また認可サーバーで予め定められたアクセストークンの有効期限を有効期限に格納する。また前記トークンテーブルに登録済みの認証トークンのレコードに含まれるスコープ情報をスコープに、ユーザーIDをユーザーIDに格納する。このように、認可サーバー500は、ユーザーによる明示的な認可確認を行わず、リソースサーバー400へのリソースアクセスを可能にするアクセストークン「AT_000001」を発行する(ステップS5.7)。これはWeb−Hostedクライアント300、リソースサーバー400、認可サーバー500がWAN100を介さずに接続されているためである。本実施例においてはLAN101を校内とみなし、これらを同一セキュリティドメインとみなす。
ここで認可サーバーモジュール510がクライアントPC200に送信するアクセストークンの応答(S4.11)は、以下のようにOAuth2.0仕様に従う。すなわちapplication/x−www−form−urlencodedフォーマットを用いてリダイレクトURIのフラグメントコンポーネントに例えば以下のようなパラメーターを付与してクライアントPC200に応答を送信する。
HTTP/1.1 302 Found
Location: http://client.example.com/cb#access_token=AT_000001&state=xyz
&token_type=example&expires_in=3600
上記のようにアクセストークン応答に付与されるパラメーターは、OAuth2.0仕様によるとaccess_token、token_type、expires_in、scope、stateである。本実施例のようなImplicit grant認可フローのアクセストークン応答(S4.11)は、クライアントPC200のWebブラウザー230にアクセストークンを取得させるため、ホスト機能として実現されるWeb−Hostedクライアント300に向けて一旦リダイレクトするようになる。アクセストークン応答を受信した前記クライアントPC200上のWebブラウザー230は、Web−Hostedクライアント300に前記アクセストークン応答をリダイレクトする(S4.12)。ここで、S4.12のリダイレクトは、HTTPの仕様によりフラグメントコンポーネントのパラメーターを含まない。
リダイレクトを受信したWeb−Hostedクライアント300のWeb−Hostedクライアントモジュール310は、前記クライアントPC200上の前記Webブラウザー230にて前記アクセストークンを取得するためのスクリプトを含む応答を返す(S4.13)。上記スクリプトは一般に、Webブラウザー230で実行可能なJavaScript(登録商標)であるが、その他ブラウザー上で実行可能なスクリプトであっても良い。上記アクセストークン取得スクリプトを受信した前記Webブラウザー230上で動作するクライアントスクリプト220は、スクリプトを実行することでアクセストークンを取得し(S4.14)、リソースサーバー400にアクセスすることができる(S4.15)。
図7は、上記アクセストークンを取得しリソースサーバーにアクセスするためのスクリプトのフローチャートである。前記Web−Hostedクライアントからスクリプトを受信したクライアントPC200上のWebブラウザー230が本フローチャートを実行する。まず上記Webブラウザー230は、前記アクセストークン応答(S4.7)のリダイレクト先であるURIに紐付くquery stringをパースし、フラグメントの値を取得する(ステップS7.4)。例えば本実施例のJavaScript(登録商標)においては、location.hash関数を用いてWeb−Hostedクライアント300にリダイレクトされた前記アクセストークン応答のフラグメントコンポーネントの値を取得する。さらに上記取得したフラグメントコンポーネントに含まれるアクセストークンaccess_token=AT_000001を取得する(ステップS7.5)。そして、本スクリプトの実行により前記Webブラウザー230は、上記取得したアクセストークンを用いてリソースサーバー400にアクセスする(ステップS7.6)。
図7のフローチャートにより前記Webブラウザー230上で動作する前記スクリプトは、前記S4.13、S4.14において前記アクセストークン「AT_000001」、スコープ「リソースA」を受け取る。そして、リソースサーバー400に対して前記アクセストークン「AT_000001」、スコープ「リソースA」をリクエストパラメーターに含めてリソースアクセス要求を行う(S4.15)。
アクセストークン情報「AT_000001」、スコープ「リソースA」を取得したリソースサーバー400は、取得した情報を元に要求を受け付けたリソースに対するアクセスを許可するか拒否するかを判断する。ここでは、リソースサーバー400に予めアクセス可能なアプリケーションIDが設定されているとし、その設定されているアプリケーションIDと、アクセストークン情報「AT_000001」から取得されたアプリケーションIDを比較することでアクセスを許可するかを検証する。本検証は、リソースサーバー400が認可サーバー500に対し、アクセストークン「AT_000001」、スコープ「リソースA」を引数にしてトークン情報を取得することで行われる(S4.16)。認可サーバー500では、Table3トークン管理テーブルを参照し、取得したアクセストークン「AT_00001」の有効期間が切れていないこと、要求されているスコープ「リソースA」がスコープ範囲内であることを検証し、問題がなければ検証の成功を返す(S4.17)。この結果、アクセス許可と判断された場合は、リソースサーバー400は、Webブラウザー230に対して、リソースを応答する(S4.18)。ここで、リソースは例えば、リソースサーバー400が印刷サービスであった場合は印刷可能な文書のリストであり、帳票サービスであった場合は、作成可能な帳票のリストである。
ここで、S4.16から、S4.17まで、トークンの検証を認可サーバー500、リソースサーバー400それぞれで行うよう説明したが、リソースに対するアクセス可能なアプリケーションを認可サーバー500で管理し、全ての検証を認可サーバー500で行うよう構成する事も可能である。また、本実施例ではアクセス可能なアプリケーションの判断をアプリケーションIDを用いて実施するよう説明したが、トークン情報から取得できるシリアル番号やクライアントIDを元にクライアントPC200上のWebブラウザー230を識別し、アクセスの可否を判断するよう構成する事もできる。また、同様に、トークン情報から特定できるスコープやユーザーIDを元にアクセスの可否を判断するよう構成する事もできる。リソース応答を受け付けたクライアントPC200上のWebブラウザー230は、受信したデータを元に前述のアプリケーション画面を構成し、リソースオーナー1000たるユーザーに応答する(S4.18)。
以上が実施例1の説明となる。本実施例により、Webブラウザーがサービスと連携するクライアントとなる場合であって、そのWebブラウザーがJQueryを利用することによりサービスとAPIを介した通信を行う権限移譲システムにおいて、認可操作を省略することが可能になる。
リダイレクトURIが同一ドメインの場合の認可確認画面スキップにおいて、クライアントアプリケーションがアクセストークンを奪取する場合の形態について説明する。実施例1に示した方法と構成が異なり、Web−Hostedクライアント300を用いずクライアントPC200上のWebアプリケーション240でアクセストークンを取得する例を以下に詳述する。なお実施例1と同一の構成となる部分については実施例1の参照部分を示す。Webアプリケーション240は汎用的なWebブラウザーではなく、実施例2ではリソースサーバー400を提供するベンダーが制作したWebアプリケーション240を想定している。即ち、Webアプリケーション240とリソースサーバー400は同一ドメインであるとみなせる。よって、Webアプリケーション240を介して認証さえされれば、前記Webアプリケーション240にユーザーの権限を移譲することを許可する指示、即ち、認可操作を省略しても良いことになる。
本実施の形態に係る権限移譲システムは、図8に示すような構成のネットワーク上に実現される。100は、Wide Area Network(WAN100)であり、本発明ではWorld Wide Web(WWW)システムが構築されている。101、102は各構成要素を接続するLocal Area Network(LAN101、LAN102)である。
500はOAuthを実現するための認可サーバーであり、認可サービスモジュールが設置されている。400はリソースサーバーであり、印刷サービスや帳票サービスといったリソースサービス連携アプリケーションが設置されている。なお1台のリソースサーバーに設置されるリソースサービス連携アプリケーションは1つでもよく、複数でもよい。200はユーザーが操作するクライアントPCであり、クライアントPC上のWebアプリケーション240を実行し、400のリソースサーバーのリソースを用いて印刷サービスや帳票サービスといったサービスを利用する。本実施例の特徴として、リソースサーバー400が、認可サーバー500と同一のLAN101に接続されていることが挙げられる。リソースサーバー400、認可サーバー500がWAN100を介さずに接続されている。
またクライアントPC200、リソースサーバー400はそれぞれWANネットワーク100およびLAN101、LAN102を介して接続されている。なおクライアントPC200およびそれぞれのサービスはそれぞれ個別のLAN上に構成されていてもよいし同一のLAN上に構成されていてもよい。また同一のPC上に構成されていてもよい。
図2は本実施の形態に係るクライアントPC200の構成を示す図である。またリソースサーバー400、認可サーバー500のサーバーコンピューターの構成も同様である。尚、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当するものとし、本実施形態のクライアントPC200およびサーバーコンピューターには一般的な情報処理装置のハードウェア構成を適用できる。図2の詳細については実施例1と同様である。
図9は本実施の形態に係る、認可サーバー500、リソースサーバー400、クライアントPC200の、それぞれのモジュール構成を示す図である。なお認可サーバー500、リソースサーバー400、クライアントPC200は、図8のものと同一である。認可サーバー500は認可サーバーモジュール510を持ち、認可サーバーモジュール510はユーザー識別部601、クライアント検証部520、トークン発行部530、トークン検証部540を持つ。リソースサーバー400はリソースサーバーモジュール410を持ち、リソースサーバーモジュール400はトークン権限確認部420とリソース要求処理部430を持つ。クライアントPC200はCPU201がROM202、或いは外部メモリ203に記憶されたOSを実行する事で各アプリケーションを制御する。ここで220はそのOSであり、一般的にはリアルタイムOSが使用されるが、昨今ではLinux(登録商標)等の汎用OSが使用される事もある。さらに、クライアントPC200はWWWを利用するためのユーザーエージェントであるWebアプリケーション240を備える。Webアプリケーション240は、認可サーバー500からのアクセストークン応答のリダイレクトURIリクエストを受信し、後述するアクセストークン取得&リソースリクエストを実行する機能を持つ。
実施例1で示したユーザー管理テーブルTable1、クライアント管理テーブルTable2、トークン管理テーブルTable3は、実施例2においても同様に認可サーバー500が外部メモリに記憶するデータテーブルである。これらデータテーブルは、認可サーバー500の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。
ここで、リソースサービス連携アプリケーションを用いてリソースサービスを利用する際に行われる認可フローのシーケンスについて、図10を用いて説明する。OAuth2.0の仕様では、多様なクライアントに応じた複数のプロトコルシーケンスをgranttypeと呼ぶ。図10の認可フローは、OAuth2.0仕様のimplicit grantに本実施例独自の拡張を加えたgrant typeである。
まず、保護されたリソースへのアクセスが必要になるユーザーからの認可連携サービス開始要求が発生する(S10.1)。本サービス要求は、リソースオーナー1000であるユーザーがリソースサーバー400に対し、リソースオーナー1000が操作するユーザーエージェントたるクライアントPC200上のWebアプリケーション240を介してHTTPプロトコルを用いて行う。具体的には、リソースオーナー1000たるユーザーはクライアントPC200上のWebアプリケーション240を操作してリソースサーバー400のアプリケーション画面(不図示)にアクセスする(S10.1)。
このアプリケーション画面は、例えば、リソースサーバー400のリソース連携アプリケーションが印刷アプリケーションであった場合は印刷する文書を選択する画面であり、帳票アプリケーションであった場合は、作成する帳票を選択する画面である。ここでアプリケーション画面にアクセスするとは、例えば、クライアントPC200上のWebアプリケーション240上に前記アプリケーション画面が選択可能に表示されており、当該アプリケーションを選択する事を指す。当該アプリケーションを選択することにより、リソースオーナー1000はリソースサーバー400に対して認可連携サービス開始要求を送信する(S10.1)。なお本実施例においてはリソース連携アプリケーションをリソースサーバー400上としている。しかし一般に、リソース連携アプリケーションはリソースサーバー400とは別の、クライアントアプリケーションサーバーなどに存在しても良い。本実施例ではリソースサービス連携アプリケーションとして印刷Webアプリケーション、帳票Webアプリケーションといったリソースサービスと連携するクライアントアプリケーションが設置されている。なお1台のリソースサーバーに設置されるリソースサービス連携アプリケーションは1つでもよく、複数でもよい。
次に、リソースサーバー400は、前記認可連携サービス開始要求(S10.1)により認可連携の開始を受け付けたら、リソースサーバー400の持つ認可サーバー500の認証エンドポイントのURLに対して、Cookieとしてリソースサーバー400のFQDNのドメイン名であるドメインをdomain=example.comのようにセットする(S10.2)。そしてOAuthの認可リクエストをするよう、クライアントPC200上のWebアプリケーション240にHTTP/1.1ステータスコード302のリダイレクト要求する(S10.3)。本リダイレクト要求のHTTP Locationヘッダーにはリソースサーバー400のID、認証フローのタイプ、認可サーバー500の認証エンドポイントのURLが含まれ、以下のようなリダイレクト要求となる。
https://auth.a01.example.com/authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
&scope=scopeA
HTTPメソッド: GET
Content−Type:application/x−www−form−urlencoded
リクエストパラメーターには、response_typeとして“token”固定文字列、client_idとして予めクライアントアプリケーションとして認可サーバー500に登録したリソースサーバー400上のクライアントアプリケーションのアプリケーションID、redirect_uriとして予めクライアントアプリケーションとして認可サーバー500に登録したURLを指定する。また、OAuthでは、認可を受けたい権限範囲を示すスコープを認可リクエストに含むよう構成する事もできる。本実施例では、スコープとしてスコープAがリクエストされたとして説明する。
次に、リダイレクト要求を受信したクライアントPC200上のWebアプリケーション240は、上記リダイレクト要求のresponse_type、client_id、state、redirect_uri、scopeの各パラメーターを保存する。そして上記リダイレクト要求に従い認可サーバー500に対してユーザー認証、認可の要求を行う(S10.5)。認可リクエストを受け付けた認可サーバー500は、ユーザーを認証するためにログイン画面(図示せず)をクライアントPC200上のWebアプリケーション240に応答する(S10.6)。リソースオーナー1000であるユーザーはクライアントPC200上のWebアプリケーション240に示されたログイン画面に対して、ユーザーID、パスワードを入力しログインを実行する(S10.7)。認可サーバー500は受け付けたユーザーID、パスワードの組が前記Table1ユーザー管理テーブルに登録されている情報と合っているかを検証する。
ここで以下のユーザー認証画面表示(S10.6)、ユーザー認証(S10.7)、リダイレクトURIとCookieのドメインパラメーター比較(S10.8)については実施例1で示した図5a、5bのフローチャートと同様のフローとなるので説明を省略する。また本実施例の特徴である、認可確認画面表示(S10.9)、認可確認(S10.10)の省略について、およびアクセストークン応答(S10.11)についても、実施例1で示した図5a、5bのフローチャートと同様のフローとなる。
ここで認可サーバーモジュール510がクライアントPC200に送信するアクセストークンの応答(S10.11)は、以下のようにOAuth2.0仕様に従う。すなわちapplication/x−www−form−urlencodedフォーマットを用いてリダイレクトURIのフラグメントコンポーネントに例えば以下のようなパラメーターを付与してクライアントPC200に応答を送信する。
HTTP/1.1 302 Found
Location: http://client.example.com/cb#access_token=AT_000001&state=xyz
&token_type=example&expires_in=3600
上記のようにアクセストークン応答に付与されるパラメーターは、OAuth2.0仕様によるとaccess_token、token_type、expires_in、scope、stateである。上記に示したように、本実施例のようなImplicit grant認可フローのアクセストークン応答(S10.11)は、一般にクライアントPC200のWebブラウザー230にアクセストークンを取得させるため、予め認可サーバー500に登録したリダイレクトURIに向けて一旦リダイレクトすることになる。しかし本実施例においては、このリダイレクト応答をWebアプリケーション240がリダイレクト応答をキャンセルして書き換えることで、後述するようにリソースサーバー400にアクセスするためのアクセストークン、スコープ等を直接取得する(S10.12)。
図11は、上記Webアプリケーション240の上記挙動を示すフローチャートである。Webアプリケーション240は、認可サーバー500からのアクセストークン応答を待ち受ける(ステップS11.1)。前記S10.11において認可サーバー500からアクセストークン応答(S10.11)を受信したら、Webアプリケーション240は、前記アクセストークン応答のHTTPレスポンス302NotFoundをクリアして200OKをセットする(ステップS11.2)。
ここで、前記Webアプリケーション240が、前記S10.1のアクセス試行時に保持したリクエストパラメーターに含むredirect_uriと、前記アクセストークン応答のLocationヘッダーに含まれるリダイレクト先が一致しているかどうか確認しても良い。さらに前記Webアプリケーション240は、前記アクセストークン応答のURLフラグメントコンポーネントからaccess_token、state、token_type、expires_inパラメーターを取得する(ステップS11.3)。そして前記Webアプリケーション240は上記取得したアクセストークンAT_000001を使用して、リソースサーバー400にリソースリクエストを送信する(ステップS11.4)。
上記図11のフローチャートにより前記Webアプリケーション240は、前記S10.11、S10.12において前記アクセストークン「AT_000001」を受け取る。そして、リソースサーバー400に対して前記アクセストークン「AT_000001」、S10.5で保存したスコープ「リソースA」をリクエストパラメーターに含めてリソースアクセス要求を行う(S10.13)。
アクセストークン情報「AT_000001」、スコープ「リソースA」を取得したリソースサーバー400は、取得した情報を元に要求を受け付けたリソースに対するアクセスを許可するか拒否するかを判断する。ここでは、リソースサーバー400に予めアクセス可能なアプリケーションIDが設定されているとている。その設定されているアプリケーションIDと、アクセストークン情報「AT_000001」から取得されたアプリケーションIDを比較することでアクセスを許可するかを検証する。本検証は、リソースサーバー400が認可サーバー500に対し、アクセストークン「AT_000001」、スコープ「リソースA」を引数にしてトークン情報を取得することで行われる(S10.14)。認可サーバー500では、Table3トークン管理テーブルを参照し、取得したアクセストークン「AT_00001」の有効期間が切れていないこと、要求されているスコープ「リソースA」がスコープ範囲内であることを検証し、問題がなければ検証の成功を返す(S10.15)。この結果、アクセス許可と判断された場合は、リソースサーバー400は、Webアプリケーション240に対して、リソースを応答する(S10.16)。ここで、リソースは例えば、リソースサーバー400が印刷サービスであった場合は印刷可能な文書のリストであり、帳票サービスであった場合は、作成可能な帳票のリストである。
ここで、S10.14から、S10.15まで、トークンの検証を認可サーバー500、リソースサーバー400それぞれで行うよう説明したが、リソースに対するアクセス可能なアプリケーションを認可サーバー500で管理し、全ての検証を認可サーバー500で行うよう構成する事も可能である。また、本実施例ではアクセス可能なアプリケーションの判断をアプリケーションIDを用いて実施するよう説明したが、トークン情報から取得できるシリアル番号やクライアントIDを元にクライアントPC200上のWebアプリケーション240を識別し、アクセスの可否を判断するよう構成する事もできる。また、同様に、トークン情報から取得できるスコープやユーザーIDを元にアクセスの可否を判断するよう構成する事もできる。リソース応答を受け付けたクライアントPC200上のWebアプリケーション240は、受信したデータを元に前述のアプリケーション画面を構成し、リソースオーナー1000たるユーザーに応答する(S10.16)。
以上が実施例2の説明となる。実施例1の処理との差異は、クライアントであるWebアプリケーション240が、権限情報をクライアントに取得させるためのエンドポイントであるWeb−Hostedクライアント300にアクセスすることなく、権限情報を取得する点にある。汎用的な動作に制限されたWebブラウザーとは異なり、特別な動作を実行出来るクライアントアプリケーションであれば実施例2を実行することが可能になる。わざわざ、Web−Hostedクライアント300にアクセスする必要がないことが実施例2のメリットである。
リダイレクトURIが同一ドメインの場合の認可確認画面スキップにおいて、アクセストークンを暗号化する場合の形態について説明する。本実施例は、実施例1におけるアクセストークンを暗号化する例である。OAuth2.0のImplicit grantにおいては、認可サーバー500で発行されたアクセストークンがクライアントPC200に直接わたってしまうため、トークン詐取等の問題を起こす可能性がある。実施例1の特徴はアクセストークンの応答先であるWeb−Hostedクライアント300が、認可サーバー500と同じセキュリティドメインであることを理由にユーザー1000に対して明示的な認可確認を省略することにあった。本実施例3においては、実施例1にアクセストークンの暗号化を加えて、より安全なリソースサーバー400へのアクセスを実現する。なお本実施例は実施例1にトークン暗号化を加えた実施例であるので、実施例1と同様の構成、フローの説明は割愛する。
本実施の形態に係る権限移譲システムは、実施例1と同様に、図1に示すような構成のネットワーク上に実現される。本実施の形態に係るクライアントPC200の構成は、実施例1と同様に、図2をもって示される。またWeb−Hostedクライアント300、リソースサーバー400、認可サーバー500のサーバーコンピューターの構成も同様である。尚、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当するものとし、本実施形態のクライアントPC200およびサーバーコンピューターには一般的な情報処理装置のハードウェア構成を適用できる。
図19は、本実施の形態に係る、認可サーバー500、リソースサーバー400、クライアントPC200、Web−Hostedクライアント300の、それぞれのモジュール構成図である。なお認可サーバー500、リソースサーバー400、クライアントPC200、Web−Hostedクライアント300は、実施例1の図3と同様であるので説明は割愛する。認可サーバー500も図3と同様に認可サーバーモジュール510を持ち、認可サーバーモジュール510はユーザー識別部610、クライアント検証部520、トークン発行部530、トークン検証部540を持つ。加えて、本実施例の特徴として、暗号処理部550を持つ。
本実施例の認可サーバー500は、外部メモリに記憶するデータテーブルTable1ユーザー管理テーブル、Table2クライアント管理テーブル、Table3トークン管理テーブルを持つ。これらデータテーブルは、認可サーバー500の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。これらテーブルは実施例1のTable1、Table2、Table3と同一なので説明は割愛する。
ここで、クライアントPC200上のブラウザープリケーションを用いてリソースサービスを利用するための、本実施例の形態に係る認可フローを表すシーケンスについて、図12を用いて説明する。OAuth2.0の仕様では、多様なクライアントに応じた複数のプロトコルシーケンスをgrant typeと呼ぶ。図12の認可フローは、OAuth2.0仕様のimplicit grantに本実施例独自の拡張を加えたgrant typeである。
まず、保護されたリソースへのアクセスが必要になるユーザーからの認可連携サービス開始要求が発生する(S12.1)。本サービス要求は、リソースオーナー1000であるユーザーがリソースサーバー400に対し、リソースオーナー1000が操作するユーザーエージェントたるクライアントPC200上のブラウザープリケーションを介してHTTPプロトコルを用いて行う。具体的には、リソースオーナー1000たるユーザーはクライアントPC200を操作してリソースサーバー400のアプリケーション画面(不図示)にアクセスする(S12.1)。このアプリケーション画面は例えば、リソースサーバー400のリソース連携アプリケーションが印刷アプリケーションであった場合は印刷する文書を選択する画面であり、帳票アプリケーションであった場合は、作成する帳票を選択する画面である。
ここでアプリケーション画面にアクセスするとは、例えば、クライアントPC200上のブラウザー上に前記アプリケーション画面が選択可能に表示されており、当該アプリケーションを選択する事を指す。当該アプリケーションを選択することにより、リソースオーナー1000はリソースサーバー400に対して認可連携サービス開始要求を送信する(S12.1)。なお本実施例においてはリソース連携アプリケーションをリソースサーバー400上としている。しかし一般に、リソース連携アプリケーションはリソースサーバー400とは別の、クライアントアプリケーションサーバーなどに存在しても良い。本実施例ではリソースサービス連携アプリケーションとして印刷Webアプリケーション、帳票Webアプリケーションといったリソースサービスと連携するクライアントアプリケーションが設置されている。なお1台のリソースサーバーに設置されるリソースサービス連携アプリケーションは1つでもよく、複数でもよい。
次に、リソースサーバー400は、前記認可連携サービス開始要求(S12.1)により認可連携の開始を受け付けたら、リソースサーバー400の持つ認可サーバー500の認証エンドポイントのURLに対して、Cookieとしてリソースサーバー400のFQDNのドメイン名であるドメインをdomain=example.comのようにセットする。さらに乱数に基づき16進数値文字列で表されるUUID(Universally Unique Identifier)のようなユニークIDで表現されるnonce値をドメインと同様にCookieとしてnonce=ed670784−2aea−4a32−88d6−6e49c5dd9e6bのようにセットする(S12.2)。そしてOAuthの認可リクエストをするよう、クライアントPC200のブラウザーにHTTP/1.1 ステータスコード302のリダイレクト要求する(S12.3)。本リダイレクト要求のHTTP Locationヘッダーにはリソースサーバー400のID、認証フローのタイプ、認可サーバー500の認証エンドポイントのURLが含まれ、以下のようなリダイレクト要求となる。
https://auth.a01.example.com/authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
&scope=scopeA
HTTPメソッド: GET
Content−Type: application/x−www−form−urlencoded
リクエストパラメーターには、response_typeとして“token”固定文字列、client_idとして予めクライアントアプリケーションとして認可サーバー500に登録したリソースサーバー400上のクライアントアプリケーションのアプリケーションID、redirect_uriとして予めクライアントアプリケーションとして認可サーバー500に登録したWeb−Hostedクライアント300のURLを指定する。また、OAuthでは、認可を受けたい権限範囲を示すスコープを認可リクエストに含むよう構成する事もできる。本実施例では、スコープとしてスコープAがリクエストされたとして説明する。
次に、リダイレクト要求を受信したクライアントPC200は、上記リダイレクト要求に従い認可サーバー500に対してユーザー認証、認可の要求を行う(S12.5)。認可リクエストを受け付けた認可サーバー500は、ユーザーを認証するために図6aに示すログイン画面2000をクライアントPC200上のブラウザーに応答する(S12.6)。リソースオーナー1000であるユーザーはクライアントPC200上のブラウザーに示されたログイン画面2000に対して、ユーザーID、パスワードを入力しログインを実行する(S12.7)。認可サーバー500は受け付けたユーザーID、パスワードの組が前記Table1ユーザー管理テーブルに登録されている情報と合っているかを検証する。ここで以下に示す図13のフローチャートを用いて、ユーザー認証画面表示(S12.6)、ユーザー認証(S12.7)、暗号鍵生成(S12.8)、nonceと暗号鍵のペアを保存(S12.9)、リダイレクトURIとCookieのドメインパラメーター比較(S12.10)について説明する。また本実施例の特徴である、認可確認画面表示(S12.11)、認可確認(S12.12)の省略について、およびアクセストークン応答(S12.13)について説明する。
図13a、13bは、前記認可サーバー500がユーザー認証、認可の要求を受け付けた際の、認可サーバー500上の認可サーバーモジュール510の処理フローチャートである。本フローチャートは、認可サーバーモジュール510が前記クライアントPC200からの前記リダイレクト要求を受信することで始まる(ステップS13.1)。認可サーバーモジュール510は、ユーザーを認証するために図6aに示すログイン画面2000をクライアントPC200上のブラウザーに応答する。リソースオーナー1000であるユーザーはクライアントPC200上のブラウザーに示されたログイン画面2000に対して、ユーザーID、パスワードを入力しログインを実行する(S12.7)。認可サーバー500は、前記クライアントPC200から受信した前記リダイレクト要求に含まれるCookieからnonce値とドメイン名を取得する(ステップS13.2)。
さらに前記認可サーバー500は、受け付けたユーザーID、パスワードの組が前記Table1ユーザー管理テーブルに登録されている情報と合っているかを検証する(ステップS13.3)。前記検証の結果ユーザーID、パスワードの組がTable1ユーザー管理テーブルに登録されていなければ(ステップS13.4)、クライアントPC200にユーザー認証エラー画面(図示せず)を通知して処理を終了する(ステップS13.12)。もし前記検証の結果ユーザーID、パスワードの組がTable1ユーザー管理テーブルに登録されていれば(ステップS13.4)、次に暗号鍵生成処理(ステップS13.5、ステップS13.6、ステップS13.7)を行う。
認可サーバーモジュール510は、まず暗号鍵の生成に用いるSaltを取得する(ステップS13.5)。本実施例のSaltは、予め前記認可サーバーモジュール510内に保存された8バイトの文字列”abcdefgh”とする。より撹乱された鍵を生成されるようにするために、前記認可サーバーモジュール510は、前記Saltを使用する。すなわち、暗号鍵の元として使用する、先にステップS13.2にて取得したnonce値のダイジェスト値を求める前に、nonce値に前もって8バイトのデータ(Salt)を追加してからダイジェスト値を求める。Saltの長さについては必ずしも固定でなく、8バイト程度であればよい。
次に認可サーバーモジュール510は、上記ステップS13.4にて取得したSaltと前記ステップS13.2で取得したnonce値を結合してSHA−256ハッシュアルゴリズムによりハッシュ値を計算し、暗号鍵とする(ステップS13.6)。本実施例の場合、saltをnonceの前に結合した文字列「abcdefghed6707842aea4a32−88d6−6e49c5dd9e6b」をSHA−256アルゴリズムでハッシュ化した「29674fead5e38ad1b9f37b2be28358b15c8fd35310d29eb7e5594e9a5f30d7e0」を暗号鍵とする。そして、以下に示すように前記nonce値と上記生成した暗号鍵を、Table4 nonce−暗号鍵管理テーブルに保存する(ステップS13.7)。また本実施例においては暗号化アルゴリズムにAES(256bit)CBCモードを使用するため、CBCモードに必要な初期ベクター(iv)が必要となる。ivは前記暗号鍵と同時に、認可サーバーモジュール510がランダムに生成する。本実施例ではivを「3729A7F036235FBA26C138D4BB556172」とする(ステップ$13.7)。
以下に示すTable4は認可サーバー500が外部メモリに記憶するデータテーブルである。このデータテーブルは、認可サーバー500の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。本実施例においては、同一のLAN101に接続されている認可サーバー500とWeb−Hostedクライアント300において、認可サーバー500がTable4を作成、参照、更新、削除可能、Web−Hostedクライアント300がTable4を参照可能なように構成する。
Figure 0006335657
Table4はnonce−暗号鍵管理テーブルである。本テーブルは、nonce値、暗号鍵、ivから成る。図13bは、本実施例における認可サーバー500上の認可サーバーモジュール510の認可確認処理のフローチャートである。認可サーバーモジュール510は、本認可確認処理においてステップS13.1にて受信した前記クライアントPC200からの前記リダイレクト要求のリクエストパラメーターを確認する(ステップS13.12)。また前記リクエストに含まれるCookieのドメインパラメーター、例えばdomain=example.comを取得する(ステップS13.13)。ここで認可サーバーモジュール510は、前記Table2クライアント管理テーブルを参照し、前記リダイレクト要求のリクエストパラメーターのclient_id、redirect_uriの値が前記Table2クライアント管理テーブルに含まれるかどうかを確認する(ステップS13.14)。
ここでもし、前記リダイレクト要求のリクエストパラメーターのclient_id、redirect_uriの値が前記Table2クライアント管理テーブルに含まれなければ、認可サーバーモジュール510は認可確認失敗を返却して処理を終了する(ステップS13.19)。もし前記リダイレクト要求のリクエストパラメーターのclient_id、redirect_uriの値が前記Table2クライアント管理テーブルに含まれていれば、認可サーバーモジュール510は次に前記ステップS13.13で取得したCookieのドメインパラメーターを参照し、前記リクエストパラメーターのredirect_uriのドメインと一致するかどうかを比較する(S13.15)。本実施例の場合、Cookieのドメインパラメーターがdomian=example.comよりexample.comがドメインとなる。また、前記リクエストパラメーターのredirect_uriはURLデコードを行うとredirect_uri=https://client.example.com/cbよりexample.comがドメインとなる。よって認可確認画面をクライアントPC200に返却せず、認可確認成功を返す(ステップS13.16)。
ここでもし前記Cookieのドメインパラメーターのドメインと、前記リクエストパラメーターのredirect_uriのドメインが異なっていた場合(ステップS13.15)、前記認可サーバーモジュール510は前記クライアントPC200に図6bに示す認可確認画面を返却する(ステップS13.17)。ここで前記認可サーバーモジュール510は、前記クライアントPC200からの応答を待ち、もし認可確認に失敗したならば(ステップS13.18)、認可確認失敗を返却して処理を終了する(ステップS13.19)。またもし認可確認に成功したならば(ステップS13.18)、認可確認成功を返却して処理を終了する(ステップS13.16)。
図13aにて、図13bに示される前記認可確認処理(ステップS13.8)が終了した後、もし認可確認が失敗したならば(ステップS13.9)、クライアントPC200にユーザー認証エラー画面(図示せず)を通知して処理を終了する(ステップS13.12)。もし前記認可確認処理(ステップS13.8)が成功したならば(ステップS13.12)、認可サーバーモジュール510は、リソースサーバー400へのアクセスを可能にするアクセストークンを生成するアクセストークン発行処理(ステップS13.10)を行う。
生成したアクセストークンは、前記ステップS13.6にて生成した暗号鍵による暗号化を行い、暗号化トークン文字列を生成して前記Table3トークン管理テーブルに登録する。すなわち、アクセストークン文字列「AT_000001」を暗号鍵「29674fead5e38ad1b9f37b2be28358b15c8fd35310d29eb7e5594e9a5f30d7e0」とiv「3729A7F036235FBA26C138D4BB556172」にて暗号化し、さらにBASE64エンコード方式にて「mPfaCXa3vOxJW5R9cuBqmQ==」のように文字列化する。そして上記生成した暗号化トークン文字列「mPfaCXa3vOxJW5R9cuBqmQ==」をトークンIDとしてTable3のトークンIDに格納する。
また認可サーバーで予め定められたアクセストークンの有効期限を有効期限に格納する。また前記トークンテーブルに登録済みの認証トークンのレコードに含まれるスコープ情報をスコープに、ユーザーIDをユーザーIDに格納する。このように、認可サーバー500は、ユーザーによる明示的な認可確認を行わず、リソースサーバー400へのリソースアクセスを可能にする、暗号化したアクセストークン「mPfaCXa3vOxJW5R9cuBqmQ==」を発行する(ステップS13.12)。これはWeb−Hostedクライアント300、リソースサーバー400、認可サーバー500がWAN100を介さずに接続されているためである。本実施例においてはLAN101を校内とみなし、これらを同一セキュリティドメインとみなす。
ここで認可サーバーモジュール510がクライアントPC200に送信するアクセストークンの応答(S12.13)は、以下のようにOAuth2.0仕様に従う。すなわちapplication/x−www−form−urlencodedフォーマットを用いてリダイレクトURIのフラグメントコンポーネントに例えば以下のようなパラメーターを付与してクライアントPC200に応答を送信する。
HTTP/1.1 302 Found
Location: http://client.example.com/cb#access_token=mPfaCXa3vOxJW5R9cuBqmQ&state=xyz
&token_type=example&expires_in=3600
上記のようにアクセストークン応答に付与されるパラメーターは、OAuth2.0仕様によるとaccess_token、token_type、expires_in、scope、stateである。また前記アクセストークン応答(S12.13)は、Cookieにnonce値を設定する。このnonce値は、前記Table4に登録したnonce値を設定する。
上記に示したように、本実施例のようなImplicit grant認可フローのアクセストークン応答(S12.13)は、クライアントPC200のWebブラウザー230にアクセストークンを取得させるため、Web−Hostedクライアント300に向けて一旦リダイレクトするようになる。
前記アクセストークン応答を受信した前記クライアントPC200上のWebブラウザー230は、Web−Hostedクライアント300に前記アクセストークン応答をリダイレクトする(S12.14)。ここで、S12.14のリダイレクトは、HTTPの仕様によりフラグメントコンポーネントのパラメーターを含まない。
前記リダイレクトを受信したWeb−Hostedクライアント300のWeb−Hostedクライアントモジュール310は、前記リダイレクトのHTTP通信に含まれるCookieからnonce値を取得、確認する(S12.15)。そしてnonce値が存在すれば、前記クライアントPC200上の前記Webブラウザー230にて前記暗号化したアクセストークンを取得するためのスクリプトを含む応答を返す(S12.16)。上記スクリプトは一般に、Webブラウザー230で実行可能なJavaScript(登録商標)であるが、その他ブラウザー上で実行可能なスクリプトであっても良い。また前記Webサーバーが取得する前記暗号化したアクセストークンを復号化するために、前記Web−Hostedクライアント300は、暗号鍵を含むCookieを返す。
図14に示すのは、上記S12.14からS12.16のWeb−Hostedクライアントモジュール310の処理を示すフローチャートである。前記Web−Hostedクライアントモジュール310は、前記Webブラウザー230から前記リダイレクト応答を受信する(ステップS14.1)。さらに前記Web−Hostedクライアントモジュール310は、前記リダイレクトのHTTP通信に含まれるCookieパラメーターからnonce値を取得する(ステップS14.2)。このnonce値は、S12.13にて設定した値である。ここで前記Web−Hostedクライアントモジュール310は、前記Table4 nonce−暗号鍵管理テーブルを参照し、前記取得したnonceの値が存在するかどうか確認する(ステップS14.3)。
もし前記nonce値がTable4に存在しなければ、エラー画面を生成して(図示せず)前記Webブラウザー230に送信して処理を終了する。もし前記nonce値がTable4に存在すれば、合致するnonceに対応する暗号鍵とivを取得し(ステップS14.4)、Cookieにkey=29674fead5e38ad1b9f37b2be28358b15c8fd35310d29eb7e5594e9a5f30d7e0、iv=3729A7F036235FBA26C138D4BB556172のように暗号鍵とivを設定する(ステップS14.5)。そして後述するアクセストークン取得、復号化スクリプトを取得し(ステップS14.6)Webブラウザー230に返して処理を終了する(ステップS14.7)。
このように、Web−Hostedクライアントモジュール310にてnonce値を確認することにより、前記のような一連の処理に無関係なブラウザーなどに、トークン復号化に関連する暗号鍵、アクセストークン取得スクリプトの応答をしないようにすることができる。これにより、例え前記のようなブラウザーなどで前記暗号化したアクセストークンが詐取されたとしても、Web−Hostedクライアント300へのアクセスがエラーとなり、前記詐取された暗号化したアクセストークンの復号化を防止することができ、リソースサーバー400への不正アクセスを防止することができる。
上記アクセストークン取得、復号化スクリプトを受信した前記Webブラウザー230は、前記Cookieから暗号鍵を取得する。そして前記アクセストークン取得、復号化スクリプトを実行することでアクセストークンを復号化、取得する(S12.17)。そして上記復号化したアクセストークンをもって、前記スクリプトはリソースサーバー400にアクセスすることができる(S12.16)。
図15は、上記アクセストークンを取得しリソースサーバーにアクセスするためのスクリプトのフローチャートである。前記Web−Hostedクライアントからスクリプトを受信したクライアントPC200上のWebブラウザー230が本フローチャートを実行する。まず上記Webブラウザー230は、前記アクセストークン応答(S12.13)のリダイレクト先であるURIに紐付くquery stringをパースし、フラグメントの値を取得する(ステップS15.1)。例えば本実施例のJavaScript(登録商標)においては、location.hash関数を用いてWeb−Hostedクライアント300にリダイレクトされた前記アクセストークン応答のフラグメントコンポーネントの値を取得する。
さらに上記取得したフラグメントコンポーネントに含まれる暗号化されたアクセストークンaccess_token=mPfaCXa3vOxJW5R9cuBqmQを取得する。さらにWebブラウザー230は、前記アクセストークン取得スクリプト応答S12.16のHTTP通信に含まれるCookieパラメーターから暗号鍵key=29674fead5e38ad1b9f37b2be28358b15c8fd35310d29eb7e5594e9a5f30d7e0、初期化ベクトルiv=3729A7F036235FBA26C138D4BB556172を取得する(ステップS15.2)。ここで先に取得した暗号化されたアクセストークンを、上記暗号鍵、初期化ベクトルを用いて復号化し、アクセストークンを取得する(ステップS15.3)。そして、本スクリプトの実行により前記Webブラウザー230は、上記取得したアクセストークンを用いてリソースサーバー400にアクセスする(ステップS15.4)。
上記図15のフローチャートにより前記Webブラウザー230上で動作する前記スクリプトは、前記S15.3において前記アクセストークン「AT_000001」、S15.1、S15.2においてスコープ「リソースA」を受け取る。そして、リソースサーバー400に対して前記アクセストークン「AT_000001」、スコープ「リソースA」をリクエストパラメーターに含めてリソースアクセス要求を行う(S12.18)。
アクセストークン情報「AT_000001」、スコープ「リソースA」を取得したリソースサーバー400は、取得した情報を元に要求を受け付けたリソースに対するアクセスを許可するか拒否するかを判断する。ここでは、リソースサーバー400に予めアクセス可能なアプリケーションIDが設定されているとし、その設定されているアプリケーションIDと、アクセストークン情報「AT_000001」から取得されたアプリケーションIDを比較することでアクセスを許可するかを検証する。本検証は、リソースサーバー400が認可サーバー500に対し、アクセストークン「AT_000001」、スコープ「リソースA」を引数にしてトークン情報を取得することで行われる(S12.19)。
認可サーバー500では、Table3トークン管理テーブルを参照し、取得したアクセストークン「AT_00001」の有効期間が切れていないこと、要求されているスコープ「リソースA」がスコープ範囲内であることを検証し、問題がなければ検証の成功を返す(S12.20)。この結果、アクセス許可と判断された場合は、リソースサーバー400は、Webブラウザー230に対して、リソースを応答する(S12.21)。ここで、リソースは例えば、リソースサーバー400が印刷サービスであった場合は印刷可能な文書のリストであり、帳票サービスであった場合は、作成可能な帳票のリストである。
ここで、S12.19から、S12.20まで、トークンの検証を認可サーバー500、リソースサーバー400それぞれで行うよう説明したが、リソースに対するアクセス可能なアプリケーションを認可サーバー500で管理し、全ての検証を認可サーバー500で行うよう構成する事も可能である。また、本実施例ではアクセス可能なアプリケーションの判断をアプリケーションIDを用いて実施するよう説明したが、トークン情報から取得できるシリアル番号やクライアントIDを元にクライアントPC200上のWebブラウザー230を識別し、アクセスの可否を判断するよう構成する事もできる。また、同様に、トークン情報から取得できるスコープやユーザーIDを元にアクセスの可否を判断するよう構成する事もできる。
リソース応答を受け付けたクライアントPC200上のWebブラウザー230は、受信したデータを元に前述のアプリケーション画面を構成し、リソースオーナー1000たるユーザーに応答する(S12.21)。なお、実施例3は実施例2の形態に対しても適用可能である。その場合、S10.12においてリダイレクトをキャンセルせずに暗号化された権限情報を復号化するためのスクリプトを取得することになる。
実施例3により、アクセストークンが暗号化された状態でクライアントに送信されるので、一連の認可処理が終了する前にクライアントでアクセストークンが取得され搾取された場合であっても、セキュリティ性を維持することができる。
実施例4では、リダイレクトURIが同一ドメインの場合の認可確認画面スキップにおいて、アクセストークン暗号化・認可確認画面のスキップをする/しないをスコープにより判定する処理について説明する。本実施例は、実施例3における認可確認画面の省略する・しない、アクセストークンの暗号化をする・しないについて、認可サーバー500において判定する例である。
実施例3において、同一セキュリティドメインにおけるユーザーの利便性を鑑み、認可確認画面を省略する方法について詳述した。しかし、認可サーバー500の規定するスコープによっては、対象スコープに対するアクセスによりユーザーにリスクが発生する場合がある。例えば、ドキュメントを第三者に公開するスコープ、高い課金が発生するスコープ、サービスが一部使えなくなるスコープなどである。このような場合、本実施例のように認可確認画面を強制的に出すようなスコープを設定可能にする。
また実施例3において、OAuth2.0 Implicit grantにおけるアクセストークンの安全性を鑑み、アクセストークンを暗号化する方法について詳述した。しかし、認可サーバー500の規定するスコープによっては、対象スコープに対するアクセスについて保護よりもパフォーマンスを優先する場合がある。例えば、ユーザーに対して無課金で利用できるスコープで、大量のクライアントPC200からのアクセスにより、認可サーバー500の処理パフォーマンスに影響が出る場合などである。このような場合、本実施例のように暗号化しないスコープを設定可能にする。
以下、上記のように認可確認画面の省略をする・しない、アクセストークンの暗号化をする・しないについて、スコープの種類を認可サーバー500が判定することにより制御する方法について詳述する。なお本実施例は、基本的に実施例1、3に認可確認、暗号化のスコープ種類による判定処理を加えた実施例であるので、実施例1、3と同様の構成、フローの説明は割愛する。
本実施の形態に係る権限移譲システムは、実施例1と同様に、図1に示すような構成のネットワーク上に実現される。本実施の形態に係るクライアントPC200の構成は、実施例1と同様に、図2をもって示される。またWeb−Hostedクライアント300、リソースサーバー400、認可サーバー500のサーバーコンピューターの構成も同様である。尚、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当するものとし、本実施形態のクライアントPC200およびサーバーコンピューターには一般的な情報処理装置のハードウェア構成を適用できる。
図17は、本実施の形態に係る、認可サーバー500、リソースサーバー400、クライアントPC200、Web−Hostedクライアント300の、それぞれのモジュール構成図である。なお認可サーバー500、リソースサーバー400、クライアントPC200、Web−Hostedクライアント300は、実施例1の図3と同様であるので説明は割愛する。認可サーバー500も図3と同様に認可サーバーモジュール510を持ち、認可サーバーモジュール510はユーザー識別部601、クライアント検証部520、トークン発行部530、トークン検証部540、暗号処理部550を持つ。加えて、本実施例の特徴として、トークン判定処理部560を持つ。
本実施例の認可サーバー500は、外部メモリに記憶するデータテーブルTable1ユーザー管理テーブル、Table2クライアント管理テーブル、Table3トークン管理テーブル、Table4 nonce−暗号鍵管理テーブルを持つ。これらデータテーブルは、認可サーバー500の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。これらテーブルは実施例1、3のTable1、Table2、Table3、Table4と同一なので説明は割愛する。
ここで、クライアントPC200上のブラウザープリケーションを用いてリソースサービスを利用するための、本実施例の形態に係る認可フローを表すシーケンスについては、実施例3の図12と同様である。本実施例においては、図12のシーケンス中で説明した図13a、13bの認可サーバー処理、図14のWeb−Hostedクライアント処理が実施例3と異なる。以下、本実施例の認可サーバー処理を図16のフローチャートを用いて説明する。また、本実施例のWeb−Hostedクライアント処理について図18のフローチャートを用いて説明する。
図16a、16bは、前記認可サーバー500がユーザー認証、認可の要求を受け付けた際の、認可サーバー500上の認可サーバーモジュール510の処理フローチャートである。本フローチャートは、認可サーバーモジュール510が前記クライアントPC200からの前記リダイレクト要求を受信することで始まる(ステップS16.1)。認可サーバーモジュール510は、ユーザーを認証するために図6aに示すログイン画面2000をクライアントPC200上のブラウザーに応答する。リソースオーナー1000であるユーザーはクライアントPC200上のブラウザーに示されたログイン画面2000に対して、ユーザーID、パスワードを入力しログインを実行する(S12.7)。
認可サーバー500は、前記クライアントPC200から受信した前記リダイレクト要求に含まれるCookieからnonce値とドメイン名を取得する。さらにリクエストパラメーターのScopeを取得する(ステップS16.2)。さらに前記認可サーバー500は、受け付けたユーザーID、パスワードの組が前記Table1ユーザー管理テーブルに登録されている情報と合っているかを検証する(ステップS16.3)。前記検証の結果ユーザーID、パスワードの組がTable1ユーザー管理テーブルに登録されていなければ(ステップS16.4)、クライアントPC200にユーザー認証エラー画面(図示せず)を通知して処理を終了する(ステップS16.16)。もし前記検証の結果ユーザーID、パスワードの組がTable1ユーザー管理テーブルに登録されていれば(ステップS16.4)、認可サーバーモジュール510は、先にステップS16.2にて取得したnonce値と、Scopeを、後述するTable5 nonce−scope管理テーブルに登録する(ステップS16.5)。
以下に示すTable5は認可サーバー500が外部メモリに記憶するデータテーブルである。このデータテーブルは、認可サーバー500の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。本実施例においては、同一のLAN101に接続されている認可サーバー500とWeb−Hostedクライアント300において、認可サーバー500がTable5を作成、参照、更新、削除可能、Web−Hostedクライアント300がTable5を参照可能なように構成する。
Figure 0006335657
Table5はnonce−scope管理テーブルである。本テーブルは、nonce値、scopeから成る。
次に認可サーバーモジュール510は、後述する暗号化、認可確認管理テーブルを参照する(ステップS16.6)。以下に示すTable6は認可サーバー500が外部メモリに記憶するデータテーブルである。このデータテーブルは、認可サーバー500の外部メモリではなく、LAN101を介して通信可能に構成された別のサーバーに記憶するよう構成する事も出来る。本実施例においては、同一のLAN101に接続されている認可サーバー500がTable6を作成、参照、更新、削除可能なように構成する。
Figure 0006335657
Table6は暗号化、認可確認管理テーブルである。本テーブルは、scope、暗号化、認可確認から成る。Scope列にはScope文字列、暗号化、認可確認にはBool値を格納する。暗号化、認可確認列のBool値は、各々Trueが行う、Falseが行わないを示す。なおTable6については、予め認可サーバー500の管理者により設定されているものとする。本設定については、外部より設定可能としてもよい。
本実施例の場合、上記ステップS16.5にてTable5に設定したscopeは「scopeD」とする。上記ステップS16.6にて認可サーバーモジュール510は、Table6を参照し、暗号化、認可確認共にしないことが確認できる。ここで認可確認モジュール510は、Table6から暗号化しないことを確認したので(ステップS16.7)、次に認可確認処理を行う(ステップS16.12)。ここでもし上記ステップS16.7にて暗号化することを確認したとしたら(ステップS16.7)、認可サーバーモジュール510は、実施例3の図13aのステップS13.5からS13.7に示したと同様のアクセストークン暗号化の一連の処理を行う。本実施例においては、ステップS16.9からS16.11が、各々図13aのステップS13.5からS13.7に相当するため説明を割愛する。
図16bは、上記ステップS16.12の本実施例における認可サーバーモジュール510による認可確認処理を示すフローチャートである。認可サーバーモジュール510は、本認可確認処理においてステップS16.1にて受信した前記クライアントPC200からの前記リダイレクト要求のリクエストパラメーターを確認する(ステップS16.16)。また前記リクエストパラメーターに含まれるScope、本実施例の場合「scopeD」を取得する(ステップS16.17)。ここで認可サーバーモジュール510は、前記Table6暗号化、認可確認管理テーブルを参照し、前記リダイレクト要求のリクエストパラメーターのscopeの値が前記Table6暗号化、認可確認管理テーブルに含まれるかどうかを確認する(ステップS16.18)。
ここでもし、前記リダイレクト要求のリクエストパラメーターのscopeの値が前記Table6暗号化、認可確認管理テーブルの認可確認の値がFalseの場合、認可確認画面をクライアントPC200に返却せず、認可確認成功を返す(ステップS16.20)。本実施例の場合、「scopeD」に対するTable6の認可確認の値がFalseなので、上記のように認可確認成功を返す。ここでもし前記リダイレクト要求のリクエストパラメーターのscopeの値が前記Table6暗号化、認可確認管理テーブルに含まれない、あるいは認可確認の値がTrueの場合(ステップS16.19)、前記認可サーバーモジュール510は前記クライアントPC200に図6bに示す認可確認画面を返却する(ステップS16.21)。ここで前記認可サーバーモジュール510は、前記クライアントPC200からの応答を待ち、もし認可確認に失敗したならば(ステップS16.22)、認可確認失敗を返却して処理を終了する(ステップS16.23)。またもし認可確認に成功したならば(ステップS16.22)、認可確認成功を返却して処理を終了する(ステップS16.23)。
図16aにて、図16bに示される前記認可確認処理(ステップS16.12)が終了した後、もし認可確認が失敗したならば(ステップS16.13)、クライアントPC200にユーザー認証エラー画面(図示せず)を通知して処理を終了する(ステップS16.16)。もし前記認可確認処理(ステップS16.12)が成功したならば(ステップS16.13)、認可サーバーモジュール510は、リソースサーバー400へのアクセスを可能にするアクセストークンを生成するアクセストークン発行処理(ステップS16.14)を行う。
生成したアクセストークンは、前記Table3トークン管理テーブルに登録する。すなわち、アクセストークン文字列「AT_000002」をトークンIDに格納する。また認可サーバーで予め定められたアクセストークンの有効期限を有効期限に格納する。また前記トークンテーブルに登録済みの認証トークンのレコードに含まれるスコープ情報をスコープに、ユーザーIDをユーザーIDに格納する。このように、認可サーバー500は、ユーザーによる明示的な認可確認を行わず、リソースサーバー400へのリソースアクセスを可能にするアクセストークン「AT_000002」を発行する(ステップS16.15)。これはWeb−Hostedクライアント300、リソースサーバー400、認可サーバー500がWAN100を介さずに接続されているためである。本実施例においてはLAN101を校内とみなし、これらを同一セキュリティドメインとみなす。
ここで認可サーバーモジュール510がクライアントPC200に送信するアクセストークンの応答(図12のS12.13に相当)は、以下のようにOAuth2.0仕様に従う。すなわちapplication/x−www−form−urlencodedフォーマットを用いてリダイレクトURIのフラグメントコンポーネントに例えば以下のようなパラメーターを付与してクライアントPC200に応答を送信する。
HTTP/1.1 302 Found
Location: http://client.example.com/cb#access_token=AT_000002&state=xyz
&token_type=example&expires_in=3600
上記のようにアクセストークン応答に付与されるパラメーターは、OAuth2.0仕様によるとaccess_token、token_type、expires_in、scope、stateである。上記に示したように、本実施例のようなImplicit grant認可フローのアクセストークン応答(図12のS12.13に相当)は、クライアントPC200のWebブラウザー230にアクセストークンを取得させるため、Web−Hostedクライアント300に向けて一旦リダイレクトするようになる。前記アクセストークン応答を受信した前記クライアントPC200上のWebブラウザー230は、Web−Hostedクライアント300に前記アクセストークン応答をリダイレクトする(図12のS12.14に相当)。ここで、本リダイレクトは、HTTPの仕様によりフラグメントコンポーネントのパラメーターを含まない。
前記リダイレクトを受信したWeb−Hostedクライアント300のWeb−Hostedクライアントモジュール310は、前記クライアントPC200上の前記Webブラウザー230にて前記アクセストークンを取得するためのスクリプトを含む応答を返す(図12のS12.16に相当)。上記スクリプトは一般に、Webブラウザー230で実行可能なJavaScript(登録商標)であるが、その他ブラウザー上で実行可能なスクリプトであっても良い。上記アクセストークン取得スクリプトを受信した前記Webブラウザー230は、スクリプトを実行することでアクセストークンを取得し(図12のS12.17に相当。ただし後述するように、トークンが暗号化されていない場合は復号化せず。)、リソースサーバー400にアクセスすることができる(図12のS12.18に相当)。
図18に示すのは、上記S12.14からS12.16のWeb−Hostedクライアントモジュール310の処理を示すフローチャートである。前記Web−Hostedクライアントモジュール310は、前記Webブラウザー230から前記リダイレクト応答を受信する(ステップS18.1)。さらに前記Web−Hostedクライアントモジュール310は、前記リダイレクトのHTTP通信に含まれるCookieパラメーターからnonce値を取得する(ステップS18.2)。このnonce値は、S12.13にて設定した値である。ここで前記Web−Hostedクライアントモジュール310は、前記Table5 nonce−scope管理テーブルを参照し、前記取得したnonceの値が存在するかどうか確認する(ステップS18.3)。もし前記nonce値がTable5に存在しなければ、エラー画面を生成して(図示せず)前記Webブラウザー230に送信して処理を終了する(ステップS18.14)。もし前記nonce値がTable5に存在すれば(ステップS18.3)、合致するnonceに対応するscopeを取得する(ステップS18.4)。ここでもし、前記Table5 nonce−scope管理テーブルに前記nonceに対応するscopeが存在しなければ(ステップS18.5)、エラー画面を生成して(図示せず)前記Webブラウザー230に送信して処理を終了する(ステップS18.14)。もし前記Table5 nonce−scope管理テーブルに前記nonceに対応するscopeが存在すれば(ステップS18.5)、Web−Hostedクライアントモジュール310は、Table6暗号化、認可確認管理テーブルを参照し、上記scopeが存在するかどうか確認する(ステップS18.6)。
ここでもし、前記scopeが前記Table6暗号化、認可確認管理テーブルに存在しない、あるいは前記scopeに相当するTable6暗号化列がFalseであれば(ステップS18.7)、実施例1の図7のフローチャートで示したアクセストークンを取得しリソースサーバーにアクセスするためのスクリプトを選択し(ステップS18.13)、クライアントPC200に上記スクリプトを送信して(ステップS18.12)処理を終了する。本実施例の場合、上記シーケンスにおけるscopeは「scopeD」なので、前記ステップS18.13にてトークン暗号化をしない場合のアクセストークンを取得しリソースサーバーにアクセスするためのスクリプトを送信する。
もし前記scopeが前記Table6暗号化、認可確認管理テーブルに存在しTable6暗号化列がTrueであれば(ステップS18.7)、前記Web−Hostedクライアントモジュール310は、前記Table4 nonce−暗号鍵管理テーブルを参照し、前記取得したnonceの値が存在するかどうか確認する(ステップS18.8)。以降、ステップS18.9からステップS18.12およびステップS18.14については、図14のステップS14.3からステップS14.7およびステップS14.8と同様であるので説明を割愛する。
このように、Web−Hostedクライアントモジュール310にてnonce値を確認することにより、前記のような一連の処理に無関係なブラウザーなどに、トークン復号化に関連する暗号鍵、アクセストークン取得スクリプトの応答をしないようにすることができる。これにより、例え前記のようなブラウザーなどで前記暗号化したアクセストークンが詐取されたとしても、Web−Hostedクライアント300へのアクセスがエラーとなり、前記詐取された暗号化したアクセストークンの復号化を防止することができ、リソースサーバー400への不正アクセスを防止することができる。
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
200 クライアントPC
300 Web−Hostedクライアント
400 リソースサーバー
500 認可サーバー
1000 リソースオーナー

Claims (7)

  1. クライアントから利用可能なサービスを備えるサーバーシステムと、前記サービスを利用するクライアントとを含む権限移譲システムであって、
    前記クライアントにて表示される認証画面を介しユーザーから入力された認証情報を基に、前記ユーザーが正規なユーザーであるか否かを判断する認証手段と、
    前記認証手段により正規なユーザーであると判断された前記ユーザーが前記クライアントにて表示される認可確認画面を介し、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示をした場合に、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行する発行手段と、
    前記クライアントが前記サービスの利用を要求した際に送信する前記権限情報を基に、前記クライアントが前記ユーザーの権限で前記サービスを利用することを認可する認可手段と、
    前記サービスのドメインと、前記権限情報を前記クライアントに取得させるためのエンドポイントのドメインとが同一のドメインであるか否かを判断する判断手段とを有し、
    前記発行手段は、前記判断手段により2つのドメインが同一のドメインであると判断されたことに応じて、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示を受け付けることなく、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行することを特徴とする権限移譲システム。
  2. 前記クライアントとはWebブラウザーではないアプリケーションであり、前記エンドポイントは前記クライアントに前記権限情報を取得させるためのスクリプトを生成するホスト手段のアドレスを示す場合であって、
    前記アプリケーションは、前記ホスト手段にアクセスすることなく、前記権限情報を取得することを特徴とする請求項1に記載の権限移譲システム。
  3. 前記クライアントとはWebブラウザーであり、前記エンドポイントは前記クライアントに前記権限情報を取得させるためのスクリプトを生成するホスト手段のアドレスを示す場合であって、
    前記Webブラウザーは、前記ホスト手段により生成されたスクリプトに従い、前記ホスト手段にアクセスする前に前記クライアントに備えられたメモリに保存をした前記権限情報を取得し前記サービスの利用を要求する際に前記サービスへ送信することを特徴とする請求項1に記載の権限移譲システム。
  4. 前記発行手段は、ユニークIDを基に暗号鍵を生成し、生成された暗号鍵を基に前記権限情報を暗号化し、暗号化された前記権限情報と前記ユニークIDを前記クライアントへ送信し、
    前記ホスト手段は、前記クライアントから送信されるユニークIDが、前記発行手段により暗号化された前記権限情報に紐付くユニークIDであった場合、前記暗号化された前記権限情報を復号化するためのスクリプトを生成し前記クライアントへ送信することを特徴とする請求項2または3に記載の権限移譲システム。
  5. 前記認可手段は、前記クライアントが要求する前記サービスを利用するために必要な権限が、前記権限情報から特定される前記クライアントに移譲された前記ユーザーの権限の範囲内ではないと判断した場合、前記クライアントが前記サービスを利用することを認可しないことを特徴とする請求項1乃至4の何れか1項に記載の権限移譲システム。
  6. クライアントから利用可能なサービスを備えるサーバーシステムと、前記サービスを利用するクライアントと通信可能な認証サーバーシステムであって、
    前記クライアントにて表示される認証画面を介しユーザーから入力された認証情報を基に、前記ユーザーが正規なユーザーであるか否かを判断する認証手段と、
    前記認証手段により正規なユーザーであると判断された前記ユーザーが前記クライアントにて表示される認可確認画面を介し、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示をした場合に、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行する発行手段と、
    前記クライアントが前記サービスの利用を要求した際に送信する前記権限情報を基に、前記クライアントが前記ユーザーの権限で前記サービスを利用することを認可する認可手段と、
    前記サービスのドメインと、前記権限情報を前記クライアントに取得させるためのエンドポイントのドメインとが同一のドメインであるか否かを判断する判断手段とを有し、
    前記発行手段は、前記判断手段により2つのドメインが同一のドメインであると判断されたことに応じて、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示を受け付けることなく、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行することを特徴とする認証サーバーシステム。
  7. クライアントから利用可能なサービスを備えるサーバーシステムと、前記サービスを利用するクライアントと通信可能な認証サーバーシステムにて実行されるプログラムであって、
    前記クライアントにて表示される認証画面を介しユーザーから入力された認証情報を基に、前記ユーザーが正規なユーザーであるか否かを判断する認証ステップと、
    前記認証ステップにおいて正規なユーザーであると判断された前記ユーザーが前記クライアントにて表示される認可確認画面を介し、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示をした場合に、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行する発行ステップと、
    前記クライアントが前記サービスの利用を要求した際に送信する前記権限情報を基に、前記クライアントが前記ユーザーの権限で前記サービスを利用することを認可する認可ステップと、
    前記サービスのドメインと、前記権限情報を前記クライアントに取得させるためのエンドポイントのドメインとが同一のドメインであるか否かを判断する判断ステップとを含み、
    前記発行ステップにおいて、前記判断ステップにて2つのドメインが同一のドメインであると判断されたことに応じて、前記サービスにおける前記ユーザーの権限を前記クライアントへ移譲することを許可する指示を受け付けることなく、前記ユーザーの権限が前記クライアントへ移譲されたことを示す権限情報を発行することを特徴とするプログラム。
JP2014112627A 2014-05-30 2014-05-30 権限委譲システム、方法、認証サーバーシステム、およびプログラム Active JP6335657B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014112627A JP6335657B2 (ja) 2014-05-30 2014-05-30 権限委譲システム、方法、認証サーバーシステム、およびプログラム
US14/723,037 US10003587B2 (en) 2014-05-30 2015-05-27 Authority transfer system, method, and authentication server system by determining whether endpoints are in same or in different web domain

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014112627A JP6335657B2 (ja) 2014-05-30 2014-05-30 権限委譲システム、方法、認証サーバーシステム、およびプログラム

Publications (2)

Publication Number Publication Date
JP2015228068A JP2015228068A (ja) 2015-12-17
JP6335657B2 true JP6335657B2 (ja) 2018-05-30

Family

ID=54703122

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014112627A Active JP6335657B2 (ja) 2014-05-30 2014-05-30 権限委譲システム、方法、認証サーバーシステム、およびプログラム

Country Status (2)

Country Link
US (1) US10003587B2 (ja)
JP (1) JP6335657B2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016085641A (ja) * 2014-10-27 2016-05-19 キヤノン株式会社 権限移譲システム、権限移譲システムにて実行される方法、およびそのプログラム
KR101686181B1 (ko) * 2015-01-12 2016-12-28 주식회사 엔터플 미리 지정된 url을 이용한 보안 통신 방법 및 장치
US9819670B2 (en) 2015-06-18 2017-11-14 Airwatch Llc Distributing security codes through a restricted communications channel
US9843572B2 (en) * 2015-06-29 2017-12-12 Airwatch Llc Distributing an authentication key to an application installation
US9660809B2 (en) * 2015-08-07 2017-05-23 Adobe Systems Incorporated Cross-site request forgery defense
US10505982B2 (en) * 2015-10-23 2019-12-10 Oracle International Corporation Managing security agents in a distributed environment
US10382424B2 (en) * 2016-01-26 2019-08-13 Redhat, Inc. Secret store for OAuth offline tokens
US20180211056A1 (en) * 2016-04-15 2018-07-26 Authscope, Inc. Systems and methods for scope-based access
JP6857065B2 (ja) * 2017-03-27 2021-04-14 キヤノン株式会社 認証認可サーバー、リソースサーバー、認証認可システム、認証方法及びプログラム
US10812475B2 (en) * 2017-04-18 2020-10-20 Servicenow, Inc. Authenticating access to an instance
CN106982228B (zh) * 2017-05-08 2018-10-09 北京深思数盾科技股份有限公司 一种实现身份认证的方法及系统
JP6904857B2 (ja) 2017-08-31 2021-07-21 キヤノン株式会社 権限委譲システム、制御方法、およびプログラム
JP6904183B2 (ja) * 2017-09-12 2021-07-14 富士通株式会社 情報処理装置、プログラム及び情報処理方法
JP2019096076A (ja) * 2017-11-22 2019-06-20 キヤノン株式会社 アクセス制御システム、その制御方法およびプログラム
US11409893B2 (en) * 2017-12-28 2022-08-09 Teradata Us, Inc. Security for diverse computing environments
JP6643373B2 (ja) * 2018-02-09 2020-02-12 キヤノン株式会社 情報処理システムと、その制御方法とプログラム
CN109471638B (zh) * 2018-10-16 2021-08-20 五八有限公司 识别应用程序下载渠道的方法及相关设备
JP2020177537A (ja) * 2019-04-19 2020-10-29 キヤノン株式会社 認証認可サーバー、クライアント、サービス提供システム、アクセス管理方法とプログラム
US10958737B2 (en) 2019-04-29 2021-03-23 Synamedia Limited Systems and methods for distributing content
US11190514B2 (en) * 2019-06-17 2021-11-30 Microsoft Technology Licensing, Llc Client-server security enhancement using information accessed from access tokens
US20210056053A1 (en) * 2019-08-19 2021-02-25 Cryptography Research, Inc. Application authentication and data encryption without stored pre-shared keys
JP7043480B2 (ja) * 2019-12-27 2022-03-29 キヤノン株式会社 情報処理システムと、その制御方法とプログラム
US20230041959A1 (en) * 2021-08-02 2023-02-09 Keeper Security, Inc. System and method for managing secrets in computing environments

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317829B1 (en) * 1998-06-19 2001-11-13 Entrust Technologies Limited Public key cryptography based security system to facilitate secure roaming of users
JP2000276451A (ja) * 1999-03-26 2000-10-06 Nec Corp 分散オブジェクト環境下における権限委譲情報の送受信方法ならびにシステム
JP4657706B2 (ja) * 2004-12-27 2011-03-23 株式会社野村総合研究所 権限管理システム、認証サーバ、権限管理方法および権限管理プログラム
JP4766249B2 (ja) * 2006-03-01 2011-09-07 日本電気株式会社 トークン譲渡方法、トークン譲渡システム及び権限認証許可サーバ
US8819848B2 (en) * 2009-11-24 2014-08-26 Comcast Interactive Media, Llc Method for scalable access control decisions
JP5289480B2 (ja) * 2011-02-15 2013-09-11 キヤノン株式会社 情報処理システム、情報処理装置の制御方法、およびそのプログラム。
JP5858796B2 (ja) 2012-01-16 2016-02-10 キヤノン株式会社 権限委譲システム、およびその権限委譲システムにおけるサーバーシステム、および権限委譲システムを制御する制御方法
JP6066647B2 (ja) * 2012-09-27 2017-01-25 キヤノン株式会社 デバイス装置、その制御方法、およびそのプログラム

Also Published As

Publication number Publication date
US20150350179A1 (en) 2015-12-03
US10003587B2 (en) 2018-06-19
JP2015228068A (ja) 2015-12-17

Similar Documents

Publication Publication Date Title
JP6335657B2 (ja) 権限委譲システム、方法、認証サーバーシステム、およびプログラム
JP6643373B2 (ja) 情報処理システムと、その制御方法とプログラム
JP6904857B2 (ja) 権限委譲システム、制御方法、およびプログラム
CN109088889B (zh) 一种ssl加解密方法、系统及计算机可读存储介质
KR102313859B1 (ko) 권한 위양 시스템, 그 제어 방법 및 클라이언트
JP6929181B2 (ja) デバイスと、その制御方法とプログラム
US8532620B2 (en) Trusted mobile device based security
JP5635133B2 (ja) セキュアな動的権限委譲
EP2351316B1 (en) Method and system for token-based authentication
RU2307391C2 (ru) Способы дистанционного изменения пароля связи
JP6061633B2 (ja) デバイス装置、制御方法、およびそのプログラム。
WO2012024910A1 (zh) 认证方法、装置和系统
JP2018092446A (ja) 認証認可システム及び情報処理装置と認証認可方法とプログラム
JP2016115260A (ja) 権限移譲システム、権限移譲システムに用いられる認可サーバー、リソースサーバー、クライアント、媒介装置、権限移譲方法およびプログラム
AlJanah et al. A multifactor multilevel and interaction based (m2i) authentication framework for internet of things (iot) applications
JP7226457B2 (ja) トークン保護方法、認可システム、装置、及び、プログラム記録媒体
JP7043480B2 (ja) 情報処理システムと、その制御方法とプログラム
JP6719503B2 (ja) ログイン制御方法
JP2014142732A (ja) 権限委譲システム
WO2017024588A1 (zh) 业务处理方法及装置
JP6495157B2 (ja) 通信システム、及び通信方法
JP5860421B2 (ja) 復号方法、復号システム
Andrew Kerberos: A Review of the Modification in Versions 4-To-5 Transition

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170526

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180313

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180501

R151 Written notification of patent or utility model registration

Ref document number: 6335657

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151