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

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

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

<>
  • 特許5792732-モジュラーデバイス認証フレームワーク 図000002
  • 特許5792732-モジュラーデバイス認証フレームワーク 図000003
  • 特許5792732-モジュラーデバイス認証フレームワーク 図000004
  • 特許5792732-モジュラーデバイス認証フレームワーク 図000005
  • 特許5792732-モジュラーデバイス認証フレームワーク 図000006
  • 特許5792732-モジュラーデバイス認証フレームワーク 図000007
  • 特許5792732-モジュラーデバイス認証フレームワーク 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5792732
(24)【登録日】2015年8月14日
(45)【発行日】2015年10月14日
(54)【発明の名称】モジュラーデバイス認証フレームワーク
(51)【国際特許分類】
   G06F 21/44 20130101AFI20150928BHJP
   H04L 9/32 20060101ALI20150928BHJP
【FI】
   G06F21/44
   H04L9/00 675B
【請求項の数】13
【全頁数】25
(21)【出願番号】特願2012-532275(P2012-532275)
(86)(22)【出願日】2010年9月29日
(65)【公表番号】特表2013-506918(P2013-506918A)
(43)【公表日】2013年2月28日
(86)【国際出願番号】US2010050729
(87)【国際公開番号】WO2011041419
(87)【国際公開日】20110407
【審査請求日】2013年9月24日
(31)【優先権主張番号】12/570,416
(32)【優先日】2009年9月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】ジョエル シー.ヘッグ
(72)【発明者】
【氏名】シッダールタ スリラム
(72)【発明者】
【氏名】カムレシュ ティー.タルレージャー
【審査官】 金沢 史明
(56)【参考文献】
【文献】 特開2006−031522(JP,A)
【文献】 特開平10−304333(JP,A)
【文献】 特開2003−308297(JP,A)
【文献】 特開2007−257426(JP,A)
【文献】 特開2009−290648(JP,A)
【文献】 特開2005−135412(JP,A)
【文献】 特開2005−102188(JP,A)
【文献】 特開2004−021686(JP,A)
【文献】 米国特許出願公開第2007/0113086(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/30−21/46
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
サービスへのアクセスを提供するために、1つ以上のコンピューティングデバイスで実行される方法であって、
1つ以上の前記コンピューティングデバイスによって、前記サービスへのアクセスをリクエストしているデバイスを認証する複数の認証モジュールを格納することであって、前記デバイスは、少なくとも、第1のデバイスタイプを有する第1の複数のデバイスと、第2のデバイスタイプを有する第2の複数のデバイスとを含む、格納することと、
1つ以上の前記コンピューティングデバイスによって、前記第1のデバイスタイプに特化した認証スキームを使用して、前記第1の複数のデバイスの認証を実行するように、前記複数の認証モジュールのうちの第1の認証モジュールを構成することと、
1つ以上の前記コンピューティングデバイスによって、前記第2のデバイスタイプに特化した認証スキームを使用して、前記第2の複数のデバイスの認証を実行するように、前記複数の認証モジュールのうちの第2の認証モジュールを構成することと、
1つ以上の前記コンピューティングデバイスによって、第3のデバイスタイプに対応するリクエストを受信するように、前記複数の認証モジュールのうちの第3の認証モジュールを構成することであって、前記複数の認証モジュールのうち第3の認証モジュールは、前記第3のデバイスタイプを認証するための代替の認証スキームを有する信頼できるパートナーデバイスへ、前記第3のデバイスタイプに対応するリクエストを伝送前記代替の認証スキームは、前記信頼できるパートナーデバイスが前記サービスへのアクセスのために前記リクエストしているデバイスへトークンを提供することを含み、前記トークンは、前記リクエストしているデバイスのデバイスタイプ識別子に少なくとも部分的に基づいている、構成することと、
1つ以上の前記コンピューティングデバイスによって、前記サービスにアクセスするためのリクエストを前記サービスへのアクセスをリクエストしているデバイスから受信することであって、前記リクエストは、前記サービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含む、受信することと、
1つ以上の前記コンピューティングデバイスによって、前記リクエストから前記デバイスタイプ識別子を抽出することと、
1つ以上の前記コンピューティングデバイスによって、前記デバイスタイプ識別子は、前記第1のデバイスタイプと対応するか、前記第2のデバイスタイプと対応するか、または前記第3のデバイスタイプと対応するかを判定することと、
1つ以上の前記コンピューティングデバイスによって、前記デバイスタイプ識別子が前記第1のデバイスタイプと対応する場合に、前記第1の認証モジュールを選択することと、前記デバイスタイプ識別子が前記第2のデバイスタイプと対応する場合に、前記第2の認証モジュールを選択することと、前記デバイスタイプ識別子が前記第3のデバイスタイプと対応する場合に、前記第3の認証モジュールを選択することと、
1つ以上の前記コンピューティングデバイスによって、前記リクエストしているデバイスが前記サービスにアクセスすることが許可されているかどうかを判定するために、前記選択された認証モジュールを使用して前記リクエストを認証することであって、それによって前記リクエストしているデバイスに特化した前記認証スキームを使用して、前記リクエストしているデバイスの認証を実行することと、
1つ以上の前記コンピューティングデバイスによって、前記選択された認証モジュールが、前記リクエストしているデバイスが前記サービスにアクセスすることを認証されていることを判定する場合には、前記サービスへのアクセスを提供し、前記選択された認証モジュールが、前記リクエストしているデバイスが前記サービスにアクセスすることを認証されていないことを判定する場合には、前記サービスへのアクセスを回避することと
を含む方法。
【請求項2】
サービスへのアクセスを提供するために、1つ以上のコンピューティングデバイスで実行される方法であって、
1つ以上の前記コンピューティングデバイスによって、前記サービスにアクセスするためのリクエストを前記サービスへのアクセスをリクエストしているデバイスから受信することであって、前記リクエストは、前記サービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含む、受信することと、
1つ以上の前記コンピューティングデバイスによって、前記リクエストから前記デバイスタイプ識別子を抽出することと、
1つ以上の前記コンピューティングデバイスによって、前記リクエストしているデバイスについての対応するデバイスタイプを判定することと、
1つ以上の前記コンピューティングデバイスによって、前記デバイスタイプ識別子に基づいて、複数の認証モジュールから認証モジュールを選択することであって、前記複数の認証モジュールから前記認証モジュールを選択することは、対応する前記デバイスタイプが、前記複数の認証モジュールのうちの他の認証モジュールによって認識されないデバイスタイプ識別子を有する認識されないデバイスタイプであることに基づいて選択される、複数の認証モジュールから認証モジュールを選択することと、
1つ以上の前記コンピューティングデバイスによって、前記リクエストしているデバイスが前記サービスにアクセスすることが許可されているかどうかを判定するために、前記選択された認証モジュールを使用して前記リクエストを認証することであって、前記認証することは、信頼できるパートナーデバイスへ前記認識されないデバイスタイプに対応する前記リクエストを伝送することを含前記信頼できるパートナーデバイスは、前記リクエストしているデバイスに前記サービスへのアクセスを認証するトークンを提供し、前記トークンは、前記リクエストしているデバイスの前記デバイスタイプ識別子に少なくとも部分的に基づいている、認証することと、
1つ以上の前記コンピューティングデバイスによって、少なくとも、前記リクエストしているデバイスが前記サービスにアクセスすることを認証されているという判定に基づいて、前記サービスへのアクセスを提供することと、前記選択された認証モジュールが、前記リクエストしているデバイスが前記サービスにアクセスすることを認証されていないと判定することに応じて、前記サービスへのアクセスを回避することと
を含む方法。
【請求項3】
前記選択された認証モジュールは、前記リクエストしているデバイスが、前記サービスにアクセスすることを認証されているかどうかを判定するために、前記リクエストしているデバイスと機密情報データを共有する、請求項2に記載の方法。
【請求項4】
複数のデバイスタイプを有する複数のデバイスは、前記選択された認証モジュールによって前記サービスにアクセスする、請求項2に記載の方法。
【請求項5】
共通のURLを使用して、前記認証モジュールのうちの少なくとも2つがアクセスされる、請求項2に記載の方法。
【請求項6】
前記信頼できるパートナーデバイスは、前記リクエストしているデバイスへトークンを提供し、前記方法は、
1つ以上の前記コンピューティングデバイスによって、前記リクエストしているデバイスから前記トークンのコピーを受信することと、
1つ以上の前記コンピューティングデバイスによって、前記トークンの前記コピーが本物であるという判定に基づいて、前記サービスへのアクセスを提供することと
をさらに含む請求項2に記載の方法。
【請求項7】
前記トークンは、非公開/公開キーペアから公開キーに対応する非公開キーで暗号化され、前記選択された認証モジュールは、前記トークンが本物であるかどうかを判定するために、前記対応する公開キーで前記トークンを復号化すること、
をさらに含む請求項6に記載の方法。
【請求項8】
前記トークンは、前記リクエストしているデバイスから受信したユーザ名とパスワードとの組み合わせが前記信頼できるパートナーデバイスによって検証されることに応じて、前記信頼できるパートナーデバイスによって、前記リクエストしているデバイスへ提供される、請求項6に記載の方法。
【請求項9】
1つ以上の前記コンピューティングデバイスによって、前記リクエストしているデバイスから前記リクエストを受信する前に、前記リクエストしているデバイスへ認証トークンを提供することと、
1つ以上の前記コンピューティングデバイスによって、前記リクエストは、前記認証トークンに付随して生じることを検証することにより、前記選択された認証モジュールを使用して前記リクエストを認証することと
をさらに含む請求項2に記載の方法。
【請求項10】
サービスへのアクセスを提供するためのサーバであって、前記サーバは、
プログラム命令を実行するためのプロセッサと、
前記プログラム命令を格納するコンピュータ可読記録媒体であって、前記プログラム命令は、前記プロセッサによって実行される場合に、
サービスにアクセスするためのリクエストを受信し、前記リクエストは、前記サービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含み、
前記リクエストから前記デバイスタイプ識別子を抽出し、
前記リクエストしているデバイスについての対応するデバイスタイプを判定し、
前記デバイスタイプ識別子に基づいて、複数の認証モジュールから認証モジュールを選択、前記複数の認証モジュールから前記認証モジュールを選択することは、対応する前記デバイスタイプが、前記複数の認証モジュールのうちの他の認証モジュールによって認識されないデバイスタイプ識別子を有する認識されないデバイスタイプであることに基づいて選択され、
前記リクエストしているデバイスが、前記サービスにアクセスすることが許可されているかどうかを判定するために、前記選択された認証モジュールを使用して、前記リクエストしているデバイスの前記デバイスタイプに関する前記リクエストを認証、前記認証することは、信頼できるパートナーデバイスへ前記認識されないデバイスタイプに対応する前記リクエストを伝送することを含み、前記信頼できるパートナーデバイスは、前記リクエストしているデバイスへ前記サービスへのアクセスを認証するトークンを提供し、前記トークンは、前記リクエストしているデバイスのデバイスタイプ識別子に少なくとも部分的に基づいており
少なくとも、前記リクエストしているデバイスが、前記サービスにアクセスすることを認証されているという判定に基づいて、前記サービスへのアクセスを提供、前記サービスへのアクセスを提供することは、前記リクエストしているデバイスから前記トークンのコピーを受信し、および前記トークンの前記コピーが本物であるという判定することを含む、
プロセスを実行するコンピュータ可読記録媒体と
を備えるサーバ。
【請求項11】
前記選択された認証モジュールは、前記リクエストしているデバイスが、前記サービスにアクセスすることを認証されているかどうかを判定するために、前記リクエストしているデバイスと機密情報データを共有する、請求項10に記載のサーバ。
【請求項12】
コンピュータに、サービスへのアクセスを提供する方法を実行させるためのプログラムを記録したコンピュータ可読記録媒体であって、前記方法は、
サービスにアクセスするためにリクエストを受信するステップであって、前記リクエストは、前記サービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含む、受信するステップと、
前記リクエストから前記デバイスタイプ識別子を抽出するステップと、
前記リクエストしているデバイスについての対応するデバイスタイプを判定するステップと、
前記デバイスタイプが複数の認証モジュールのうちの他の認証モジュールによって認識されないデバイスタイプ識別子を有する認識されないデバイスタイプであることに基づいて、前記複数の認証モジュールから認証モジュールを選択するステップと、
前記リクエストしているデバイスが前記サービスにアクセスすることが許可されているかどうかを判定するために、前記選択された認証モジュールを使用して前記リクエストを認証するステップであって、前記認証するステップは、代替の認証スキームを有する信頼できるパートナーデバイスへ前記認識されないデバイスタイプに対応する前記リクエストを伝送するステップを含み、前記代替の認証スキームは、前記リクエストしているデバイスへ前記サービスへのアクセスを認証するトークンを提供し、前記トークンは、前記リクエストしているデバイスのデバイスタイプ識別子に少なくとも部分的に基づいている、認証するステップと、
少なくとも、前記リクエストしているデバイスが前記サービスにアクセスすることを認証されているという判定に基づいて、前記サービスへのアクセスを提供するステップであって、前記サービスへのアクセスを提供するステップは、前記リクエストしているデバイスから前記トークンのコピーを受信するステップと、および前記トークンの前記コピーが本物であるという判定するステップを含む、サービスへのアクセスを提供するステップと
を含むコンピュータ可読記録媒体。
【請求項13】
前記選択された認証モジュールは、前記リクエストしているデバイスが前記サービスにアクセスすることを認証されているかどうかを判定するために、前記リクエストしているデバイスと機密情報データを共有する、請求項12に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モジュラーデバイス認証フレームワークに関する。
【背景技術】
【0002】
オンラインエントリは、他の可能性の中でも、パーソナルコンピュータ(PC)、個人情報端末(PDA)、携帯電話、ポケットPC、スマートフォン、セットトップボックス、デジタルビデオレコーダ(DVR)、およびゲーム機を含む、種々の異なるクライアントデバイスへ、幅広い種々のサービスを提供する。これらのクライアントデバイスは、多くの場合、オンラインストアまたは聴覚的/視覚的コンテンツ、ソフトウェアプログラム、デジタル書籍、もしくは他の電子コンテンツの他のプロバイダ等の種々のウェブサービスにアクセスする。多くの場合において、特定のウェブサービスのための異なるクライアントデバイスによるリクエストは、ウェブサービスがリクエストを引き受ける前に認証しなければならない。
【0003】
異なるクライアントデバイスは、多くの場合、ウェブサービスへのアクセスを提供する異なる認証メカニズムをサポートする。例えば、いくつかのデバイスタイプは、デバイスの特定のブランドに一意の独自の認証メカニズムを使用してもよい。他のデバイスタイプは、セキュアソケットレイヤ(「SSL」)等の、より一般的なアプリケーションの認証メカニズムを使用してもよい。いくつかの場合では、この問題は、各ウェブサービスが特定の認証メカニズムを実装するように、デバイスの各タイプに別々のウェブサービスを提供することにより解決される。しかしながら、このようにして別々のウェブサービスが提供される場合、エンティティは特定のデバイスタイプに適合された別々のウェブサービスとして、各認証スキームを実装する必要があるため、種々のウェブサービスの間の労力の実質的な重複する場合がある。さらに、ベンダーは、URL(Uniform Resource Locators)等の各ウェブサービスについて、異なるアドレスを使用してもよい。これは、複数のデバイスタイプを有するユーザに、何らかの混乱を生じさせる場合がある。例えば、ユーザは、単一のベンダーがユーザの各デバイスについて、複数のウェブサイトおよび対応するURLを有することに気付いていない場合がある。このため、ユーザは、URLが別のデバイスで適正に機能している場合であっても、1つのデバイスでウェブサービスにアクセスしようとする際に、正しくないURLを使用する場合がある。既存のメカニズムは、例えば、デバイスを正しいURLにリダイレクトさせることで、この問題に対処できるが、これらのメカニズムは、その場しのぎであり、すべてのデバイスタイプによってサポートされていない可能性がある。従って、従来のデバイス認証メカニズムのこれらの制限を克服するための、システムおよび方法が必要である。
【図面の簡単な説明】
【0004】
本開示に組み込まれ、かつ本開示一部を成す添付の図面は、種々の開示された実施形態を示す。各図について説明する。
図1】サービスへのアクセスを提供するためのシステムの一例の図である。
図2】サーバのアーキテクチャの一例の図である。
図3】認証モジュールのアーキテクチャの一例の図である。
図4】別の認証モジュールのアーキテクチャの一例の図である。
図5】サービスへのアクセスを提供するためのルーチンの一例の流れ図である。
図6】デバイスリクエストを認証するためのルーチンの一例の流れ図である。
図7】デバイスリクエストを認証するための別のルーチンの一例の流れ図である。
【発明を実施するための形態】
【0005】
以下の発明を実施するための形態では、添付の図が参照される。可能な場合、同じまたは同様のパーツを参照するために、図および以下の記載において同じ参照番号が使用される。いくつかの例示的な実施形態が本明細書に記載されるが、修正、適合および他の実装が可能である。例えば、図に示される構成要素に置換、追加または修正を行ってもよく、本明細書に記載される例示的な方法は、ステップを置換、順序の付け直し、または開示された方法にステップを追加することで、修正してもよい。従って、以下の発明を実施するための形態は、開示された実施形態を制限するものではない。代わりに、添付の特許請求の範囲により、適正な範囲が定義される。
【0006】
開示された実施形態は、ウェブサービス等のサービスへのアクセスを提供するためのシステムおよび方法を提供する。システムおよび方法は、デバイスタイプが異なる認証スキームを実装する場合でも、多数の異なるデバイスタイプが、単一のウェブサービスにアクセスできるようにしてもよい。例えば、ウェブサービスを提供するサーバは、いくつかのデバイスタイプに特化した認証モジュールを格納してもよい。特定のデバイスリクエストがウェブサービスにアクセスする場合、サーバは、リクエストからデバイスタイプ識別子を抽出してもよい。サーバは、次いで、リクエストしているデバイスを認証するための適切な認証モジュールを選択してもよい。
【0007】
開示された実施形態に従い、コンピュータで実装される方法は、サービスへのアクセスを提供する。本方法に従い、認証モジュールは、サービスへのアクセスをリクエストしているデバイスを認証するために格納される。デバイスは、少なくとも、第1のデバイスタイプを有する第1の複数のデバイスおよび第2のデバイスタイプを有する第2の複数のデバイスを含む。認証モジュールのうちの第1の1つは、第1のデバイスタイプに特化した認証スキームを使用して、第1の複数のデバイスの認証を実行するように構成される。認証モジュールのうちの第2の1つは、第2のデバイスタイプに特化した認証スキームを使用して、第2の複数のデバイスの認証を実行するように構成される。サーバは、サービスにアクセスするためのリクエストを受信し、リクエストは、サービスをリクエストしているデバイスのデバイスタイプ識別子を含む。デバイスタイプ識別子がリクエストから抽出され、方法は、デバイスタイプ識別子が、第1のデバイスタイプまたは第2のデバイスタイプと対応するかどうかを判定する。第1の認証モジュールは、デバイスタイプ識別子が第1のデバイスタイプと対応する場合に選択され、第2の認証モジュールは、デバイスタイプ識別子が第2のデバイスタイプと対応する場合に選択される。リクエストは、リクエストしているデバイスがサービスにアクセスすることを許可されているかどうかを判定するために、選択された認証モジュールを使用して認証され、これにより、リクエストしているデバイスに特化した認証スキームを使用して、リクエストしているデバイスの認証を実行する。選択された認証モジュールが、リクエストしているデバイスがサービスへのアクセスが認証されていることを判定する場合、サービスへのアクセスが提供される。選択された認証モジュールが、リクエストしているデバイスがサービスにアクセスすることを認証されていないと判定する場合、サービスへのアクセスは回避される。
【0008】
別の開示された実施形態に従う、コンピュータで実装される方法は、サービスへのアクセスを提供する。本方法に従い、サービスにアクセスするためのリクエストが受信され、リクエストは、サービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含む。デバイスタイプ識別子はリクエストから抽出され、リクエストしているデバイスの対応するデバイスタイプが判定される。認証モジュールは、デバイスタイプ識別子に基づいて複数の認証モジュールから選択され、選択された認証モジュールは、リクエストしているデバイスのデバイスタイプに対する認証スキームを実装する。リクエストは、リクエストしているデバイスが、サービスにアクセスすることを許可されているかどうかを判定するために、選択された認証モジュールを使用して認証される。少なくとも、リクエストしているデバイスが、サービスにアクセスすることを認証されているという判定に基づいて、サービスへのアクセスが提供される。
【0009】
別の開示された実施形態に従い、サーバは、サービスへのアクセスを提供する。サーバは、プログラム命令を実行するためのプロセッサ、およびプログラム命令を格納するコンピュータ可読媒体を含む。プロセッサによって実行される場合、プログラム命令は、サービスにアクセスするためのリクエストを受信するように、プロセスを実行する。リクエストは、サービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含む。プログラム命令は、リクエストからデバイスタイプ識別子を抽出し、リクエストしているデバイスに対応するデバイスタイプを判定する。プログラム命令は、デバイスタイプ識別子に基づいて複数の認証モジュールから認証モジュールを選択し、選択された認証モジュールは、リクエストしているデバイスのデバイスタイプに対する認証スキームを実装する。プログラム命令は、リクエストしているデバイスが、サービスにアクセスすることを許可されているかどうかを判定するために、選択された認証モジュールを使用してリクエストを認証し、少なくとも、リクエストしているデバイスがサービスにアクセスすることを認証されているという判定に基づいて、サービスへのアクセスを提供する。
【0010】
図1は、開示された実施形態に従う、サービスへのアクセスを提供するためのシステム100の一例である。システム100は、サーバ上で実行するサービス(例えばウェブサービス)にアクセスするための1つ以上のクライアントデバイスの機能性を提供してもよい。システム100に示されるように、クライアント110、120、および130、サーバ140、証明機関150、信頼できないクライアントデバイス170、信頼できるパートナーサーバ180、およびレガシーデバイス190は、ネットワーク160に接続される。特定の数の構成要素が図1に示されているが、当業者は、任意の数のこれらの構成要素が提供されてもよいことを理解するであろう。当業者は、さらに、システム100の1つ以上の構成要素によって提供される機能が1つの構成要素に組み込まれてもよく、または複数の構成要素にわたって分散されてもよいことを認識するであろう。例えば、サーバ140は、いくつかのメインサーバと共にいくつかのバックアップサーバを含むサーバファームを使用して実装されてもよい。さらに、サーバ140は、本明細書に記載される種々の処理ステップを、複数のサーバにわたって分散することで、実装されてもよい。ネットワーク160は、クライアントデバイス110、120、および130、サーバ140、証明機関150、信頼できないクライアントデバイス170、信頼できるパートナーサーバ180、およびレガシーデバイス190等のシステム100内の種々の構成要素の間に通信を提供する。ネットワーク160は、共有ネットワーク、公開ネットワーク、または非公開ネットワークであってもよく、ワイドエリアネットワークまたはローカルエリアネットワークを包含してもよく、有線および/または無線通信ネットワークの任意の適した組み合わせを通して実装してもよい。さらに、ネットワーク160は、イントラネットまたはインターネットを含んでもよい。
【0011】
サーバ140は、コンピュータプログラムによって選択的に作動または再構成してもよい、1つ以上のプロセッサ145を有する、汎用コンピュータ(例えばパーソナルコンピュータ、ネットワークコンピュータ、サーバ、またはメインフレームコンピュータ)を備えてもよい。プロセッサ145は、メモリ146からの処理の命令を読み込み、かつ命令を実行することにより、開示された実施形態に従うステップまたは方法を実行してもよい。具体的には、ウェブサービス141およびウェブサービス142は、プロセッサ145による実行に適した、メモリ146に格納された命令として実装されてもよい。メモリ146は、ソフトウェアと同様にデータを格納する1つ以上のメモリまたは格納デバイスであってもよい。メモリ146は、例えば、RAM、ROM、磁気格納装置、または光学格納装置のうちの1つ以上を含んでもよい。さらに、メモリ146は、プロセッサ140によって実行される場合、以下に記載される1つ以上のステップを実行するプログラムモジュールを格納してもよい。
【0012】
他の実施形態では、サーバ140は、開示された実施形態に従う方法を実行するように、特に構成されてもよい。例えば、本明細書において開示された処理ステップのうちの1つ以上を、フィールドプログラマブルゲートアレイ(「FPGA」)、特定用途向け集積回路(「ASIC」)または適したチップセット上に実装してもよい。本明細書に記載される暗号化および復号化ステップは、かかるハードウェアデバイス上での実装に特に適している場合がある。サーバ140は、ウェブサービス141およびウェブサービス142等の種々のサービスへのアクセスを提供してもよい。サーバ140は、クライアントデバイス110、120、および130、および/またはかかるクライアントデバイスを動作するユーザを認証するための機能性を提供してもよい。例えば、ネットワーク150上で聴覚/視覚的またはソフトウェアコンテンツを提供するエンティティは、ウェブサービス141および142を使用して、かかるコンテンツを提供してもよい。
【0013】
クライアントデバイス110、120、および130が、異なる通信プロトコルまたはデータフォーマットを使用してもよいように、サーバ140は、さらに、その開示が、参照することによりその全体が本明細書に明示的に組み込まれる、2008年6月30日出願の米国出願番号第12/165,188号“Client-to-Service Compatibility Framework”により詳細に記載される、デバイス互換性レイヤ143も含んでもよい。例えば、デバイス互換性レイヤ143は、クライアントデバイス110、120、および130からの通信を、ウェブサービス141および142と互換可能な形態に変換してもよい。サーバ140は、さらに、以下により詳細に記載されるように、ウェブデバイス110、120、および130を認証するためのデバイス認証レイヤ144を含んでもよい。
【0014】
証明機関150は、コンピュータプログラムによって選択的に作動または再構成されてもよい1つ以上のプロセッサ(図示せず)を有する汎用コンピュータ(例えばパーソナルコンピュータ、ネットワークコンピュータ、サーバ、またはメインフレームコンピュータ)を含んでもよい。さらに、証明機関150は、サーバ140、さらに、クライアントデバイス110、120および130と、ネットワーク160を介して通信してもよい。証明機関150は、サーバ140に関する上記の記載と同様の方法で、サーバファーム、分散技術、およびソフトウェアおよびハードウェアの種々の組み合わせを使用して実装されてもよい。証明機関150は、以下により詳細に記載されるように、デジタル証明書に含まれるデジタル署名を生成するための暗号化装置151を含んでもよい。
【0015】
クライアントデバイス110、120、および130は、サーバ140および証明機関150と通信するための任意のタイプのデバイスであってもよい。例えば、クライアントデバイス110、120、および130は、パーソナルコンピュータ、ハンドヘルドデバイス(例えばPDA、スマートフォンなどのような携帯電話、など)、テレビ、デジタル音楽プレーヤー、セットトップボックス、デジタルビデオレコーダ(DVR)、もしくゲーム機、または任意の他の適切なコンピューティングプラットフォームあるいはネットワーク160とデータを交換する能力を有するデバイスにしてもよい。クライアントデバイス110、120、および130は、それぞれ、例えば、1つ以上のプロセッサおよび1つ以上のメモリ(図示せず)を含んでもよい。ユーザは、ウェブブラウザ等のクライアントデバイス111、121、および131上に実装される適したアプリケーション論理を通して、ネットワーク160によって、サーバ140上のウェブサービス141および142にアクセスしてもよい。例えば、サーバ140は、クライアントデバイス111、121、および131上のアプリケーション論理によって処理され、ユーザに表示されるドキュメント(例えばウェブページ)を伝送してもよい。ドキュメントは、ユーザがウェブサービス141およびウェブサービス142等のサーバ140によって提供される1つ以上のセキュアなサービスにログオンするためのオプションを含んでもよい。例えば、ユーザは、ユーザ名(例えば電子メールアドレス)およびパスワード等の証明書を提供することにより、クライアントデバイス110、120、および130上で使用するためのデジタルコンテンツにアクセスするために、ウェブサービス141および142にログオンしてもよい。
【0016】
信頼できないクライアントデバイス170は、上記に記載されるように、クライアントデバイス110、120、および130と同様であってもよい。しかしながら、信頼できないクライアントデバイス170は、サーバ140上で利用可能な認証メカニズムをサポートしないデバイスタイプであってもよい。信頼できるパートナーサーバ180は、上記に記載されるように、サーバ140と同様であってもよい。信頼できるパートナーサーバ180は、ウェブサービス141および142と同様であってもよい、ウェブサービス181へのアクセスを提供してもよい。信頼できないクライアントデバイス170は、ウェブサービス141および142にアクセスするために、信頼できるパートナーサーバ180と通信してもよい。例えば、信頼できないクライアントデバイス170は、信頼できるパートナーサーバ180によって認証してもよく、信頼できるパートナーサーバ180は、信頼できないクライアントデバイス170に、セキュアなトークンを提供してもよい。信頼できないクライアントデバイス170は、次いで、ウェブサービス141へアクセスするために、セキュアなトークンを使用してもよい。
【0017】
サーバ140は、ウェブサービス141および142にアクセスするために、クライアントデバイス110〜130、信頼できないクライアントデバイス170、およびレガシーデバイス190から、リクエストを受信してもよい。サーバ140は、次いで、各リクエストを認証するための適切な認証モジュールを選択してもよい。選択された認証モジュールは、リクエストを発行するデバイスに依存してもよい。このようにして、サーバ140は、選択された認証モジュールを介して、デバイスタイプに特化した認証スキームを提供してもよい。
【0018】
図2は、開示された実施形態に従う、サーバ140のアーキテクチャの一例の図を示す。上記されるように、サーバ140は、クライアントデバイス110、120および130から、ウェブサービス141および142と互換性のある形態へ通信を変換するためのデバイス互換性レイヤ143を含んでもよい。サーバ140は、さらに、認証モジュール221〜225を使用して、クライアントデバイス110、120、および130を認証するためのデバイス認証レイヤ144も含んでもよい。サーバ140は、以下により詳細に記載されるように、クライアントデバイス110、120および130から認証モジュール221〜225のうちの適切な1つへ、リクエストを経路指定するために総合的に役立つ、認証フィルタ226およびモジュールセレクタ227をさらに含んでもよい。
【0019】
クライアントリクエストが認証モジュール221〜225のうちの1つによって認証された後、リクエストは、ウェブサービス141またはウェブサービス142等の適切なサービスに受け渡される。代替的に、リクエストが認証されない場合、適切な認証モジュールは、サービスにリクエストを経路指定しなくてもよい。ウェブサービス141は、認証後にほとんどのリクエストが経路指定される、「デフォルト」または「標準」のウェブサービスであってもよい。ウェブサービス142は、組み込まれた認証メカニズムを有するレガシーウェブサービスであってもよく、レガシーデバイス190等の特定のレガシーデバイスタイプに特化してもよい。以下に記載されるように、認証モジュール221〜225は、クライアントデバイス110、120、および130からの種々のリクエストを認証するため、認証されたリクエストは適切なウェブサービスに受け渡される。図2は構成要素の特定の番号および配設を示すが、任意の番号または配設の認証モジュールまたは他の構成要素をサーバ140で使用してもよい。
【0020】
図3は、開示された実施形態に従う、認証モジュール221のアーキテクチャの例示的なブロック図を示す。認証モジュール221は、多数の異なるデバイスタイプによってサポートされる認証スキームを実装してもよい。例えば、以下の記載の目的のために、クライアントデバイス110および130は、2つの異なるデバイスタイプになっている。クライアントデバイス110および130は、共に、SSL(セキュアソケットレイヤ)、ネットワークにわたるセキュアな通信を可能にするセキュリティプロトコルを実装してもよい。認証モジュール221は、クライアントデバイス110および130と安全に通信し、これらを認証するために、サーバ140上にSSLを実装してもよい。いくつかの実施形態では、認証モジュール221は、SSLのアップグレードバージョンであるTLS(トランスポートレイヤセキュリティ)プロトコルを実装してもよい。
【0021】
SSL/TSL処理を実装するために、認証モジュール221は、サーバ証明書301を格納してもよい。サーバ証明書301は、以下により詳細に記載されるように、1つ以上のクライアントデバイスに対してサーバ140を認証するように使用されてもよい。認証モジュール221は、1つ以上のクライアントデバイスによる特定のSSL/TSLセッション中に通信を暗号化するためのセッションキー302をさらに格納してもよい。サーバ140は、デジタル署名を作成するために暗号化装置303を使用してもよく、サーバ140は、以下により詳細に記載されるように、デジタル署名を検証するように復号化装置304を使用してもよい。これらのSSL/TSLセッションは、ウェブサービス141から電子コンテンツをダウンロードするために、クライアントデバイスによって使用されてもよい。
【0022】
図4は、開示された実施形態に従う、認証モジュール222のアーキテクチャの例示的なブロック図を示す。認証モジュール222は、特定のデバイス製造業者に関連付けられる1つ以上のデバイスタイプによってサポートされる、独自の認証スキームを実装してもよい。さらに、クライアントデバイス120は、独自の認証スキームを使用するデバイスであってもよい。
【0023】
認証モジュール222は、デバイス120と安全に通信し、デバイス120を認証するように、サーバ140上の独自の認証スキームを実装してもよい。いくつかの実施形態では、認証モジュール222は、独自の認証スキームに関連付けられるデバイス製造業者によって提供される。認証モジュール222は、さらに、クライアントデバイス120内に格納される共有された機密情報401を格納してもよい。認証モジュール222は、さらに、クライアントデバイス120によって送信されるウェブサービスへアクセスするためのリクエストの署名を検証するために使用される、署名検証装置402を含んでもよい。認証モジュール223、224、および225は、種々の他の認証スキームを実装してもよい。例えば、認証モジュール223は、認証なしでデータを通過させるにすぎない、「no−op」モジュールであってもよい。開発の目的と、ウェブサービス142のアクセスの目的との両方のために、認証モジュール223を使用してもよい。リクエストを認証せずに、リクエストが認証モジュール223を通過できるようにすることは、ウェブサービス142は内部認証スキームを有するため、セキュリティを危険にさらさない。
【0024】
認証モジュール224は、それによって信頼できないクライアントデバイス170がウェブサービス141にアクセスできる「セッション認証」スキームを実装してもよい。これを行うには、信頼できないクライアントデバイス170は、信頼できるパートナーサーバ180と連携してもよい。信頼できるパートナーサーバ180は、認証モジュール221を使用してウェブサービス141にアクセスしてもよく、サーバ140からセキュアなトークンを獲得する。サーバ140は、セキュアなトークンを作成するために使用される機密情報の暗号キーを格納してもよい。代替的に、信頼できるパートナーサーバ180は、さらに、暗号キーのコピーを格納してもよい。かかる実施形態では、信頼できるパートナーサーバ180は、セキュアなトークンを作成してもよい。いずれの場合においても、セキュアなトークンは、信頼できないクライアントデバイス170の識別子等の暗号化されたデータを含んでもよい。信頼できるパートナーサーバ180がセキュアなトークンを作成する、またはサーバ140からセキュアなトークンを取得すると、信頼できるパートナーサーバ180は、次いで、信頼できないクライアントデバイス170へセキュアなトークンを提供してもよい。信頼できないクライアントデバイス170は、サーバ140へ、ウェブサービス141のリクエストを有するトークンを送信してもよく、認証モジュール225は、トークンを検証することにより、リクエストを認証してもよい。例えば、認証モジュール225は、暗号キーによってトークンを復号化すること、および信頼できないクライアントデバイス170の識別子を検証することにより、セキュアなトークンを認証してもよい。
【0025】
いくつかの実施形態では、セキュアなトークンは、非対称のキーペアからの非公開キーを使用して、サーバ140または信頼できるパートナーサーバ180によって作成される。かかる実施形態では、セキュアなトークンが本物であるかどうかを判定するためにセキュアなトークンを復号化するように、対応する公開キーを使用してもよい。認証モジュール225は、登録されたIPアドレスのリストを格納するIPホワイトリスト認証スキームを実装してもよい。認証モジュール225は、登録されたIPアドレスからのリクエストがウェブサービス141を通過できるようにするのみでもよい。これを行うには、認証モジュール225は、リクエストに関連付けられるIPアドレスを判定し、許容可能なIPアドレスのホワイトリストとIPアドレスを比較し、リクエストに関連付けられるIPアドレスがホワイトリスト上にある場合に、ウェブサービス141へのアクセスを提供してもよい。
【0026】
認証モジュール225は、ウェブサービス141にアクセスするために新しいデバイスタイプを統合する場合に、特に有用である場合がある。例えば、新しいデバイスタイプは、結果的には、認証モジュール221の認証スキームをサポートするように意図されてもよい。しかしながら、ウェブサービス141へアクセスするために新しいデバイスタイプを開発および統合する場合、認証モジュール221を使用して先行する(forego)ことがより効率的である場合がある。ウェブサービス141をリクエストできるデバイスを制限するためにIPホワイトリストを使用することにより、デバイス統合は、より迅速に進行できる。デバイス統合プロセス中、新しいデバイスタイプは、コア機能性が試験されると認証モジュール221を使用するように、移行されてもよい。
【0027】
図5は、開示された実施形態に従う、サービスへのアクセスを提供するためのルーチン500の一例の流れ図である。ルーチン500は、メモリ146に格納されたプログラムモジュールのうちの1つ以上に従い、プロセスを実装してもよい。
【0028】
ルーチン500の開始時、ブロック501において、サーバ140は、クライアントデバイス110、120、および130、ならびに信頼できないクライアントデバイス170を認証するための認証モジュール221〜225を格納してもよい。上記に記載されるように、クライアントデバイス110、120、および130は、異なる認証スキームを使用する種々のデバイスタイプであってもよい。いくつかの実施形態では、認証モジュール221〜225は、それぞれ、共通のインターフェースを実装する1つ以上のクラスを含んでもよい。当業者には理解されるように、インターフェースは、インターフェースを実装する各クラスがサポートしなければならない一組の方法を定義してもよい。このため、認証モジュール221〜225のそれぞれは、インターフェースによって定義される共通の一組の認証方法をサポートするクラスを含んでもよい。
【0029】
ブロック502において、サーバ140は、上記に記載される特定の認証スキームを実装するように、認証モジュール221〜225を構成してもよい。例えば、管理者は、クライアントデバイス110および130によってサポートされるSSLプロトコルを実装するためにアプリケーションモジュール221を構成するように、サーバ140と相互作用してもよい。管理者は、さらに、クライアントデバイス120によってサポートされる独自のプロトコルを実装するように、アプリケーションモジュール222を構成してもよい。同様に、管理者は、上記のno−op、ホワイトリスト、およびセッション認証スキームを実装するように、アプリケーションモジュール223、224、および225をさらに構成してもよい。
【0030】
サーバ140上の外部アプリケーションソフトウェア、例えばウェブサービス141および142、デバイス互換性レイヤ210、認証フィルタ226、およびモジュールセレクタ227上の観点から、認証スキームは、共通のインターフェースによって定義される方法のうちの1つ以上を使用して呼び出されてもよい。このため、基礎的な認証スキームの詳細は、インターフェースを使用して要約されてもよく、外部ソフトウェアは、適切な認証モジュールを使用して、共通の方法を呼び出すことができる。
【0031】
次に、ブロック503において、サーバ140は、ウェブサービス141またはウェブサービス142にアクセスするためのリクエストを受信してもよい。上記に記載されるように、ウェブサービス141は、デフォルトのウェブサービスであってもよく、一方で、ウェブサービス142は、一般的には特定のレガシーデバイスタイプによってアクセスされるウェブサービスであってもよい。以下により詳細に記載されるように、サーバ140は、リクエストがウェブサービス141および142に達することができるようにする前にリクエストを認証するように、適切な認証モジュールへリクエストを経路指定してもよい。
【0032】
次に、ブロック504において、認証フィルタ226は、どのデバイスのタイプがウェブサービス141をリクエストしているかを判定するために、リクエストからデバイスタイプ識別子を抽出してもよい。いくつかの実施形態では、認証フィルタ226は、デバイスタイプ識別子のリクエストにおけるリクエストヘッダまたはパラメータリストを検索するJ2EEフィルタである。いくつかの実施形態では、対応するデバイスタイプを格納する表に対するデバイスシリアル番号またはMAC IDのマッピングなどのような、デバイスタイプを判定するために他のメカニズムを使用してもよい。
【0033】
ブロックS505において、デバイス認証フィルタ226は、モジュールセレクタ227への抽出されたデバイスタイプ識別子を提供してもよい。モジュールセレクタ227は、抽出されたデバイスタイプ識別子に基づいてリクエストを認証するように、適切な認証装置モジュール221〜225を判定してもよい。いくつかの実施形態では、モジュールセレクタ227は、そのそれぞれが、認証モジュール221〜225の特定の1つにマッピングされる、デバイスタイプ識別子の表と共に構成されるjava beanである。
【0034】
次に、判定ブロック506において、ブロック505において選択された認証モジュールは、リクエストを認証するかどうかを判定してもよい。以下により詳細に記載されるように、認証モジュール221〜225は、それぞれ、リクエストを認証するための異なる認証スキームを実装してもよい。しかしながら、判定ブロック506において、どの認証モジュールがリクエストを認証するかに関係なく、選択された認証モジュールによって実装されるもの以外に、さらなるセキュリティ技術を適用することができる。例えば、クライアントデバイスのユーザは、選択された認証モジュールによって要求される認証に加えて、ユーザ名およびパスワードを提供することにより認証されてもよい。加えて、いくつかの実施形態では、複数の認証モジュールは、総合的に、特定のリクエストを認証してもよい。
【0035】
図5に示されるように、選択された認証モジュールがリクエストを認証する場合、ルーチン500はブロック507に移動する。ブロック507において、サーバ140は、リクエストされたサービス、例えばウェブサービス141/142へのアクセスを提供する。このため、リクエストしているデバイスは、ウェブサービス141/142から利用可能な電子コンテンツにアクセスできる。しかしながら、選択された認証モジュールがリクエストを認証しない場合、ルーチン500はブロック508に移動し、サーバ140は、リクエストされたウェブサービス141/142へのアクセスを回避する。いくつかの実施形態では、リクエストしているデバイスは、無制限の認証試行回数が許可されていてもよい。他の実施形態では、リクエストしているデバイスからの以降のリクエストは、特定の回数の試行後にブロックされてもよい。
【0036】
上記されるように、ルーチン500のブロック505において、サーバ140は、デバイスから受信されるリクエストを認証するために認証モジュールを選択してもよい。リクエストを送信するデバイスのデバイスタイプによって、ブロック505において異なる認証モジュールが選択される。例えば、認証モジュール221〜225のうちの任意の1つを選択してもよい。以下の記載は、認証モジュール221〜225のうちの1つを選択するための処理の概要を提供する。
【0037】
認証モジュール221は、クライアントデバイス110およびクライアントデバイス130の両方を認証するために使用されてもよい。クライアントデバイス110およびクライアントデバイス130は、共に認証モジュール221にマッピングされる異なるデバイスタイプであってもよい。クライアントデバイス110またはクライアントデバイス130のいずれかがウェブサービス141にリクエストを送信する場合、モジュールセレクタ227は、認証モジュール221を選択する。認証モジュール221は、次いで、図6に関して以下により詳細に示されるように、SSLを使用してリクエストを認証してもよい。クライアントデバイス110および130は、異なるデバイスタイプ識別子を使用する異なるタイプのデバイスであってもよいが、両方のデバイスタイプは、認証モジュール221にマッピングされてもよい。
【0038】
クライアントデバイス120等のデバイスタイプを認証するように、認証モジュール222を使用してもよい。従って、クライアントデバイス120に対する抽出されたデバイスタイプ識別子に基づいて、モジュールセレクタ227は、認証モジュール222を選択してもよい。上記に記載されるように、認証モジュール222は、クライアントデバイス120等の特定のデバイスタイプの製造業者によってサポートされる独自の認証スキームを実装する。認証モジュール222は、図7に関して以下により詳細に記載されるように、独自の認証スキームを使用してリクエストを認証してもよい。認証モジュール223は、レガシーデバイス190等のレガシーデバイスタイプを認証するように使用されてもよい。記載されるように、レガシーデバイス190は、ウェブサービス142、つまり、組み込まれた認証スキームを有するレガシーウェブサービスを使用する。レガシーデバイス190からのリクエストから抽出されたデバイスタイプ識別子に基づき、モジュールセレクタ227は、認証モジュール223を選択してもよい。記載されるように、リクエストは、認証モジュール223を通してウェブサービス142へ直接通過することが許可されているため、認証モジュール223は、no−op認証スキームを実装してもよい。しかしながら、ウェブサービス142は、リクエストを認証するための組み込まれたレガシー認証メカニズムを実装するため、セキュリティが維持されてもよい。いくつかの実施形態では、ウェブサービス142に対するリクエストは、ウェブサービス141へアクセスするために、リクエストから別個のURLにアクセスされてもよい。
【0039】
認証モジュール224は、信頼できないクライアントデバイス170等のデバイスを認証するように使用されてもよい。信頼できないクライアントデバイス170は、モジュールセレクタ227によって認識されないデバイスタイプ識別子を使用してもよい。デバイスタイプ識別子が信頼できるデバイスからのものではない場合、モジュールセレクタ227は、信頼できるパートナーサーバ180を通したリクエストを認証するために、認証モジュール224を選択してもよい。これを行うためには、信頼できないクライアントデバイス170は、リクエストを有する信頼できるパートナーサーバ180の識別子を含んでもよい。認証モジュール224は、セキュアなトークンを作成し、信頼できるパートナーサーバ180へセキュアなトークンを伝送してもよい。代替的に、信頼できるパートナーサーバ180は、セキュアなトークンを作成してもよい。セキュアなトークンは、暗号キーにより、信頼できないクライアントデバイス170の識別子等のデータを暗号化することによって作成されてもよい。
【0040】
信頼できないクライアントデバイス170は、サーバ140による直接の認証ではなく、信頼できるパートナーサーバ180による認証のための、ステップを用いてもよい。例えば、信頼できないクライアントデバイス170は、ユーザ名およびパスワードを使用して、信頼できるパートナーサーバ180を認証してもよい。信頼できるパートナーサーバ180がリクエストを認証すると、信頼できるパートナーサーバ180は、信頼できないクライアントデバイス170へセキュアなトークンを伝送してもよい。
【0041】
信頼できないクライアントデバイス170は、サーバ140との以降の通信においてセキュアなトークンを含むことにより、ウェブサービス141にアクセスしてもよい。例えば、認証モジュール224は、暗号キーによってセキュアなトークンを復号化することにより、セキュアなトークンを認証してもよい。いくつかの実施形態では、セキュアなトークンは、事前設定された期限後に期限切れとなってもよい。サーバ140は、期限の切れたトークンを使用するウェブサービス141へのアクセスを可能にしなくてもよい。
【0042】
認証モジュール225は、IPホワイトリスト認証スキームを実装してもよい。この技術は、いかなるクライアントデバイスによる対応するサポートも、またはクライアントデバイスの修正もなしで容易に実装することができるため、認証モジュール225は、事実上、ウェブサービス141または142に対するいかなるリクエスト上で使用されてもよい。例えば、クライアントデバイス110および130からの任意のリクエストを認証するために、認証モジュール225を使用してもよい。かかる実施形態では、認証モジュール225は、リクエストを送信するデバイスのIPアドレスをチェックしてもよい。IPアドレスがホワイトリスト上にある場合、認証モジュール225は、次いで、以降の処理のために、認証モジュール221へリクエストを提供することができる。認証モジュール225は、認証モジュール222、223、および224と共に、同様の方法で使用されてもよい。さらに、上記されるように、いくつかの実施形態では、リクエストのスタンドアロン認証のために認証モジュール225を使用してもよい。例えば、ウェブサービス141が新しいデバイスタイプをサポートするために試験されている場合に、デバイス統合段階において認証モジュール225を使用してもよい。
【0043】
いくつかの実施形態では、認証モジュール221〜225のうちの1つ以上は、リクエストしているデバイスが認証されない場合でも、ウェブサービス141への制限されたアクセスを提供してもよい。例えば、ウェブサービス141は、そのうちのいくつかが電子コンテンツにアクセスするために使用され、他のものがウェブサービス141の種々の特徴を閲覧するように使用される、複数の方法を提供してもよい。かかる実施形態では、認証モジュール221〜225のうちの1つ以上は、リクエストしているデバイスがウェブサービス141を閲覧するために使用されている方法にアクセスしている場合に、ウェブサービス141へのアクセスを提供してもよいが、リクエストしているデバイスの、電子コンテンツをダウンロードする方法へのアクセスを可能にする前に、認証を必要とする場合がある。
SSL/TSL認証
【0044】
上記に記載されるように、認証モジュール221は、ウェブサービス141のリクエストの認証を実行するために、SSLまたはTSLを使用してもよい。図6は、ルーチン500のブロック506を実装するために認証モジュール221によって使用される例示的なルーチン600を示す。以下の記載は、クライアントデバイス110がウェブサービス141へのアクセスをリクエストしていると仮定する。しかしながら、既に記載されるように、クライアントデバイス110および130は、共に、SSL/TSL認証をサポートしてもよい。以下に記載されるように、クライアントデバイス110およびサーバ140の両方は、ルーチン600を使用して互いに認証するためにステップを実行してもよい。
【0045】
ブロック601において、認証モジュール221は、クライアントデバイス110からウェブサービス141のリクエストを受信してもよい。記載されるように、リクエストは、ウェブサービス141から利用可能な電子コンテンツ等の、任意のタイプのセキュアなデータにアクセスするためであってもよい。さらに、記載されるように、リクエストは、モジュールセレクタ227から認証モジュール221へ受け渡されてもよい。
【0046】
次に、ブロック602において、サーバ140上の認証モジュール221は、格納されたサーバ証明書301をクライアントデバイス110へ送信してもよい。サーバ証明書301は、サーバ140の識別子、証明機関の識別子150、およびサーバ140に一意の公開暗号化キーを含んでもよい。サーバ証明書301は、さらに、証明機関150によって生成されるデジタル署名を含んでもよい。
【0047】
クライアントデバイス110がサーバ証明書301を受信後、ブロック603において、クライアントデバイス110は、サーバ証明書301を使用してサーバ140を認証する。例えば、クライアントデバイス110は、まず、サーバ証明書301が証明機関150によって作成されたことを確実にするために、デジタル署名を検証してもよい。次いで、クライアントデバイス110は、サーバ証明書301から公開暗号化キーを抽出してもよく、サーバ140から通信を認証するために公開暗号化キーを使用してもよい。次に、ブロック604において、クライアントデバイス110は、サーバ140へクライアント証明書を送信してもよい。クライアント証明書は、クライアントデバイス110の識別子、証明機関150の識別子、およびクライアントデバイス110に一意の公開キーを含んでもよい。クライアント証明書は、さらに、暗号化装置151を使用して、証明機関150によって作成されたデジタル署名を含んでもよい。例えば、ルーチン600の前に、証明機関150は、クライアント証明書を作成し、クライアントデバイス110へ証明書を伝送し、クライアントデバイス110上にクライアント証明書を格納している場合がある。
【0048】
次に、ブロック605において、サーバ140は、クライアント証明書を使用してクライアントデバイス110を認証する。例えば、サーバ140は、最初に、サーバ証明書301が証明機関150によって作成されたことを確実にするために、クライアント証明書上のデジタル署名を検証してもよい。次いで、サーバ140は、クライアント証明書から公開暗号化キーを抽出してもよく、復号化装置304を使用してクライアントデバイス110からの通信を検証するために公開暗号化キーを使用してもよい。
【0049】
次に、ルーチン600は、ブロック608に移動する。ブロック606において、クライアントデバイス110およびサーバ140は、これらの間の通信を暗号化するために使用される非公開キーを相互に確立してもよい。この非公開キーは、セッションキー302として図3に示される。ブロック609において、クライアントデバイス110は、セッションキー302によって暗号化された通信を使用してウェブサービス141にアクセスしてもよい。いくつかの実施形態では、セッションキー302は、サーバ140およびクライアントデバイス110によるより効率的な暗号化処理を可能にする、対称の暗号化キーである。
【0050】
いくつかの実施形態では、クライアントデバイス110は、サーバ140が通信に添付するデジタル署名を検証することにより、ブロック603においてサーバ140からの通信を認証してもよい。かかる実施形態では、サーバ140は、証明機関150によりルーチン600より前にサーバ140に提供された一意の非公開暗号化キーにより、暗号化装置303を使用してデジタル署名を生成してもよい。この一意の非公開キーは、サーバ140に指定された一意の公開キーをさらに含む、非対称のキーペアからの1つのキーであってもよい。
【0051】
同様に、いくつかの実施形態では、サーバ140は、クライアントデバイス110が通信に添付するデジタル署名を検証することにより、ブロック605においてクライアントデバイス110からの通信を認証してもよい。かかる実施形態では、クライアントデバイス110は、証明機関150によりルーチン600より前にクライアントデバイス110へ提供される一意の非公開暗号化キーを使用して、デジタル署名を生成してもよい。この一意の非公開キーは、クライアントデバイス110に割り当てられた一意の公開キーをさらに含む非対称のキーペアからの1つのキーであってもよい。
【0052】
さらに他の実施形態では、認証モジュール221は、ルーチン600のブロックのすべてを実行しなくてもよい。例えば、別々の負荷均衡化モジュール(図示せず)を、サーバ140上に提供してもよい。負荷均衡化モジュールは、複数のサーバにわたって負荷を分散させる役目があってもよく、さらに、SSL/TSL処理も実装してもよい。かかる実施形態では、負荷均衡化モジュールは、ルーチン600を実装し、ブロック605においてクライアント証明書が有効であると判定されるかどうかを示す認証モジュール221へ、結果を提供する。その場合、認証モジュール221は、ウェブサービス141へのアクセスを可能にする。そうではない場合、認証モジュール221は、ウェブサービス141へのアクセスを回避する。
【0053】
<独自の認証>
上記されるように、クライアントデバイス120は、独自の認証スキームをサポートしてもよく、認証モジュール222は、サーバ140上に独自の認証スキームを実装してもよい。図7は、かかる認証スキームを実装するためのルーチン700の一例の流れ図である。ルーチン700は、メモリ146に格納されたプログラムモジュールのうちの1つ以上に従うプロセスを実装してもよい。
【0054】
ブロック701において、共有された機密情報は、クライアントデバイス120に格納されてもよい。いくつかの実施形態では、共有された機密情報401は対称の暗号化キーである。代替的に、共有された機密情報401に、非対称のキーペアを使用することができる。共有された機密情報401が非対称のキーペアである実施形態では、クライアントデバイス120は、ペアからのキーのうちの1つを格納してもよく、認証モジュール222は、ペアからのもう一方のキーを格納してもよい。
【0055】
ブロック702において、共有された機密情報401は、共有された機密情報401として図4に示される、認証モジュール222に格納される。これは、クライアントデバイス120の製造業者とウェブサービス141のオペレータとの間で何らかの調整を必要とする場合がある。例えば、製造業者は、クライアントデバイス120内の改ざん防止メモリに共有された機密情報を埋め込んでもよく、また、セキュアなチャネルを通して、ウェブサービス141の動作へ、共有された機密情報401を提供する。
【0056】
ブロック703において、クライアントデバイス120は、ウェブサービス141のリクエストを作成してもよい。リクエストは、ウェブサービス141からリクエストされる特定の電子コンテンツを識別するデータの暗号化されていないブロックであってもよい。リクエストは、さらに、認証モジュール222へのクライアントデバイス120を識別する情報を含んでもよい。
【0057】
次に、ブロック704において、クライアントデバイス120は、共有された機密情報401を使用して、ウェブサービス121のリクエストに署名してもよい。例えば、クライアントデバイス120は、リクエストの機能に、共有された機密情報401を加えたものとしてハッシュを計算してもよい。クライアントデバイス120は、署名として、リクエストへハッシュを添付してもよい。いくつかの実施形態では、クライアントデバイス120は、さらに、署名されたリクエストを暗号化もしてもよい。ブロック705において、クライアントデバイス120は、署名されたリクエストをサーバ140へ送信してもよい。次に、ブロック706において、認証モジュール222は、署名検証装置402を使用してリクエスト上の署名を検証してもよい。例えば、署名検証装置402は、リクエストのハッシュ機能に共有された機密情報を加えたものを計算してもよく、また、ハッシュ値を付加された署名と比較してもよい。値が一致する場合、認証モジュール222は、リクエストがいじられていない、例えば攻撃者がリクエストを操作していないと考える。ブロック707において、クライアントデバイス120は、リクエスト上の署名が検証される場合に、ウェブサービス141にアクセスすることが許可されている。そうではない場合、ブロック708において、ウェブサービス141へのアクセスが回避される。
【0058】
当業者が理解されるように、ブロック501〜508、601〜609、および701〜708のうちの1つ以上は随意によるものであってもよく、特定の実施形態において、実装から省略してもよい。さらに、いくつかの実装において、ブロック501〜508、601〜607、および701〜708は、順序を付け直されてもよく、下位ステップを含んでもよく、かつ/または、追加のステップを含んでもよい。
【0059】
<トークンのさらなる利用>
記載されるように、認証モジュール224は、信頼できないクライアントデバイス170との通信を認証するために、セキュアなトークンを使用してもよい。記載される実装において、信頼できるパートナーサーバ180は、信頼できないクライアントデバイス170による認証処理を実行してもよく、信頼できるパートナーサーバ180は、信頼できないクライアントデバイス170へセキュアなトークンを伝送してもよい。しかしながら、セキュアなトークンの実装は、いずれかの特定の認証モジュールを使用するように制限されてはいない。むしろ、認証モジュール221〜225のうちのいずれかに加えて、セキュアなトークンを実装することができる。
【0060】
いくつかの実施形態では、セキュアなトークンは、対称の暗号キーに基づいてもよい。対称のキーは、サーバ140および特定のクライアントデバイスの間で、何らかの安全な方法で共有されてもよい。いくつかの実施形態では、クライアントデバイスは、対称のキーに基づいて、トークンによって事前に装着される。例えば、クライアントデバイス110がユーザに分散される前に、この2つのMAC ID、シリアル番号、またはこれら2つの組み合わせのハッシュ関数は、ハッシュ関数への入力として対称のキーを使用して計算されてもよい。いくつかの実施形態では、対称のキーは、ユーザがクライアントデバイス110を受信する時(例えばユーザがオンラインストア等の小売業者からデバイスを購入する場合)に、対応するトークンと共に生成されてもよい。他の実施形態では、トークンは、非対称のキーペアを使用して、サーバ140によって作成されてもよい。ペアからの非公開キーは、クライアントデバイス110へセキュアなトークンを提供する前に、セキュアなトークンを暗号化するように使用されてもよい。
【0061】
クライアントデバイス110がセキュアなトークンによって装着されると、セキュアなトークンをさらなるセキュリティのために使用してもよい。例えば、セキュアなトークンが認証モジュール221と共に使用される場合、SSL/TSLセッションがサーバ140とクライアントデバイス110との間に確立されると、ユーザは、ユーザ名およびパスワードを使用して認証する必要がなくてもよい。むしろ、クライアントデバイス110は、セキュアなトークンをサーバ140へ伝送してもよい。サーバ140は、対称のキー、または、非対称の暗号化を使用する場合に、キーペアからの公開キーを使用して、トークンを復号化してもよい。この実装は、ユーザ名およびパスワードの代替物としてトークンを使用できるため、ユーザにとっては、ウェブサービス141へアクセスしたいと思うたびに、それらのユーザ名およびパスワードを提出しなければならないというユーザのいくつかの不便な点が不要となる。
【0062】
上記の記載は、例示を目的として示されている。これは包括的なものではなく、開示された形態または実施形態と全く同じものに制限するわけではない。開示された実施形態の明細書および実施を考慮することにより、当業者には、修正および適合が明らかであろう。例えば、記載された実装はソフトウェアを含むが、開示された実施形態に従うシステムおよび方法は、ハードウェアおよびソフトウェアの組み合わせまたはハードウェアのみで実装することができる。ハードウェアの例としては、パーソナルコンピュータ、サーバ、ラップトップ、メインフレーム、マイクロ〜プロセッサ等を含む、コンピューティングシステムまたは処理システムが挙げられる。さらに、開示された実施形態の態様は、メモリに格納されるものとして記載されているが、当業者は、これらの態様は、2次的な格納デバイス、例えば、ハードディスク、フロッピーディスク、もしくはCD−ROMなどのような他のタイプのコンピュータ可読媒体、または他の形態のRAMまたはROM、USB媒体、DVD、または他の光学ドライブ媒体にも格納することができることを、理解するであろう。
【0063】
記載および開示された方法に基づくコンピュータプログラムは、経験豊かな開発者の技術の範囲内のものである。種々のプログラムまたはプログラムモジュールを、当業者に公知の技術のいずれかを使用して作成することができ、または、既存のソフトウェアに関連して設計することができる。例えば、プログラムセクションまたはプログラムモジュールを、.Net Framework,.Net Compact Framework(およびVisual Basic、C等の関連する言語)、Java(登録商標)、C++、HTML、HTML/AJAXの組み合わせ、XML、またはJavaアプレットを含むHTMLで、またはその手段によって設計することができる。かかるソフトウェアセクションまたはモジュールのうちの1つ以上は、コンピュータシステムまたは既存の電子メールまたはブラウザソフトウェアに統合することができる。
【0064】
第1項。
サービスへのアクセスを提供するためにコンピュータで実装される方法であって、
サービスへのアクセスをリクエストしているデバイスを認証するように認証モジュールを格納することであって、デバイスは、少なくとも、第1のデバイスタイプを有する第1の複数のデバイスと第2のデバイスタイプを有する第2の複数のデバイスとを含む、格納することと、
第1のデバイスタイプに特化した認証スキームを使用して、第1の複数のデバイスの認証を実行するように、認証モジュールのうちの第1の1つを構成することと、
第2のデバイスタイプに特化した認証スキームを使用して、第2の複数のデバイスの認証を実行するように、認証モジュールのうちの第2の1つを構成することと、
サーバにより、サービスにアクセスするためのリクエストを受信することであって、リクエストはサービスをリクエストしているデバイスのデバイスタイプ識別子を含む、受信することと、
リクエストからデバイスタイプ識別子を抽出することと、
デバイスタイプ識別子が、第1のデバイスタイプと対応するか、または第2のデバイスタイプと対応するかを判定することと、
デバイスタイプ識別子が第1のデバイスタイプと対応する場合に第1の認証モジュールを選択することと、デバイスタイプ識別子が第2のデバイスタイプと対応する場合に第2の認証モジュールを選択することと、
リクエストしているデバイスが、サービスにアクセスすることを許可されているかどうかを判定するために、選択された認証モジュールを使用してリクエストを認証することにより、リクエストしているデバイスに特化した認証スキームを使用して、リクエストしているデバイスの認証を実行することと、
選択された認証モジュールが、リクエストしているデバイスがサービスにアクセスすることを認証されていることを判定する場合に、サービスへのアクセスを提供することと、選択された認証モジュールが、リクエストしているデバイスがサービスにアクセスすることを認証されていないことを判定する場合に、サービスへのアクセスを回避することと、を含む、方法。
【0065】
第2項。
第3のデバイスタイプに対応するリクエストを自動的に認証するように、認証モジュールのうちの第3の1つを構成することと、
第3のデバイスタイプを認証するための組み込まれた認証スキームを有する代替のサービスに、第3のデバイスタイプに対応するリクエストを転送することと、をさらに含む、第1項に記載のコンピュータで実装される方法。
【0066】
第3項。
選択されたリクエストに関連付けられるIPアドレスを判定することと、
可能なIPアドレスのリストと、IPアドレスを比較することと、
選択されたリクエストに関連付けられるIPアドレスが、許容可能なIPアドレスのリストに含まれる場合に、サービスへのアクセスを提供することにより、選択されたリクエストを認証するように、認証モジュールのうちの第3の1つを構成することをさらに含む、第1項に記載のコンピュータで実装される方法。
【0067】
第4項。
第1の認証モジュールが、リクエストしているデバイスがサービスにアクセスすることを認証されているかどうかを判定するために、セキュアソケットレイヤ(SSL)を使用する、第1項に記載のコンピュータで実装される方法。
【0068】
第5項。
サービスへのアクセスを提供するためにコンピュータで実装される方法であって、
サービスにアクセスするためのリクエストを受信することであって、リクエストはサービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含む、受信することと、
リクエストからデバイスタイプ識別子を抽出することと、
リクエストしているデバイスの対応するデバイスタイプを判定することと、
デバイスタイプ識別子に基づいて複数の認証モジュールから認証モジュールを選択することであって、選択された認証モジュールは、リクエストしているデバイスのデバイスタイプの認証スキームを実装する、選択することと、
リクエストしているデバイスが、サービスにアクセスすることを許可されているかどうかを判定するために、選択された認証モジュールを使用してリクエストを認証することと、
少なくとも、リクエストしているデバイスがサービスにアクセスすることを認証されているという判定に基づいて、サービスへのアクセスを提供することと、を含む、方法。
【0069】
第6項。
選択された認証モジュールは、リクエストしているデバイスが、サービスにアクセスすることを認証されているかどうかを判定するために、リクエストしているデバイスと機密情報データを共有する、第5項に記載のコンピュータで実装される方法。
【0070】
第7項。
選択された認証モジュールは、複数の方法へのアクセスを提供し、方法のサブセットは、認証されていないデバイスにアクセス可能である、第5項に記載のコンピュータで実装される方法。
【0071】
第8項。
複数のデバイスタイプを有する複数のデバイスは、選択された認証モジュールを介してサービスにアクセスする、第5項に記載のコンピュータで実装される方法。
【0072】
第9項。
認証モジュールのうちの少なくとも2つが共通のURLを使用してアクセスされる、第5項に記載のコンピュータで実装される方法。
【0073】
第10項。
信頼できるパートナーサーバが、リクエストしているデバイスへトークンを提供する方法であって、
リクエストしているデバイスからトークンのコピーを受信することと、
トークンのコピーが本物であるという判定に基づいて、サービスへのアクセスを提供することと、をさらに含む、第5項に記載のコンピュータで実装される方法。
【0074】
第11項。
トークンは非公開/公開キーペアから公開キーに対応する非公開キーによって暗号化され、方法は、
トークンが本物であるかどうかを判定するために、対応する公開キーによってトークンを復号化することをさらに含む、第10項に記載のコンピュータで実装される方法。
【0075】
第12項。
信頼できるパートナーサーバが、リクエストしているデバイスから受信されるユーザ名とパスワードとの組み合わせを検証した後で、信頼できるパートナーサーバによって、リクエストしているデバイスへトークンが提供される、第10項に記載のコンピュータで実装される方法。
【0076】
第13項。
リクエストしているデバイスからリクエストを受信する前に、リクエストしているデバイス内のトークンを事前格納することと、
リクエストが、事前に格納されたトークンに付随して生じることを検証することにより、選択された認証モジュールを使用してリクエストを認証すること、をさらに含む、第5項に記載のコンピュータで実装される方法。
【0077】
第14項。
選択された認証モジュールは、リクエストしているデバイスが、サービスにアクセスすることを認証されているかどうかを判定するために、セキュアソケットレイヤ(SSL)を使用する、第5項に記載のコンピュータで実装される方法。
【0078】
第15項。
サービスへのアクセスを提供するためのサーバであって、サーバは、
プログラム命令を実行するためのプロセッサと、
プログラム命令を格納するコンピュータ可読媒体であって、プログラム命令は、プロセッサによって実行される場合、
サービスへのアクセスのリクエストを受信することであって、リクエストは、サービスへのアクセスをリクエストするデバイスのデバイスタイプ識別子を含む、受信し、
リクエストからデバイスタイプ識別子を抽出し、
リクエストしているデバイスに対応するデバイスタイプを判定し、
デバイスタイプ識別子に基づいて、複数の認証モジュールから認証モジュールを選択することであって、選択された認証モジュールはリクエストしているデバイスのデバイスタイプについて認証スキームを実装する、選択し、
リクエストしているデバイスが、サービスにアクセスすることを許可されているかどうかを判定するために、選択された認証モジュールを使用してリクエストを認証し、かつ
少なくとも、リクエストしているデバイスがサービスにアクセスすることを認証されているという判定に基づいて、サービスへのアクセスを提供するようにプロセスを実行する、コンピュータ可読媒体と、を備える、サーバ。
【0079】
第16項。
選択された認証モジュールは、リクエストしているデバイスがサービスにアクセスすることを認証されているかどうかを判定するために、セキュアソケットレイヤ(SSL)を使用する、第15項に記載のサーバ。
【0080】
第17項。
選択された認証モジュールは、リクエストしているデバイスが、サービスにアクセスすることを認証されているかどうかを判定するために、リクエストしているデバイスと機密情報データを共有する、第15項に記載のサーバ。
【0081】
第18項。
プロセッサによって実行される方法を実行するためのプログラム命令を格納するコンピュータ可読媒体であって、方法は、サービスへのアクセスを提供し、プロセッサによって実行される、
サービスにアクセスするためのリクエストを受信するステップであって、リクエストは、サービスへのアクセスをリクエストしているデバイスのデバイスタイプ識別子を含む、ステップと、
リクエストからデバイスタイプ識別子を抽出するステップと、
リクエストしているデバイスに対応するデバイスタイプを判定するステップと、
デバイスタイプ識別子に基づいて、複数の認証モジュールから認証モジュールを選択するステップであって、選択された認証モジュールは、リクエストしているデバイスのデバイスタイプのために、認証スキームを実装する、ステップと、
リクエストしているデバイスが、サービスにアクセスすることを許可されているかどうかを判定するために、選択された認証モジュールを使用してリクエストを認証するステップと、
少なくとも、リクエストしているデバイスがサービスにアクセスすることを認証されているという判定に基づいて、サービスへのアクセスを提供するステップと、を含む、コンピュータ可読媒体。
【0082】
第19項。
選択された認証モジュールは、リクエストしているデバイスが、サービスにアクセスすることを認証されているかどうかを判定するために、セキュアソケットレイヤ(SSL)を使用する、第18項に記載のコンピュータ可読媒体。
【0083】
第20項。
選択された認証モジュールは、リクエストしているデバイスが、サービスにアクセスすることを認証されているかどうかを判定するために、リクエストしているデバイスと機密情報データを共有する、第18項に記載のコンピュータ可読媒体。
【0084】
加えて、本明細書では例示的な実施形態が記載されているが、本開示に基づいて当業者に理解されるように、同等の要素、修正、省略、組み合わせ(例えば種々の実施形態にわたる態様の)、適合、および/または変更を有する任意のおよびすべての実施形態の範囲。本特許請求の範囲における制限は、特許請求の範囲で使用される言語に基づいて幅広く解釈されるべきであり、例は非排他的であると解釈される、現在の明細書または出願の実施時において記載される例に制限されない。さらに、開示されたルーチンのブロックは、ブロックの順序の付け直しおよび/またはブロックの挿入または削除を含む、任意の方法で修正してもよい。従って、明細書および例は、以下の特許請求の範囲およびそれらの均等物の全範囲によって示される真の範囲および精神により、例示的にすぎないものとして考えられるように意図されている。
図1
図2
図3
図4
図5
図6
図7