(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-23
(45)【発行日】2024-09-02
(54)【発明の名称】認証連携サーバ、認証連携方法、認証連携システムおよびプログラム
(51)【国際特許分類】
G06F 21/33 20130101AFI20240826BHJP
【FI】
G06F21/33
(21)【出願番号】P 2021013917
(22)【出願日】2021-01-29
【審査請求日】2024-01-26
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】久保山 英生
【審査官】石坂 知樹
(56)【参考文献】
【文献】特開2018-133022(JP,A)
【文献】特開2017-027459(JP,A)
【文献】特開2018-018143(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/33
(57)【特許請求の範囲】
【請求項1】
ユーザ端末に対するサービスを提供するリソースサーバに対し、認証サーバと連携して、前記ユーザ端末の認証をするための機能を提供する認証連携サーバあって、
前記ユーザ端末の認証情報を前記認証サーバへ送信する認証情報送信手段と、
前記認証サーバから、前記ユーザ端末が前記リソースサーバにアクセスするために用いられるトークンを受信するトークン受信手段と、
認証成功したレスポンスを識別するためのコードを発行して前記リソースサーバに送信するコード発行手段と、
前記コードと前記トークンとを対応付けて保存する保存手段と、
前記リソースサーバから前記コードを送信された場合、当該コードに対応する前記トークンを前記リソースサーバへ送信するトークン送信手段と、
を有することを特徴とする認証連携サーバ。
【請求項2】
前記ユーザ端末で前記認証情報を入力するための認証画面を、前記ユーザ端末に提供する処理手段をさらに有することを特徴とする請求項1に記載の認証連携サーバ。
【請求項3】
前記リソースサーバからの認証リクエストを受信するリクエスト受信手段をさらに有し、
前記処理手段は、前記認証リクエストに基づいて前記認証画面を提供し、
前記コード発行手段は、前記認証リクエストの応答として前記コードを前記リソースサーバに送信することを特徴とする請求項2に記載の認証連携サーバ。
【請求項4】
前記コード発行手段は、OpenID Connectに準じて前記コードを送信し、前記トークン送信手段は、OpenID Connectに準じて前記トークンを送信することを特徴とする請求項1に記載の認証連携サーバ。
【請求項5】
前記トークンには、IDトークンもしくはリフレッシュトークンが含まれることを特徴とする請求項1に記載の認証連携サーバ。
【請求項6】
前記コードに対応するトークンを更新するリクエストを前記認証サーバに送信し、前記認証サーバから更新したトークンを受信するトークン更新手段をさらに有し、
前記トークン送信手段は、前記トークン更新手段によって更新したトークンを前記リソースサーバへ送信することを特徴とする請求項1に記載の認証連携サーバ。
【請求項7】
ユーザ端末に対するサービスを提供するリソースサーバに対し、認証サーバと連携して、前記ユーザ端末の認証をするための機能を提供する認証連携方法あって、
前記ユーザ端末の認証情報を前記認証サーバへ送信する認証情報送信工程と、
前記認証サーバから、前記ユーザ端末が前記リソースサーバにアクセスするために用いられるトークンを受信するトークン受信工程と、
認証成功したレスポンスを識別するためのコードを発行して前記リソースサーバに送信するコード発行工程と、
前記コードと前記トークンとを対応付けて保存する保存工程と、
前記リソースサーバから前記コードを送信された場合、当該コードに対応する前記トークンを前記リソースサーバへ送信するトークン送信工程と、
を有することを特徴とする認証連携方法。
【請求項8】
コンピュータを、
ユーザ端末に対するサービスを提供するリソースサーバに対し、認証サーバと連携して、前記ユーザ端末の認証をするための機能を提供する認証連携サーバあって、
前記ユーザ端末の認証情報を前記認証サーバへ送信する認証情報送信手段と、
前記認証サーバから、前記ユーザ端末が前記リソースサーバにアクセスするために用いられるトークンを受信するトークン受信手段と、
認証成功したレスポンスを識別するためのコードを発行して前記リソースサーバに送信するコード発行手段と、
前記コードと前記トークンとを対応付けて保存する保存手段と、
前記リソースサーバから前記コードを送信された場合、当該コードに対応する前記トークンを前記リソースサーバへ送信するトークン送信手段と、
を有することを特徴とする認証連携サーバとして機能させるためのプログラム。
【請求項9】
認証サーバと、
ユーザ端末に対するサービスを提供するリソースサーバに対して、前記認証サーバと連携して、前記ユーザ端末の認証をするための機能を提供する認証連携サーバあって、
前記ユーザ端末の認証情報を前記認証サーバへ送信する認証情報送信手段と、
前記認証サーバから、前記ユーザ端末が前記リソースサーバにアクセスするために用いられるトークンを受信するトークン受信手段と、
認証成功したレスポンスを識別するためのコードを発行して前記リソースサーバに送信するコード発行手段と、
前記コードと前記トークンとを対応付けて保存する保存手段と、
前記リソースサーバから前記コードを送信された場合、当該コードに対応する前記トークンを前記リソースサーバへ送信するトークン送信手段と、
を有することを特徴とする認証連携サーバとを有することを特徴とする認証連携システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認証サーバと連携して、ユーザ端末の認証をするための機能を提供する認証連携サーバに関する。
【背景技術】
【0002】
近年、サーバ装置が提供する様々な機能を、ユーザが使用するユーザ端末からネットワーク経由で利用可能にするサービスが広く展開されている。サービスを提供するサーバ装置(以下、リソースサーバ)は、多くの場合、リソースサーバが保有するリソースへのアクセスをユーザ端末から要求された際に、ユーザIDおよびパスワード等のアカウント情報を用いてユーザを認証することを要求する。
【0003】
しかし、ユーザ認証を行うためにリソースサーバは自身が提供するサービスのほかにユーザの認証を行うためのサーバ(以下、認証サーバ)を用意する必要がある。そこで、OpenID Connect(OIDC)などに代表されるように、あるクラウドサービスのIDプロバイダが発行するユーザIDを自身のユーザIDとして認証連携可能なサービスが提案され既に知られている。これらの認証サービスを利用することでリソースサーバは認証サービスを自身で用意する必要がなくなるため、自身のサービス開発に注力できる。
【0004】
特許文献1に開示されている技術では、認証用情報を外部認証システムに送信し、認証成功の場合、認証情報をアドレス情報と関連付けて保存する。そして、所定の画面における外部サービスの利用終了操作に応じて送信された利用終了要求に対する応答を受信すると、該外部サービスのアドレス情報と関連付けられた第1の認証情報を削除する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
利用する認証サービスが提供するOpenID Connectなどの認証連携機能や、認証に要するログイン画面などの機能がリソースサーバの要件を満たせば、特許文献1に開示されている技術を用いて、認証サーバを利用すれば良い。しかしながら、リソースサーバの要件によっては、認証サービスの認証連携機能が十分ではない場合がある。本発明は、上記課題を鑑みてなされたものであり、認証サーバと連携して、ユーザ端末の認証に関して必要な機能を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、ユーザ端末に対するサービスを提供するリソースサーバに対し、認証サーバと連携して、前記ユーザ端末の認証をするための機能を提供する認証連携サーバあって、前記ユーザ端末の認証情報を前記認証サーバへ送信する認証情報送信手段と、前記認証サーバから、前記ユーザ端末が前記リソースサーバにアクセスするために用いられるトークンを受信するトークン受信手段と、認証成功したレスポンスを識別するためのコードを発行して前記リソースサーバに送信するコード発行手段と、前記コードと前記トークンとを対応付けて保存する保存手段と、前記リソースサーバから前記コードを送信された場合、当該コードに対応する前記トークンを前記リソースサーバへ送信するトークン送信手段と、を有することを特徴とする
【発明の効果】
【0008】
本発明によれば、認証サーバと連携して、ユーザ端末の認証に関して必要な機能を提供することが出来る。
【図面の簡単な説明】
【0009】
【
図1】第一の実施形態における機能構成を表す図である。
【
図2】第一の実施形態におけるハードウェア構成図である。
【
図3】第一の実施形態における認証連携サーバのシーケンス図である。
【
図4】第一の実施形態におけるIDトークンに含まれるクレームを表す図である。
【
図5】第一の実施形態における保存部が保存するデータの一例を表す図である。
【
図6】第二の実施形態における認証連携サーバのシーケンス図である。
【発明を実施するための形態】
【0010】
(実施形態1)
図1は、本発明の実施形態1における認証連携サーバの機能構成を表す図である。同図において、101は、本実施形態における認証連携サーバである。102は、IDを管理し、認証処理およびトークン発行処理を行う認証サーバである。認証連携サーバ101と認証サーバ102とは連携して、認証連携システムとして機能する。103は、ユーザが利用するユーザ端末である。104は、ユーザがユーザ端末を介して利用するサービスを提供するリソースサーバである。リソースサーバ104は、トークンを用いてユーザ端末103のアクセスを管理する。
【0011】
105は、認証連携サーバ101がリソースサーバ104からの認証リクエストを受信する認証リクエスト受信部である。106は、認証連携サーバ101がユーザ端末103へ認証画面を提供すると共に認証画面で入力されたユーザの認証情報を処理する認証画面処理部である。107は、認証画面処理部から渡されるユーザの認証情報を認証サーバ102へ送信する認証情報送信部である。
【0012】
108は、認証成功時に認証サーバからトークンを受信するトークン受信部である。109は、コードを発行し、リソースサーバに送信するコード発行部である。110は、コードとトークンを対応づけて保存する保存部である。111は、トークンリクエストを受信するトークンリクエスト受信部である。112は、トークンリクエストの応答としてトークンを送信するトークン送信部である。113は、トークンを更新するトークン更新部である。
【0013】
図2は、本実施形態における認証連携サーバのハードウェア構成を表す図である。同図において、201はCPU(中央処理装置)であり、情報処理装置の制御プログラムを実行する。202はROMであり、制御プログラムなどを格納する。203はRAMであり、CPU201のワークエリアを提供するために用いられる。204は装置外のアプリケーションと通信するネットワークIFである。205はハードディスクなどの記憶装置であり、データを格納する。
【0014】
図3は、本実施形態における認証連携サーバがリソースサーバからのリクエストを受けて認証連携を行うシーケンス図である。
【0015】
まずステップS301で、ユーザがユーザ端末103よりリソースサーバ104の所定にアクセスする。例えばユーザ端末のブラウザから所定のURLを入力するとリソースサーバにアクセスされる。この時、リソースサーバ104は、リソースサーバとしてのユーザのログイン状態を確認する。ログイン状態の判断は、例えばリソースサーバのドメインに対応するブラウザのクッキー情報に有効なトークンがあるか否かで判断する。リソースサーバがログイン状態ではないと判断すると、ステップS302で認証連携サーバ101に遷移させる。認証連携サーバ101の遷移先としては、認証リクエスト受信部105に相当する。本実施形態は認証連携サーバ101がOpenID Connectに則った認証連携機能を提供するとして説明する。この場合、認証リクエスト受信部105はOpenID Connectの仕様に含む認可エンドポイントに相当する。この時、認可エンドポイントに遷移させる時の仕様として、クライアントID、スコープ、レスポンスタイプ、リダイレクトURIなどを認可エンドポイントへのリクエストパラメータに付与する。しかしながら、本発明はこれに限るものではなく、リソースサーバから認証連携の遷移先を提供できればどのような仕様であっても良い。
【0016】
次に、ステップS303で、認証画面処理部106が、認証画面をユーザ端末103へ提供する。
【0017】
ユーザはステップS304で、認証画面に対して認証情報を入力する。認証情報は代表的なものはIDとパスワードだが、生体認証情報などどのような情報でも良い。
【0018】
ユーザが認証情報を入力すると、ステップS305でユーザ端末103が認証情報を認証連携サーバ101へ送信する。認証連携サーバ101では、ステップS306で、認証情報送信部107により、認証サーバ102へ認証情報を送信する。
【0019】
認証サーバ102では、ステップS307において認証情報を検証し、認証する。認証情報が一致せず認証に失敗すれば失敗レスポンスを認証連携サーバ101に返却し、認証連携サーバ101はユーザ端末103へ失敗レスポンスを返却する。ユーザ端末では認証画面にて認証失敗のエラー表示を行う。一方、ステップS307にて認証サーバ102で認証に成功すると、認証サーバはステップS308においてトークンを発行し、認証連携サーバ101に認証の成功レスポンスと共にトークンを返却する。認証連携サーバ101は発行されたトークンをトークン受信部108で受信する。本実施形態ではここで発行するトークンをOpenID Connect仕様に準ずるIDトークンおよびリフレッシュトークンのペアとして説明する。
【0020】
図4はIDトークンに含まれるクレームの一例である。issはトークンの発行元であり、認証サーバ102を表す。subは認証サーバ102で認証したIDを一意に特定する値である。audはIDトークンの発行先のクライアントのIDをあらわし、リソースサーバ104に相当する。 iatはIDトークンの発行時刻をあらわす。expはIDトークンの有効期間をあらわす。auth_timeは認証サーバ102が認証した時刻を表す。preferred_usernameは認証情報のIDのユーザ名をあらわす。emailは認証情報に紐づくメールアドレスをあらわす。しかしながらこれはトークンの一例にすぎず、本発明はこれに限るものではない。
【0021】
次に、認証連携サーバ101がトークンと認証成功レスポンスを受信すると、ステップS309においてコード発行部109がコードを発行する。コードはUUIDなど、認証成功したレスポンスを識別できる情報であれば、どのようなものでも良い。
【0022】
次に、ステップS310において、保存部110が、コードとトークンを対応づけて保存する。
図5は保存部110がコードとトークンを対応付けて保存するデータベースの一例である。同図において、501はコードである。502は、認証サーバ102が発行したIDトークンである。503は、認証サーバ102がIDトークンと共に発行するリフレッシュトークンである。504は、リソースサーバ104がステップS302で認証連携サーバの認可エンドポイントへ遷移させる際に渡すクライアントIDである。505は、リソースサーバ104がステップS302で認証連携サーバの認可エンドポイントへ遷移させる際に渡すリダイレクトURIであり、後述するトークンエンドポイントでのリクエストパラメータ検証に用いる。506はコードの有効期間であり、この有効期間を超えたコードを使って後述するトークンリクエストが来た場合にはそのリクエストを無効とする。
【0023】
しかし本発明で保存部110が保存するデータはこれに限るものではなく、認証連携サーバ101が発行するコードと、認証サーバ102が発行するトークンとを対応付けて保存すれば本発明は適用できる。
【0024】
本発明は、認証連携サーバ101と異なる認証サーバで発行したトークンをステップS309で受信し、ステップS310で一度コードに対応付けて保存して後述するステップで利用することに特徴の一つがある。
【0025】
次に、ステップS311で、コード発行部109は、発行したコードをリソースサーバ104に送信する。OpenID Connectの認可コードフローに則れば、このコードは認可エンドポイントの認可コードになる。ステップS302での認証連携サーバの認可エンドポイントへの遷移に対して、認可エンドポイントに渡されたリダイレクトURIへコードをつけて遷移させることに相当する。
【0026】
次に、ステップS312で、リソースサーバ104が認証連携サーバ101へトークンをリクエストする。認証連携サーバ101はこのトークンリクエストをトークンリクエスト受信部111で受信する。OpenID Connect仕様の認可コードフローに則れば、このトークンリクエストは認可エンドポイントで発行した認可コードを使いトークンエンドポイントへIDトークンをリクエストすることに相当する。またこの場合、クライアントIDに対する認証情報や認可エンドポイントへの遷移時に指定したリダイレクトURIをリクエストパラメータとして渡す。トークンリクエスト受信部111はトークンリクエストのリクエストパラメータを検証する。しかし本発明はOpenID Connect仕様に限るものではない。
【0027】
トークンリクエスト受信部111がトークンを返却して良いと判断すると、ステップS313で、トークン送信部112がトークンリクエストに含むコードに対応するトークンを保存部110から取得し、リソースサーバ104へ送信する。
【0028】
リソースサーバ104はステップS314において、認証連携サーバから受け取ったトークンが認証サーバ102から発行された適切なトークンであるかを検証する。例えばトークンがIDトークンの場合、JWT(Json Web Token)形式のトークンであるため、公開鍵を認証サーバ102から取得し、トークンの署名を検証するとともに、
図4のクレームが適切かを検証する。
【0029】
トークンの検証に成功すれば、リソースサーバ104はステップS315において、リソースサーバとしてのログイン状態を管理し、ユーザ端末103にサービスを提供する。
【0030】
以上の構成およびシーケンスにより、本実施形態における認証連携サーバは、認証画面から認証情報を認証サーバに送信し、認証成功時に受信したトークンを、認証連携サーバで発行するコードと対応付けて保存する。
【0031】
これにより、認証サーバ102の認証機能やトークン発行機能、トークンの検証に要する公開鍵の提供機能などを利用しながらOpenID Connectなどの認証連携機能や認証連携サーバ独自の認証画面を提供することができる。
【0032】
(実施形態2)
実施形態1では、ステップS308で認証サーバが発行したトークンを保存部110がコードに対応づけて保存し、リソースサーバからトークンリクエストが来た時点でトークン送信部112が保存していたトークンをステップS313で送信している。したがって、
図4で示したIDトークンのトークン発行時刻(iatクレーム)は、厳密にはステップS313相当の時刻にはならず、ステップS308相当の時刻になる。また、トークン有効期限(expクレーム)も、ステップS308相当の時刻から決定される。従って、ステップS308とステップS313の時間の異なりでリソースサーバ側の処理や仕様の厳密性に影響が出る場合があり得る。
【0033】
これを解決する本実施形態のフローを
図6に示す。なお、実施形態1ではトークンの種類は任意であり、リフレッシュトークンは必須構成ではなかったが、本実施形態においてはリフレッシュトークンが必要となる。
【0034】
図6において、ステップS301からステップS307までは実施形態1の
図3のフローと同じである。認証サーバ102がステップS307で認証すると、ステップS601でトークンとリフレッシュトークンを発行する。認証連携サーバ101では、ステップS309で前記実施形態と同様にコード発行部109はコードを発行する。
【0035】
次に、ステップS602で、保存部110は、コードとリフレッシュトークンとを対応付けて保存する。この際、認証サーバ102がステップS601で発行したトークンは保存しても良いし、本実施形態では保存せずに捨てても構わない。リフレッシュトークンがコードと共に保存されれば良い。
【0036】
ステップS311、S312は実施形態1と同様である。トークンリクエスト受信部111がトークンリクエストを受信すると、トークン更新部113は保存部110からコードに対応するリフレッシュトークンを取得し、ステップS603で認証サーバ102に送信してトークン更新をリクエストする。認証サーバ102は、ステップS604で、トークン更新リクエストに応答して更新したトークンを発行する。そしてステップS605で、トークン送信部112は、更新されたトークンをリソースサーバ104に送信する。この時、トークン更新に利用したリフレッシュトークンもトークンと一緒にリソースサーバ104に提供しても良い。
【0037】
以上のシーケンスにより、本実施形態における認証連携サーバは、ステップS308で発行されるリフレッシュトークンを用い、ステップS312のトークンリクエスト受信時にトークンを更新する。これによりトークンに含まれるトークン発行時刻および有効期限はステップS604で更新された時刻に基づいて設定されるため、認証連携サーバの返すトークンとしてより適切な時刻を設定できる。
【0038】
(実施形態3)
実施形態1、2ではOpenID Connectの認可コードフローに基づいて説明し、認証サーバ102が発行するトークンもIDトークンとして説明したが、本発明はこれに限るものではない。例えばトークンが単なるUUIDなど、IDトークンではないフォーマットのものであっても良い。また、認証リクエスト受信部105がステップS302で遷移するエンドポイントがOpenID Connectの認可エンドポイントに準じていなくとも良い。また、トークンリクエスト受信部111がステップS312で受信するエンドポイントがOpenID Connectのトークンエンドポイントに準じていなくとも良い。認証サーバ102で発行したトークンを、認証連携サーバ101で発行したコードに対応付けて保存し、リソースサーバがそのコードでトークンをリクエストした時にコードに対応付けたトークンを返却しても良い。
【0039】
(実施形態4)
実施形態1から3においては認証連携サーバ101、認証サーバ102、リソースサーバ104の三種のサーバがあるが、これらは別々の装置で構成されるとは限らない。例えば、認証連携サーバ101とリソースサーバ104とが同じ装置で構成されていて、ステップS302、S311、S312、S313が同装置内で動作する機能間の通信でも良い。
【0040】
一方、認証連携サーバ101と認証サーバ102の機能を同じ装置で構成するのであれば、本来はステップS308のトークン発行をステップS307の認証直後に行わず、ステップS312の直後に行えば保存部110は不要になる。その場合、認証連携サーバ101、認証サーバ102のソフトウェアを同一装置内で動かす構成にした方が望ましい。
【0041】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0042】
101 認証連携サーバ
102 認証サーバ
103 ユーザ端末
104 リソースサーバ
105 認証リクエスト受信部
106 認証画面処理部
107 認証情報送信部
108 トークン受信部
109 コード発行部
110 保存部
111 トークンリクエスト受信部
112 トークン送信部
113 トークン更新部