特許第6983685号(P6983685)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許6983685情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム
<>
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000005
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000006
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000007
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000008
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000009
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000010
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000011
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000012
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000013
  • 特許6983685-情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6983685
(24)【登録日】2021年11月26日
(45)【発行日】2021年12月17日
(54)【発明の名称】情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20211206BHJP
   G06F 21/33 20130101ALI20211206BHJP
【FI】
   H04L9/00 675B
   G06F21/33
【請求項の数】20
【全頁数】19
(21)【出願番号】特願2018-15726(P2018-15726)
(22)【出願日】2018年1月31日
(65)【公開番号】特開2019-134333(P2019-134333A)
(43)【公開日】2019年8月8日
【審査請求日】2021年1月27日
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【弁理士】
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100124442
【弁理士】
【氏名又は名称】黒岩 創吾
(72)【発明者】
【氏名】遠藤 健太
【審査官】 中里 裕正
(56)【参考文献】
【文献】 特開2013−238965(JP,A)
【文献】 特開2010−49420(JP,A)
【文献】 特表2017−504856(JP,A)
【文献】 特開2004−13374(JP,A)
【文献】 特開2008−33583(JP,A)
【文献】 特開2012−38255(JP,A)
【文献】 米国特許出願公開第2017/0134429(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/33
(57)【特許請求の範囲】
【請求項1】
リソースサーバーにアクセスするための認可トークンを発行する認証認可サーバーに対する要求に、暗号鍵を用いて署名を付与するクライアント端末と、
前記クライアント端末からの要求に付与された署名を、復号鍵を用いて検証する認証認可サーバーと、を含む情報処理システムであって、
前記クライアント端末は、
前記認可トークンを取得するための要求である認可トークン要求を、前記署名が発行された時刻を含めて前記認証認可サーバーに送信する送信手段と、
前記認可トークン要求に対する応答を受信し、検証する検証手段と、
前記認証認可サーバーは、
前記送信手段によって送信された認可トークン要求に含まれる前記署名の発行時刻と、
前記認証認可サーバーにおける時刻と、が一定以上の時間差があるかを判定する判定手段と、
前記判定手段における判定に基づいて、前記認可トークン要求に対する前記応答として、前記認証認可サーバーにおける時刻を含めたエラー、または前記認可トークンを応答する応答手段と、
を有し、
前記送信手段によって送信された第一の認可トークン要求に含まれる前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが、前記判定手段によって一定以上の時間差があると判定された場合、
前記応答手段は、前記認証認可サーバーにおける時刻を含めたエラーを前記クライアント端末に応答し、
前記検証手段によって、前記エラーに前記認証認可サーバーにおける時刻が含まれていると検証された場合、
前記送信手段は、前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信する前記認証認可サーバーに送信する情報処理システム。
【請求項2】
前記判定手段によって、前記第二の認可トークン要求に含まれる前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが、一定以上の時間差があると判定されなかったことに伴い、
前記応答手段は、
前記認可トークンを前記クライアント端末に応答することを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記検証手段は、
前記応答に前記認可トークンが含まれているかを検証し、
前記検証手段によって、前記認可トークンが含まれていないと検証された場合に、
前記応答に前記認証認可サーバーにおける時刻が含まれているかを検証し、
前記認証認可サーバーにおける時刻が含まれていると検証された場合に、
前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信することを特徴とする請求項1または2に記載の情報処理システム。
【請求項4】
前記クライアント端末は、
前記エラーに含まれた前記認証認可サーバーにおける時刻と、前記クライアント端末における時刻との時間差を管理する管理手段を更に有し、
前記管理手段によって管理されている時間差に基づいて補正した、前記発行時刻を含めた第三の認可トークン要求を前記認証認可サーバーに送信することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理システム。
【請求項5】
前記認証認可サーバーは、
前記認可トークン要求に含まれる情報と署名に基づいてハッシュ値を算出し、保持する保持手段を更に有し、
前記クライアント端末から受信した認可トークン要求に含まれる情報と署名とに基づいてハッシュ値を算出し、算出されたハッシュ値が前記保持手段によって保持されたハッシュ値に含まれているかを判定し、
含まれていると判定された場合は前記エラーを送信することを特徴とする請求項1乃至4のいずれか一項に記載の情報処理システム。
【請求項6】
前記保持手段によって保持されたハッシュ値は、
前記判定手段によって、前記認可トークン要求に含まれる署名の発行時刻と、前記認証認可サーバーにおける時刻とが一定以上の差があると判定された場合に、前記認可トークン要求に含まれる情報と署名とに基づいて算出されることを特徴とする請求項5に記載の情報処理システム。
【請求項7】
前記保持手段は、
前記署名の有効期限を保持し、前記有効期限が過ぎた署名のハッシュ値を削除することを特徴とする請求項5または6に記載の情報処理システム。
【請求項8】
リソースサーバーにアクセスするための認可トークンを発行する認証認可サーバーに対する要求に、暗号鍵を用いて署名を付与するクライアント端末と、
前記クライアント端末からの要求に付与された署名を、復号鍵を用いて検証する認証認可サーバーと、を含む情報処理システムの制御方法であって、
前記クライアント端末は、
前記認可トークンを取得するための要求である認可トークン要求を、前記署名が発行された時刻を含めて前記認証認可サーバーに送信する送信ステップと、
前記認可トークン要求に対する応答を受信し、検証する検証ステップと、
前記認証認可サーバーは、
前記送信ステップによって送信された認可トークン要求に含まれる前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが一定以上の差があるかを判定する判定ステップと、
前記判定ステップにおける判定に基づいて、前記認可トークン要求に対する前記応答として、前記認証認可サーバーにおける時刻を含めたエラー、または前記認可トークンを応答する応答ステップと、
を有し、
前記送信ステップによって送信された第一の認可トークン要求に含まれる前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが、前記判定ステップによって一定以上の差があると判定された場合、
前記応答ステップは、前記認証認可サーバーにおける時刻を含めたエラーを前記クライアント端末に応答し、
前記検証ステップによって前記エラーに、前記認証認可サーバーにおける時刻が含まれていると検証された場合、
前記送信ステップは、前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信する前記認証認可サーバーに送信する情報処理システムの制御方法。
【請求項9】
リソースサーバーにアクセスするための認可トークンを発行する認証認可サーバーに対する要求に、暗号鍵を用いて署名を付与するクライアント端末であって、
前記認可トークンを取得するための要求である第一の認可トークン要求を、前記署名が発行された発行時刻を含めて前記クライアント端末が前記認証認可サーバーに送信する送信手段と、
前記送信手段によって送信された第一の認可トークン要求に対する応答を前記認証認可サーバーから受信する受信手段と、を有し、
前記受信手段によって受信した応答がエラーであった場合、
前記送信手段は、
前記エラーと共に受信した、前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信するクライアント端末。
【請求項10】
前記クライアント端末は、
前記認証認可サーバーから前記認可トークンを受信する第二の受信手段を更に有し、
前記第二の受信手段によって受け付けた認可トークンを前記リソースサーバーに送信することで、前記リソースサーバーが提供するサービスを利用することを特徴とする請求項9に記載のクライアント端末。
【請求項11】
前記クライアント端末は、
前記認証認可サーバーから受信した認可トークン要求を検証する検証手段を更に有し、
前記検証手段は、
前記応答に前記認可トークンが含まれているかを検証し、
前記認可トークンが含まれていないと検証された場合に、
前記応答に前記認証認可サーバーにおける時刻が含まれているかを検証し、
前記認証認可サーバーにおける時刻が含まれていると検証された場合に、
前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信することを特徴とする請求項9または10に記載のクライアント端末。
【請求項12】
前記クライアント端末は、
前記受信手段によって受信した前記認証認可サーバーにおける時刻と、前記クライアント端末における時刻との時間差を管理する管理手段を更に有し、
前記管理手段によって管理されている時間差に基づいて補正した前記発行時刻を含めた第三の認可トークン要求を前記認証認可サーバーに送信することを特徴とする請求項9乃至11のいずれか一項に記載のクライアント端末。
【請求項13】
リソースサーバーにアクセスするための認可トークンを発行する認証認可サーバーに対する要求に、暗号鍵を用いて署名を付与するクライアント端末の制御方法であって、
前記認可トークンを取得するための要求である第一の認可トークン要求を、前記署名が発行された発行時刻を含めて前記クライアント端末が前記認証認可サーバーに送信する送信ステップと、
前記送信ステップによって送信された第一の認可トークン要求に対する応答を前記認証認可サーバーから受信する受信ステップと、を有し、
前記受信ステップによって受信した応答がエラーであった場合、
前記送信ステップは、
前記エラーと共に受信した、前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信するクライアント端末の制御方法。
【請求項14】
コンピュータを、
リソースサーバーにアクセスするための認可トークンを発行する認証認可サーバーに対する要求に、暗号鍵を用いて署名を付与するクライアント端末として機能させるためのプログラムであって、
前記認可トークンを取得するための要求である第一の認可トークン要求を、前記署名が発行された発行時刻を含めて前記クライアント端末が前記認証認可サーバーに送信する送信手段と、
前記送信手段によって送信された第一の認可トークン要求に対する応答を前記認証認可サーバーから受信する受信手段と、を有し、
前記受信手段によって受信した応答がエラーであった場合、
前記送信手段は、
前記エラーと共に受信した、前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信するクライアント端末として機能させるためのプログラム。
【請求項15】
クライアント端末からの要求に付与された署名を、復号鍵を用いて検証する検証手段と、
リソースサーバーにアクセスするための認可トークンを発行する発行手段と、を有する認証認可サーバーであって、
前記認可トークンを取得するための要求である認可トークン要求に含まれる、前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが一定以上の差があるかを判定する判定手段と、
前記判定手段によって一定以上の差があると判定された場合、
エラーとして前記認証認可サーバーにおける時刻を前記クライアント端末に送信する送信手段と、
を有する認証認可サーバー。
【請求項16】
前記判定手段によって、前記認可トークン要求に含まれる発行時刻と前記認証認可サーバーにおける時刻とが一定以上の差がないと判定された場合、
前記認可トークン要求を送信したクライアント端末に対して前記認可トークンを送信することを特徴とする請求項15に記載の認証認可サーバー。
【請求項17】
前記認証認可サーバーは、
前記認可トークン要求に含まれる情報と署名に基づいてハッシュ値を算出し、保持する保持手段を更に有し、
前記クライアント端末から受信した認可トークン要求に含まれる情報と署名とに基づいてハッシュ値を算出し、算出されたハッシュ値が前記保持手段によって保持されたハッシュ値に含まれているかを判定し、
含まれていると判定された場合はエラーを送信することを特徴とする請求項15または16に記載の認証認可サーバー。
【請求項18】
前記保持手段によって保持されたハッシュ値は、
前記判定手段によって、前記認可トークン要求に含まれる署名の発行時刻と、前記認証認可サーバーにおける時刻とが一定以上の差があると判定された場合に、前記認可トークン要求を用いて算出されることを特徴とする請求項17に記載の認証認可サーバー。
【請求項19】
クライアント端末からの要求に付与された署名を、復号鍵を用いて検証する検証ステップと、
リソースサーバーにアクセスするための認可トークンを発行する発行ステップと、を有する認証認可サーバーの制御方法であって、
前記認可トークンを取得するための要求である認可トークン要求に含まれる、前記署名の発行時刻と、前記認証認可サーバーにおける時刻と、が一定以上の差があるかを判定する判定ステップと、
前記判定ステップによって一定以上の差があると判定された場合、
エラーとして前記認証認可サーバーにおける時刻を前記クライアント端末に送信する送信ステップと、
を有する認証認可サーバーの制御方法。
【請求項20】
コンピュータを、
クライアント端末からの要求に付与された署名を、復号鍵を用いて検証する検証手段と、
リソースサーバーにアクセスするための認可トークンを発行する発行手段と、を有する認証認可サーバーとして機能させるためのプログラムであって、
前記認可トークンを取得するための要求である認可トークン要求に含まれる、前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが一定以上の差があるかを判定する判定手段と、
前記判定手段によって一定以上の差があると判定された場合、
エラーとして前記認証認可サーバーにおける時刻を前記クライアント端末に送信する送信手段と、
を有する認証認可サーバーとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認可トークンを発行する情報処理システム、クライアント装置、認証認可サーバー、制御方法とそのプログラムに関する。
【背景技術】
【0002】
近年、インターネット上に展開されたクラウドサービスの利用が拡大している。これらクラウドサービスは個々にWebサービスのAPI(Application Programming Interface)を公開しており、他のアプリケーションからAPIを介してサービスが提供する機能を利用する事ができる。APIを呼び出す標準プロトコルでは、認可の連携を実現させるOAuth2.0の採用が進んでいる。
【0003】
OAuth2.0においてクライアントは、リソースサーバーが公開するAPIにアクセスするために、クライアントである事を認証する認証情報を用いて認証認可サーバーから認可トークンを取得する。APIへのアクセスは、取得した認可トークンを用いて実現される。
【0004】
クライアントの認証情報を認証認可サーバーに送信する形態としては、クライアントを一意に識別するためのクライアントIDおよび秘匿情報であるシークレットを送信する形態と、デジタル証明書によるデジタル署名(以下、アサーション)を用いる形態がある。
【0005】
前者の形態では、クライアントIDとシークレットはクライアントの秘匿情報であるため、クライアントと認証認可サーバー間でクライアントの秘匿情報をやりとりすることになる。その秘匿情報が漏洩した場合には、自由に認可トークンを発行できてしまう。
【0006】
一方のアサーションを用いる形態では、クライアントと認証認可サーバー間でやり取りする情報に含まれるのは、秘匿情報ではない署名と公開情報である。暗号鍵(秘密鍵)を有するクライアントのみが、認証認可サーバーに対するリクエストに署名を付与できるため、秘匿情報が漏えいすることなく、認証認可サーバーはクライアントを認証し、認可トークンを発行できる。
【0007】
アサーションは一般にJSON Web Token(JWT)で表現される。JWT形式のアサーションは、発行者の識別子(iss)、ユーザー識別子(sub)、利用を想定する主体の識別子(aud)、発行時刻(iat)、有効期限(exp)、トークン識別子(jti)などを含む各種情報に対し、署名が付与されている。認証認可サーバーは、署名とそれに含まれる各種情報を検証し、有効なアサーションであると判断した際に認可トークンを発行する。一方で、検証した結果、不正が確認された場合は認可トークン要求元にエラーを返す。
【0008】
このように、アサーションによりクライアントを認証する形態では、クライアントがJWT形式のアサーションを作成できさえすればいつでも認可トークン要求を認証認可サーバーに送信できる。
【0009】
セキュリティをより高めるために、アサーションに有効期限を設定する形態がある。これは、アサーションを含む認可トークン要求が詐取され、その認可トークン要求を再利用して認可トークンが取得される、いわゆるリプレイアタックを防ぐためである。セキュリティ向上のためには、アサーションの有効期限をできるだけ短く設定することが望ましい。そのため、例えば、アサーションの有効期限とアサーションの発行時刻との差が5分以上であるアサーションを受け付けない形態も考えられる。特許文献1には、電子証明書自身の発行時刻、あるいは有効期限を含む電子証明書の発行方法が開示されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2005−80127
【発明の概要】
【発明が解決しようとする課題】
【0011】
アサーションの有効期限とアサーションの発行時刻との差が設定されているシステムである場合、アサーションの有効期限と発行時刻とが検証の対象となる。その結果、クライアントにおいて設定されたアサーションの発行時刻が、認証認可サーバーにおいて不正であると判定されると、認可トークンが発行されない。不正な発行時刻がクライアントで設定される場合とは具体的に、クライアントに設定されている現在時刻が認証認可サーバーでの現在時刻とずれていたり、クライアントに時計機能が存在しなかったりする場合である。クライアントで設定されている現在時刻に基づいてアサーションの発行時刻が設定されるため、不正な発行時刻がアサーションに設定されることになる。
【0012】
本発明では、クライアント端末で設定されるアサーションの発行時刻が認証認可サーバーの現在時刻と異なる場合でも、アサーションの発行時刻を調整し、クライアント端末に認可トークン要求を再送させることにより、認可トークンを発行する情報処理システムを円滑に運用することを目的とする。
【課題を解決するための手段】
【0013】
リソースサーバーにアクセスするための認可トークンを発行する認証認可サーバーに対する要求に、暗号鍵を用いて署名を付与するクライアント端末と、前記クライアント端末からの要求に付与された署名を、復号鍵を用いて検証する認証認可サーバーと、を含む情報処理システムであって、前記クライアント端末は、前記認可トークンを取得するための要求である認可トークン要求を、前記署名が発行された時刻を含めて前記認証認可サーバーに送信する送信手段と、前記認可トークン要求に対する応答を受信し、検証する検証手段と、前記認証認可サーバーは、前記送信手段によって送信された認可トークン要求に含まれる前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが一定以上の時間差があるかを判定する判定手段と、前記判定手段における判定に基づいて、前記認可トークン要求に対する前記応答として、前記認証認可サーバーにおける時刻を含めたエラー、または前記認可トークンを応答する応答手段と、を有し、前記送信手段によって送信された第一の認可トークン要求に含まれる前記署名の発行時刻と、前記認証認可サーバーにおける時刻とが、前記判定手段によって一定以上の時間差があると判定された場合、前記応答手段は、前記認証認可サーバーにおける時刻を含めたエラーを前記クライアント端末に応答し、前記検証手段によって、前記エラーに前記認証認可サーバーにおける時刻が含まれていると検証された場合、前記送信手段は、前記認証認可サーバーにおける時刻を含めた第二の認可トークン要求を送信する前記認証認可サーバーに送信する。
【発明の効果】
【0014】
本発明により、クライアント端末で設定されるアサーションの発行時刻が認証認可サーバーの現在時刻と異なる場合でも、アサーションの発行時刻を調整し、クライアント端末に認可トークン要求を再送させることにより、認可トークンを発行する情報処理システムを円滑に運用することができる。
【図面の簡単な説明】
【0015】
図1】情報処理システムの構成図
図2】情報処理システムを構成する各種装置のハードウェア構成図
図3】実施例1における、認証認可サーバー110でのJWT形式のアサーションの検証を示したフローチャート
図4】実施例1における、クライアント端末130が認可トークンを取得するフロー
図5】実施例1における、クライアント端末130が認可トークンを取得するフロー
図6】実施例2における、クライアント端末130が認可トークンを取得するフロー
図7】実施例3における、認証認可サーバー110でのJWT形式のアサーションの検証を示したフローチャート
図8】JWT形式のアサーションに含まれる検証用情報の一例
図9】各種装置のソフトウェアモジュール構成図
図10】情報処理システムのクライアント端末130が認可トークンを取得するまでのシーケンス図
【発明を実施するための形態】
【0016】
以下、本発明を実施するための形態について図面を用いて説明する。
【0017】
[実施例1]
本実施例においては、インターネット上の各種サーバーにアプリケーションが設置されていることとする。アプリケーションはクライアント端末と連携し、様々な機能(サービス)をクライアント端末に提供する。
【0018】
本実施例に係る情報処理システムは、図1に示すような構成のネットワーク上で実現される。
【0019】
WAN100(Wide Area Network)は、World Wide Web(WWW)システムが構築されており、LAN101(Local Area Network)を介して各種装置に接続する。各種装置にはクライアント端末130、クライアント端末130の認証・認可を実現する認証認可サーバー110、クライアント端末130にサービスを提供するリソースサーバー120がある。
【0020】
リソースサーバー120が提供するサービスとしては例えば、クライアント端末130のデータをバックアップするサービスや、クライアント端末130のセンサー情報を分析するサービス等がある。クライアント端末130としては具体的に、パソコン、モバイル端末、画像形成装置などの機器が挙げられる。認証認可サーバー110はクライアント端末130を認証し、認証したクライアント端末から認可トークン要求を受信し、リソースサーバー120を利用するために必要な認可トークンを発行する。
【0021】
図1では各種サーバーが1台ずつ設置されている形態を示しているが、物理的な台数や構成は問わず、例えば認証認可サービスシステムとして、認証認可サーバー110やリソースサーバー120の機能を提供する形態でもよい。また、認証認可サーバー110やリソースサーバー120の機能を、複数の物理サーバーで実現する形態等でもよい。
【0022】
図2は本実施例に係る、認証認可サーバー110、リソースサーバー120、クライアント端末130を構成する情報処理装置の一般的なハードウェア構成である。なお、図2は一般的な情報処理装置のブロック図であり、本実施形態の各種デバイスには一般的な情報処理装置のハードウェア構成やIaaS(Infrastructure as a Service)として提供される情報処理装置の仮想的なハードウェア構成を適用できる。
【0023】
CPU231は、ROM233のプログラム用ROMに記憶された、或いはハードディスク(HD)等の外部メモリ241からRAM232にロードされたOSやアプリケーション等のプログラムを実行する。またCPU231は、システムバス234に接続される各ブロックを制御する。ここでOSとはコンピューター上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをOSと呼ぶ。後述する各シーケンスの処理はこのプログラムの実行により実現できる。RAM232は、CPU231の主メモリ、ワークエリア等として機能する。操作部I/F235は、操作部239からの入力を制御する。CRTコントローラ(CRTC)236は、CRTディスプレイ240の表示を制御する。ディスクコントローラ(DKC)237は各種データを記憶するハードディスク(HD)等の外部メモリ241におけるデータアクセスを制御する。ネットワークコントローラ(NC)238はWAN100もしくはLAN101を介して接続された各種装置との通信制御処理を実行する。
【0024】
尚、後述の全ての説明においては、特に断りのない限り実行のハード上の主体はCPU231であり、ソフトウェア上の主体は外部メモリ241にインストールされたアプリケーションプログラムである。
【0025】
次に図9を用いて、認証認可サーバー110、リソースサーバー120、クライアント端末130が有する機能について説明する。認証認可サーバー110は認証認可サーバー部1101、HTTPサーバー部1102、鍵管理部1103を有する。HTTPサーバー部1102はWAN100を介してクライアント端末130とリソースサーバー120と接続されており、HTTP通信を行う機能である。また、HTTPサーバー部1102はSSL/TLSによる通信が可能であり、不図示の証明書ストアを有する。
【0026】
認証認可サーバー部1101はHTTPサーバー部1102を介してWebブラウザー1301からの要求を受信し、受信した要求に対する結果を応答する機能である。具体的には、認可トークン要求をHTTPサーバー部1102がWebブラウザー1301から受信し、認可トークン要求に含まれるアサーションを検証する。検証に成功した場合は認可トークンを生成し、Webブラウザー1301に認可トークンを送信する。その際、認証認可サーバー部1101は、鍵管理部1103は予め管理している復号鍵(公開鍵)を用いて、クライアント端末130から受信したアサーションの署名を検証する。
【0027】
認証認可サーバー部1101は、生成された認可トークンに署名情報を付与する秘密鍵を保持するように構成する事もできる。その場合は、この秘密鍵を用いて認可トークンに署名情報を付与し、署名情報付きの認可トークンをクライアント端末130に対して発行する。
【0028】
リソースサーバー120のリソースサーバー部1201は、Webサービスを提供するためのAPIを公開する機能である。なお、認証認可サーバー110と同様に、HTTPサーバー部を備え、HTTPサーバー部を介して外部との受送信を実行する形態でもよい。
【0029】
クライアント端末130はWebブラウザー1301とクライアントアプリケーション1302、認証部1303、アサーション生成部1304、鍵管理部1305、応答検証部1306を有する。Webブラウザー1301はWWWを利用するためのユーザーエージェントによって実現される機能である。Webブラウザー1301はユーザーの操作により、認証認可サーバー110およびクライアントアプリケーション1302と通信を行う。クライアントアプリケーション1302は、リソースサーバー120が公開するAPIを実行することで自身が提供する機能と合わせたWebサービスをユーザーに提供する。
【0030】
認証部1303はユーザーを認証するための機能である。ユーザーはクライアント端末130の機能を利用するために、クライアント端末130における不図示の入力画面においてローカルユーザーIDとローカルユーザーパスワードを入力する。入力を受けたクライアント端末130は、認証部1303において予め登録されている情報(ローカルユーザーIDとローカルユーザーパスワード)と入力された情報とを照合することでユーザーの認証処理を行い、ログインコンテキストを生成する。なお認証処理の形態はこれに留まらず、例えば、ICカードを使った認証や指紋等の生体認証でもよい。
【0031】
ログインコンテキストは、クライアント端末130でローカルユーザーを識別するための情報であり、例えば、ローカルユーザーIDから構成される。このログインコンテキストはクライアントアプリケーション1302と認証部1303で共有される。以上が、各種装置が有する機能の説明である。
【0032】
また、アサーション生成部1304は、鍵管理部1305で予め管理されている秘密鍵を用いて、認可トークン要求に対して署名を付与する機能である。応答検証部1306は、認証認可サーバー110から受信した応答に認可トークン、または認証認可サーバー110の現在時刻が含まれているかを検証する機能である。
【0033】
図3を用いて、認証認可サーバー110でのJWT形式のアサーションの検証処理を説明する。図3のフローは、認証認可サーバー110がクライアント端末130から認可トークン要求を受信したことをきっかけに、認証認可サーバー110で実行される。
【0034】
認証認可サーバー部1101はクライアント端末130から受信した認可トークン要求に含まれるアサーションの署名を検証する(S301)。署名を検証する際には、鍵管理部1103が予め管理する公開鍵が用いられる。検証した結果、署名が正しいと判定された場合はS302へ、正しくないと判定された場合はS307へと進む。
【0035】
認証認可サーバー部1101は、アサーションに含まれる情報の中からアサーションの発行時刻を取得し、発行時刻が認証認可サーバー110の定める正常な発行時刻範囲内に収まっているかを確認する(S302)。正常な発行時刻範囲とは、現在時刻から許容されるずれの範囲である。例えば、正常な発行時刻範囲を±5分とする場合、「認証認可サーバー110の現在時刻−5分」≦t1≦「認証認可サーバー110の現在時刻+5分」における値t1が、正常な発行時刻範囲に相当する。アサーションの発行時刻(後述のiat)が正常な発行時刻範囲内である場合はS303へ、範囲内でない場合はS306へと進む。
【0036】
ここで図8に、アサーションに含まれる検証用情報の一例を示す。アサーションにはクライアント端末130の識別子(iss)、ユーザー識別子(sub)、サービスの識別子(aud)、アサーションの発行時刻(iat)、アサーションの有効期限(exp)が含まれる。
【0037】
クライアント端末130の識別子は、クライアント端末130を一意に識別できる識別子であって、デバイスのシリアル番号などが挙げられる。
【0038】
ユーザー識別子はユーザーを一意に識別できる識別子である。サービスの識別子には具体的に、リソースサーバーへのリクエスト送信先のURLが設定される。
【0039】
図8の検証用情報は、クライアント端末130を認証認可サーバー110にクライアント登録する際や、認証認可サーバー110が秘密鍵をクライアント端末130に対して発行する際に、認証認可サーバー110で発行され、クライアント端末130と認証認可サーバー110で共有されている情報である。アサーションは図8に示した検証用情報以外に、ヘッダー情報を含み、クライアント端末130の秘密鍵で行った署名が付与されて、アサーションを構成する。
【0040】
図3の説明に戻る。認証認可サーバー部1101は、アサーションに含まれる情報の中からアサーションの有効期限(exp)を取得し、アサーションの有効期限が認証認可サーバー110の定める正常な有効期限範囲内に収まっているかを確認する(S303)。正常な有効期限範囲とは、例えば、アサーションの有効期限を5分とする場合、「認証認可サーバー110の現在時刻」≦t2≦「認証認可サーバー110の現在時刻+5分」の範囲にある値t2である。アサーションに設定されるアサーションの有効期限は、クライアント端末130で予め設定されるものであり、認可トークンを用いて利用されるサービスによって有効期限を変える形態も可能である。
【0041】
S303において、有効期限が正常な時間の範囲に収まっている場合はS304へ、範囲外の場合はS306へ進む。
【0042】
認証認可サーバー部1101は、アサーションに含まれるその他の検証用情報を検証する(S304)。その他の検証用情報とは例えば、クライアント端末130の識別子(iss)や、ユーザー識別子(sub)等であるが、検証の対象とする情報や条件については特に限定しない。検証に成功した場合、認証認可サーバー部1101は認可トークンを発行し(S305)、不合格の場合はS306に進む。
【0043】
また、本実施例ではアサーションの発行時刻と有効期限を検証してから、それ以外の検証用情報を検証する形態を示したが、発行時刻と有効期限を検証する前に、それ以外の検証用情報を検証する形態でもよい。
【0044】
認証認可サーバー部1101は、アサーションに含まれるその他の検証用情報が不正な場合はWebブラウザー1301にエラーを返し(S306)、処理を終了する。エラー情報には、クライアント端末130がアサーションを修正するために、正当な有効期限等の情報をエラーとともに返す形態も可能である。
【0045】
S302においてのアサーションの発行時刻が正常な時間範囲に収まっていないと判定された場合、認証認可サーバー部1101はクライアント端末130の時計が正常に動作していない(、あるいは時計を有さないクライアント端末130である)と判断し、認証認可サーバー110の現在時刻を含めたエラーを返す(S307)。
【0046】
S301においてアサーションの署名が不正であると判定された場合、認証認可サーバー部1101はWebブラウザー1301にエラーを返し(S308)、処理を終了する。以上が、認証認可サーバー110におけるアサーションの検証フローである(S308)。
【0047】
図4を用いて、クライアント端末130が認可トークンを取得する処理を説明する。
【0048】
アサーション生成部1304は、クライアント端末130における現在時刻に基づいて、アサーションの発行時刻と有効期限を決定し、アサーションを発行する(S401)。アサーションを発行する際には、決定した発行時刻と有効期限を含む検証用情報に対し、予め保持している秘密鍵で署名される。
【0049】
アサーションの有効期限の決定方法としては具体的に、アサーションの発行時刻「2018.01.01 12:00:00」に対して、アサーションの有効期限が5分である場合、アサーションの有効期限は「2018.01.01 12:05:00」と決定される。
【0050】
認可トークン要求としてWebブラウザー1301は、S401で発行したアサーションを認証認可サーバー110に送信する(S402)。認可トークン要求を受信した後の認証認可サーバー110における処理は、図3のフローで示した通りである。
【0051】
図3の処理後、Webブラウザー1301は認可トークン要求に対する応答を受信する(S403)。
【0052】
応答検証部1306は、受信した応答に認可トークンが含まれているかを判定する(S404)。認可トークンを含まれていると判定された場合は処理を完了し、認可トークンを含まれていると判定された場合はS405に進む。
【0053】
応答検証部1306は、応答に認証認可サーバー110の現在時刻が含まれているかを判定する(S405)。現在時刻が含まれていると判定された場合にはS406へ進み、現在時刻が含まれていないと判定された場合は本処理をエラー終了する。
【0054】
アサーション生成部1304は、応答が含む認証認可サーバー110の現在時刻に基づいて、アサーションを再度発行する。その際、認証認可サーバー110の現在時刻をアサーションの発行時刻とし、その発行時刻に基づいて署名の有効期限を決定する。そしてアサーション生成部1304は、決定した発行時刻と有効期限を含むアサーションに秘密鍵で署名し、アサーションを再度発行する(S406)。発行したアサーションは、認証認可サーバー110に対して認可トークン要求として送信される(S402)。
【0055】
本実施例ではS405において、応答に現在時刻が含まれていない場合、エラー終了しているが、認可トークン取得失敗時の対応はこれに限定されない。例えば、図5のフローのように、時刻以外に起因するエラーとしてアサーションを修正するための情報を含むかを判定し(S1101)、含むと判定された場合はその情報に基づいてアサーションを修正する(S1102)。含まないと判定された場合は処理をエラー終了する。S1102の後はS402の処理に戻り、アサーション生成部1304は認証認可サーバー110に対し、修正したアサーションを送信する。時刻以外に起因するエラーの例としては、検証用情報(図8)に含まれるユーザー識別子等のエラーが考えられる。
【0056】
以上がクライアント端末130における認可トークンの取得フローである。
【0057】
図10に、クライアント端末130が認可トークン要求を送信し、クライアント端末130に対してリソースが提供されるまでのシーケンス図を示す。上記で説明済みの部分については同じ符番を振り、詳細な説明は省略する。
【0058】
S305において、認証認可サーバー110が認可トークンを発行すると、発行された認可トークンはクライアント端末130に送信される(S1001)。リソース要求として、発行された認可トークンをリソースサーバー部1201に送信し(S1002)、認可トークンが検証された(S1003)ことに応じて、リソースがクライアント端末130に提供される(S1004)。以上が認可トークン要求を送信してからリソースが提供されるまでの処理である。
【0059】
本実施例により、クライアント端末130の現在時刻が認証認可サーバー110の現在時刻と異なっていても、クライアント端末130は認証認可サーバー110の現在時刻に基づいて新たな認可トークン要求を送信することが出来る。
【0060】
[実施例2]
本実施例では、認可トークン要求の度に認証認可サーバー110からのエラーに基づいて、アサーションを修正することなく、認可トークンを取得する形態を示す。実施例1で既に説明された部分については、説明を省略する。
【0061】
実施例2において、クライアント端末130は時計もしくはクライアント起動時からのカウントを示すカウンター値などを保持しているものとする。ここでカウンター値とは、時計を有さない機器が起動する度に、0からカウントアップされる値である。
【0062】
認証認可サーバー110でのアサーションの検証処理は実施例1の場合(図3)と同様なので、省略する。また、実施例1で説明済みの処理についても同じ符番を振り、詳細な説明は省略する。
【0063】
図6は、実施例2においてクライアント端末130がJWT形式のアサーションを用いて認可トークンを取得するフローである。
【0064】
クライアント端末130は、時刻補正情報を保持しているかを確認する(S601)。時刻補正情報とは、認証認可サーバー110とクライアント端末130の時間差を記録した値であり、クライアント端末130で管理される。時刻補正情報の一例は後述する。時刻補正情報は図6のフローを初めて実行した際にはクライアント端末130において保持されていないため、S401へ進む。2回目以降の図6の処理であれば時刻補正情報が保持されているため、S602に進む。
【0065】
S601で時刻補正情報が保持されていないと判定された場合、クライアント端末130はアサーションを発行する(S401)。
【0066】
S601で時刻補正情報が保持されていると判定された場合、クライアント端末130の現在時刻を時刻補正情報で補正した現在時刻をもとにアサーションの発行時刻及び有効期限を決定し、アサーションを発行する(S602)。表1は時刻補正情報の一例を示す。クライアント端末130の現在時刻が「2018.01.01 12:00:00」であり、保持されている時刻補正情報が「+32400秒」である場合、補正後の現在時刻は32400秒後の「2018.01.01 21:00:00」となる。これにより、認証認可サーバー110との時刻ずれを補正することができる。
【0067】
【表1】
【0068】
S402〜S405の処理により、認証認可サーバー110からのエラーに含まれる現在時刻を取得した後、認証認可サーバー110の現在時刻とクライアント端末130の現在時刻の時間差を時刻補正情報として保持する(S603)。例えば、クライアント130の現在時刻が「2018.01.01 1:00:00」のとき、認証認可サーバー110の現在時刻が「2018.01.01 10:00:00」だった場合、その時間差を算出し「+32400秒」という時刻補正情報が算出され保持される。時刻補正情報を算出した後は、S601の処理に戻る。
【0069】
図6で示した処理では、クライアント端末130が時計を保有していることを想定している形態である。しかし、クライアント端末130が時計を保有しない場合でも、クライアント端末130のカウンター値をUNIX(登録商標)時刻として処理を行うことで同様に補正することができる。
【0070】
表2は、カウンター値により算出された時刻補正情報の一例である。たとえば、クライアント端末130のカウンター値が30である場合、カウント開始時刻「1970.01.01 00:00:00」から算出して現在時刻「1970.01.01 0:00:30」が特定される。それに基づいて、認証認可サーバー110の現在時刻「2018.01.01 10:00:00」との時間差から「+ 1514768370秒」という時刻補正情報を算出することができる。
【0071】
【表2】
【0072】
本実施例により、クライアント端末130が時計を有するかどうかに関わらず、認証認可サーバー110の現在時刻との時間差に基づいて、アサーションを生成することができる。
【0073】
[実施例3]
クライアント端末130の現在時刻が認証認可サーバー110における現在時刻に対して未来に設定されている場合、アサーションに設定されるアサーションの発行時刻は、認証認可サーバー110の現在時刻に対して未来の時刻となる。実施例1の処理に従えば、そのアサーションを含む認可トークン要求は、認証認可サーバー110においてエラーとして判定される。
【0074】
しかし、アサーションに設定された未来の時刻まで待ち、再度同じアサーションを含む認可トークン要求を認証認可サーバーに送信すると認可トークンを取得できてしまい、リプレイアタックを防ぐことができない。
【0075】
本実施例では、未来の発行時刻が設定されたアサーションによるリプレイアタックを防ぐ方法を、図7を用いて説明する。図7は認証認可サーバー110におけるアサーションの検証フローを示す。クライアント端末130における現在時刻が、認証認可サーバー110の現在時刻に対して未来に設定されているものとする。また、既に説明済みの処理については同じ符番を振り、詳細な説明は省略する。
【0076】
認可トークン要求を受信した認証認可サーバー部1101はアサーションを検証した後、認可トークン要求の検証を行う。具体的には、アサーションに含まれる情報(検証用情報と署名を含む)のハッシュ値が要求済トークンテーブルに存在するかを判定する(S701)。存在しないと判定された場合はS302の処理に進むが、存在すると判定された場合はエラーを返す。
【0077】
要求済トークンテーブルの一例を表3に示す。表3には、アサーションに設定されたアサーションの有効期限と、アサーションに含まれる情報のハッシュ値、要求済みの認可トークン要求を識別するためのID「001」が含まれる。
【0078】
【表3】
【0079】
S302において、アサーションの発行時刻が不正であると判定されたことに伴い、不正な認可トークン要求であるとみなす。そして、不正であると判定された認可トークン要求に含まれるアサーションの情報をハッシュ化し、要求済トークンテーブル(表3)にそのハッシュ値を記憶する(S702)。尚、認証認可サーバーにおける時刻をエラーとともに送信する処理(S307)とS702の順序は問わない。
【0080】
表3で、アサーションの有効期限を記載している理由を説明する。S302の処理では、アサーションの発行時刻が認証認可サーバー110の時刻に対して未来に設定されているのか、過去に設定されているのかは問わずに、ハッシュ値が要求済トークンテーブルに管理される。アサーションの発行時刻が未来に設定されている認可トークン要求のみを管理し、リプレイアタックを防ぎたいため、アサーションの有効期限が切れた(または既に切れている)レコードを要求済トークンテーブルから削除する。それにより、有効期限が過ぎリプレイアタックで用いられる恐れがない認可トークン要求を、要求済トークンテーブルで管理せずに済む。
【0081】
以上が、本実施例におけるアサーションの検証処理である。
【0082】
本実施例により、秘密鍵を保持していない不正なクライアント端末130であれば、検証用情報を正しい情報に書き換えたとしても署名ができず、S301で弾かれる。また、検証用情報を書き変えなければ、同じ認可トークン要求を認証認可サーバー110に送信することとなり、S701で弾かれる。
【0083】
また、本実施例では、ハッシュ値によりアサーションを識別しているが、アサーションをユニークに識別することができれば、その方法を限定するものではなく、トークン識別子(jti)をアサーション内に含めることで識別しても良く、発行者(iss)と発行時刻(iat)の組み合わせにより識別しても良い。
【0084】
以上のシーケンスにより、未来の時刻が設定されたトークン要求によるリプレイアタックを防止しつつ、正規のクライアント端末130に対しては認可トークン発行を行うことができる。
【0085】
[その他の実施例]
上記の実施例において、アサーションの署名で用いる秘密鍵は、クライアント端末130が予め保持している形態で説明したがそれには限定されない。クライアント端末130が認証認可サーバー110にアクセスして認証を行い、認証認可サーバー110から発行された秘密鍵を保持する形態などでも良い。
【0086】
また、本発明の目的は以下の処理を実行することによっても達成される。即ち、上述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【0087】
110 認証認可サーバー
120 リソースサーバー
130 クライアント端末
1101 認証認可サーバー部
1103 鍵管理部
1304 アサーション生成部
1305 鍵管理部
1306 応答検証部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10