説明

セキュリティサービスに実装するシステムおよび方法

【課題】ログインコンテキストを提供するシステムおよび方法を提供する。
【解決手段】仮想マシンがオープンサービスプラットフォームと認証サービスとを含み、前記認証サービスがクラスローダを含み、初期クラスローダが前記認証サービスのクラスローダとして指定されており、仮想マシンを操作し、ログインモジュールを登録し、第一のアプリケーションから認証要求を受信し、前記認証要求を受信したことに応答して前記認証サービスの前記クラスローダとして前記ログインモジュールに関連付けられたクラスローダを指定し、前記ログインモジュールのログインコンテキストを生成し、前記第一のアプリケーションへ前記ログインモジュールの前記ログインコンテキストを提供し、そして、前記第一のアプリケーションは、前記ログインコンテキストを用いて認証を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、参照することにより本明細書に含まれる2011年3月28日出願の米国特許出願公開13/073882号明細書の一部継続出願である。
【0002】
本発明は、認証一般に関する。
【背景技術】
【0003】
例えば、悪意のあるユーザやプログラムから保護する場合やリソースの過度の利用を防止する場合に、認証されたユーザにのみコンピュータリソースを利用可能となるように構成することがしばしば要求される。しかしながら、コンピュータリソースは、認証されたユーザやプログラムに利用可能にされるべきであるが、異なるコンピュータリソースはセキュリティの異なるレベルを必要とする可能性がある。リソースがセキュリティドメインを超えてアクセスされる必要があったり、異なるセキュリティサービスがリソースを保護するために利用されたり、異なるソフトウェアプラットフォームがセキュリティサービスとのインタフェースとして用いられたりするため、リソースを異なるユーザやプログラムが利用可能にすることは、より複雑なものとなる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
コンピュータ環境は、これらの問題を解決するためにいくつかの標準化ツールを提供する。Java(登録商標)環境において、JAAS(Java Authentication and Authorization Service)は、ユーザを認証し、ユーザに対するアクセス制御を実行することを開発者に可能にさせるセキュリティフレームワークを提供する。JAASもインタフェースを標準化し、基礎的な認証や認可メカニズムを概念化している。JAASログインモジュールは、実際の認証や認可を行っている。しかしながら、仮想マシンが動作している間は動的にログインモジュールの追加や削除ができないため、ログインモジュールは、仮想マシンが開始する前や開始した際に決定される必要がある。例えば、OSGiプラットフォームは、JAASのクラスパスに配置されるために、JAASによって提供されたログインモジュールを要求する。Java仮想マシンにおいて、クラスパスは、Javaコンパイラ/ランタイムがクラスファイルを探すであろうディレクトリもしくはJARファイルを含む。例えば、クラスパスが”example.class”を含むディレクトリやJARファイルを含んでいない限り、”example.class”は、Java仮想マシンによって見つけられないだろう。したがって、ログインモジュールは、Java仮想マシンが開始する前にクラスパスに追加されなければならず、言い換えると、このことが動的なログインモジュールの追加や削除を妨げる。
【課題を解決するための手段】
【0005】
一実施形態においては、ログインコンテキストを提供するための方法であって、仮想マシンを開始する工程と、前記仮想マシンは、オープンサービスプラットフォームと認証サービスとを含み、前記認証サービスは、クラスローダを含み、初期クラスローダは、前記認証サービスの前記クラスローダとして指定されており、ログインモジュールを登録する工程と、第1のアプリケーションから認証要求を受信する工程と、前記認証要求に応答して、前記認証サービスの前記クラスローダとして前記ログインモジュールに対応付けられたクラスローダを指定する工程と、前記ログインモジュールのログインコンテキストを生成する工程と、前記第1のアプリケーションに前記ログインモジュールの前記ログインコンテキストを提供する工程と、を有し、前記第1のアプリケーションは、認証を行うために前記ログインコンテキストを用いることを特徴とする。
【0006】
一実施形態においては、ログインコンテキストを作成するためのコンピュータデバイスであって、コンピュータ可読記録媒体と、1または複数のプロセッサと、を有し、前記1または複数のプロセッサは、前記コンピュータデバイスを、セキュリティプラットフォームを含む仮想マシンを動作する工程と、前記仮想マシンが動作している間、第1のログインモジュールを登録する工程と、前記セキュリティプラットフォームのクラスローダとして前記第1のログインモジュールに関連付けられた第1のクラスローダを割り当てる工程と、前記第1のログインモジュールのログインコンテキストを生成する工程と、第1のクライアントアプリケーションに前記第1のログインモジュールの前記ログインコンテキストを提供する工程とを実行するように構成されていることを特徴とする。
【0007】
一実施形態においては、1または複数のコンピュータデバイスによって実行される命令を格納した1または複数のコンピュータ可読媒体であって、前記1または複数のコンピュータデバイスを、セキュリティプラットフォームを含む仮想マシンが動作している間、セキュリティサービスを登録する工程と、前記セキュリティプラットフォームのクラスローダとして前記セキュリティサービスに関連付けられたクラスローダを指定する工程と、第1のプラットフォームから前記セキュリティサービスのコンテキストに対する要求を受信することに応答して、前記セキュリティサービスのコンテキストを生成する工程と、前記第1のアプリケーションへ前記セキュリティサービスの前記コンテキストを提供する工程として機能させ、前記セキュリティサービスのコンテキストを登録する前記工程は、前記指定されたセキュリティプラットフォームクラスローダを呼び出す工程を含む、ことを特徴とする。
【図面の簡単な説明】
【0008】
【図1】図1は、セキュリティサービスを導入するためのシステムの実施例を示すブロック図である。
【図2】図2は、セキュリティサービスを導入するためのシステムの実施例を示すブロック図である。
【図3】図3は、セキュリティデバイスの実施例を示すブロック図である。
【図4】図4は、セキュリティサービスを追加するための方法の実施例を示すフローチャートである。
【図5】図5は、ログインコンテキストを生成するための方法の実施例を示すフローチャートである。
【図6】図6は、ログインコンテキストを生成するための方法の実施例を示すフローチャートである。
【図7】図7は、セキュリティサービスを導入するためのシステムの実施例を示す図である。
【図8】図8は、セキュリティプロバイダの実施例を示すブロック図である。
【図9】図9は、コンフィグレーションテーブルの実施例を示す図である。
【発明を実施するための形態】
【0009】
以下の説明は、一定の説明のための実施形態であるが、クレームのスコープはその説明のための実施形態に限定されるものではない。また、説明のための実施形態は、いくつかの新規の特徴を含んでいてもよく、特有の特徴は以下に述べられるシステムや方法を実施するための必須のものでなくてもよい。
【0010】
図1は、セキュリティサービスを実装するためのシステム100の実施例を示したブロック図である。システム100は、動作している仮想マシンにおいて、セキュリティサービスの追加、変更、および削除を動的に許可し、システム100はオペレーティングシステム140(以下、OSと称する)、Java仮想マシン130(以下、JVMと称する)、Java Authentication and Authorization Service 135(以下、JAASと称する)、Open Services Gateway initiative platform 120(以下、OSGiと称する)、およびコンテキストファクトリ110を有する。システム100は、クライアントアプリケーション170およびセキュリティプロバイダ1 150−1〜セキュリティプロバイダN 150−Nを更に有し、ここでNはセキュリティプロバイダの数を示す。OS140はアプリケーションとハードウェアとの仲介手段として動作し、コンピュータデバイスのリソースの共有の管理、各リソースにアクセスするためのインタフェースの提供、他のアプリケーションに対するサービスの提供を行う。JVM130は、コード(例えば、JAVAバイトコード)を実行するマシン言語に変換するプラットフォーム非依存環境である。JAAS135は、認証および認可サービスを実装し、アプリケーションおよびユーザのアクセス制御を実行する。JAAS135は、異なるログインモジュールをシステムに構成できるようにし、異なるログインモジュールは、JAASアプリケーションプログラミングインタフェース(API)を介してアプリケーションにより構成およびアクセスされることができる。
【0011】
OSGiプラットフォーム120は、モジュールシステムと、JAVAのサービスプラットフォームと、アプリケーションやコンポーネント(以下、“バンドル”とまとめて称する)のインストール、開始、停止、アップデート、アンインストールをJVM130の再起動を要求することなく実行できる実行環境とを提供する。バンドルは、他のバンドルが利用可能なようにサービスを構成することができる。バンドルのサービスは、他のバンドルが検知し利用できるようにサービスレジストリに追加され、そのレジストリからのサービスの削除は、サービスの削除を検知するように用いられることができる。
【0012】
システム100は、他のアプリケーション、モジュール、バンドル、コンポーネントなどが利用可能なセキュリティサービスを構成するセキュリティサービスを含む。図1は、セキュリティプロバイダ1−N(以下、“セキュリティプロバイダ150”と称し、150−1、150−2、・・・、150−N)を示し、ここでのNはシステムが動作させることができるセキュリティプロバイダの全数を示す任意の正の整数を示している。セキュリティプロバイダ150(図8に示す)は、バンドル内に実装されることができ、これらのサービスをOSGiサービスとして利用できるようにする(OSGiサービスレジストリにサービスを追加することを含む)。セキュリティサービスプロバイダ150は、ログインモジュールを含むか、JAAS認証/認可サービスを含むサービスを提供すること、の両方もしくはいずれか一方を構成することができる。クライアントアプリケーション170は、バンドルであってもよく、クライアントアプリケーション170は、セキュリティプロバイダ150に1または複数のサービス(例えば、認証や認可)を要求してもよい。
【0013】
システム100は、OSGiプラットフォーム120にコンテキストファクトリ110を有する。コンテキストファクトリ110は、クライアントアプリケーション170によるセキュリティサービスのアクセスを円滑にする。セキュリティプロバイダ150がOSGiプラットフォーム上にロードされ、開始された場合、セキュリティプロバイダ150は、自身を登録し(例えば、コンテキストファクトリ110やカスタムコンフィグレーションユニット215(図2参照)に)、これは、セキュリティプロバイダ150によって提供される任意のサービスを登録することやサービスプロバイダおよび/もしくはサービスに対するクラスローダを登録することを含む。クラスローダは、仮想マシン(例えば、JVM)にクラス(例えば、Javaクラス)をロードする。クラスローダは、ライブラリを検索し、ライブラリのコンテンツを読み込み、ライブラリ内に格納されたクラスをロードする。ロードは、“オンデマンド”にて(すなわち、動的に)実行されることができるため、クラスがJVMによって実際に用いられるまでロードは実行されないようにしてもよい。
【0014】
コンテキストファクトリ110は、クライアントアプリケーション170からセキュリティサービスに対する要求を受け付け、クライアントアプリケーション170にセキュリティサービスのインタフェース(例えば、ログインコンテキスト)を返す。ログインコンテキストは、セキュリティサービスにインタフェースを提供し、後認証ユーザ信用情報を格納し、特権や許可をリストアップするオブジェクトである。ログインコンテキストは、セキュリティプロバイダ(例えば、ログインモジュール)からのメソッドを呼び出す“ログイン”手段を含む。また、ログインコンテキストは、JAASによってインスタンスを作成してもよく、JAAS APIに適合してもよい。インタフェース(例えば、LoginContextなどのログインコンテキスト)を用いることによって、クライアントアプリケーション170は、コンテキストファクトリ110(例えば、プロキシとして動作するコンテキストファクトリ110)の関与なしに、セキュリティサービスやセキュリティプロバイダ150と相互に通信できるようにしてもよい。したがって、クライアントアプリケーション170は、セキュリティサービスと通信を行うために、クライアントアプリケーションの指定および/またはセキュリティサービスの使用を簡略化するJAAS135の標準APIを用いることができる。
【0015】
図2は、セキュリティサービスを実装するためのシステム200の実施例を示したブロック図である。システム200は、OS240、JVM230、JAAS235、OSGiプラットフォーム220、クライアントアプリケーション270、およびセキュリティプロバイダ250を有する。更に、システムはコンテキストファクトリ210およびカスタムコンフィグレーションユニット215を有する。カスタムコンフィグレーションユニット215は、セキュリティプロバイダ250のサービスおよびクラスローダを登録する。カスタムコンフィグレーションユニット215は、セキュリティプロバイダ250に関するデータを格納するコンフィグレーションテーブル217を有し、コンフィグレーションテーブル217は、コンフィグレーション名、ログインモジュールクラス名、または/および、ログインモジュールクラスローダを含む。セキュリティプロバイダ250に関するデータは、コンフィグレーションテーブル217内の各コンフィグレーションエントリに格納されることができる。さらに、本実施形態において、コンテキストファクトリ210は1または複数のサービスとしてシステムの他のメンバが利用可能な機能性を構成するバンドルであり、コンテキストファクトリ210はOSGiフレームワークにそのサービスを追加する。その上、カスタムコンフィグレーションユニット215はバンドルであり、1または複数のサービスとして利用可能な機能性を構成するようにしてもよく、他の実施形態ではカスタムコンフィグレーションユニット215はバンドルではないようにしてもよい(例えば、OSGiプラットフォーム220の一部であってよい)。したがって、システム200は、JVMが動作している間、セキュリティプロバイダおよびクライアントアプリケーションの動的な追加および削除に加えて、コンテキストファクトリ210およびカスタムコンフィグレーションユニット215の動的な削除、変更、および追加を許可する。
【0016】
図3は、セキュリティデバイス300の実施例を示すブロック図である。セキュリティデバイス300は、ネットワークを介さないコンピュータリソース1 380およびネットワーク370を介したコンピュータリソース2 390と通信を行う。ネットワーク370は、インターネット、WAN、およびLANを含むいくつかのネットワークの組み合わせや有線/無線のネットワークを含んでもよい。さらに、セキュリティデバイス300は、例えば、USB、シリアルポート、Firewire、Bluetooth(登録商標)、およびWiFiを含む有線/無線の手段を介して、コンピュータリソース1 380と通信を行う。
【0017】
セキュリティデバイス300は、1または複数のプロセッサ301(以下、“CPU301”と称する)を含み、CPU301は、標準的なマイクロプロセッサでもよいし、カスタマイズされたマイクロプロセッサでもよい。CPU301は、コンピュータ可読命令を読み込んで実行するように構成され、CPU301は、セキュリティデバイス303の他のコンポーネントに命令および/もしくは制御してもよい。セキュリティデバイス300は、他のデバイスへの通信インタフェースを提供するI/Oインタフェース303を有し、I/Oインタフェース303は、表示デバイス、マウス、印刷デバイス、タッチスクリーン、ライトペン、光学式記録デバイス、スキャナ、マイクロフォン、カメラなどを含む。セキュリティデバイス300は、メモリ305を有し、メモリ305は、ROM、RAM、フラッシュメモリのような揮発性もしくは不揮発性であってよい。セキュリティデバイス300は、さらにセキュリティデバイス300がネットワーク370と通信を行うためのネットワークインタフェース307を有する。記憶デバイス309は、データやモジュールを格納し、例えば、ハードドライブ、光学式記憶デバイス、ディスケット、および/または、固定ドライブを含んでよい。セキュリティデバイス300のコンポーネントは、バスを介して接続される。セキュリティデバイス300は、セキュリティデバイス300のハードウェア、処理、割り込み、メモリ、および/またはファイルシステムを管理するオペレーティングシステムを有する。
【0018】
セキュリティデバイス300は、コンテキストファクトリ310、カスタムコンフィグレーションユニット315、およびセキュリティプロバイダ320を有する。コンテキストファクトリ310、カスタムコンフィグレーション320、およびセキュリティプロバイダ320は、コンピュータ実行可能命令にて実装されることができる。説明のために、セキュリティデバイス300のメンバがコンピュータ実行可能命令を実行するように述べられてはいるが、コンピュータ実行可能命令は、セキュリティデバイス300によって実行され、以下に述べられる特定の動作をセキュリティデバイス300に行わせるようにしてもよい。コンピュータ実行可能命令は、ロジックを含んでもよく、ソフトウェア、ファームウェア、および/またはハードウェアにて実装されてもよい。他の実施形態において、コンテキストファクトリ310およびカスタムコンフィグレーションユニット315は、単一のメンバもしくは複数のメンバにさらに分割されて組み込まれてもよい。セキュリティデバイス300は、コンピュータリソース1 380やコンピュータリソース2 390へのアクセスを制御してもよいし、コンピュータリソース1 380はコンピュータリソース2 390にアクセスする前に、セキュリティプロバイダ320との認証および/または認可動作を実行するようにクライアントアプリケーションに要求してもよい。
【0019】
図4は、セキュリティサービスを追加する方法の実施形態を示すフローチャートである。この方法の他の実施形態や以下で述べるのとは別の方法では、ブロックの省略、ブロックの追加、ブロックの並び順の変更、ブロックの組み合わせ、および/もしくはブロックの分割のいずれを行ってもよい。更に、図1〜3に示すシステムおよびデバイスのコンポーネント(例えば、コンテキストファクトリ110、カスタムコンフィグレーションユニット215)は、図4に示された方法を実装してもよいし、以下に述べる方法とは別の方法であってもよい。
【0020】
まずブロック400において、JAVA仮想マシンのような仮想マシンが開始される。次にブロック410において、セキュリティモジュールに対するクラスローダが取得される。例えば、関連付けられたクラスローダを有するセキュリティモジュールは、OSGiプラットフォームを含む仮想マシン上のバンドルの一部としてインストールされてもよく、セキュリティモジュールは、メソッド呼び出しにて渡されたパラメータとしてカスタムコンフィグレーションにクラスローダを(ログインモジュール名やクラスパスと同様に)提供してもよい。ブロック420に移動し、コンフィグレーションエントリは、セキュリティモジュールに対して生成される。コンフィグレーションエントリは、クラスローダを示し、そのクラスローダをセキュリティモジュールに関連付ける。最後にブロック430において、コンフィグレーションエントリは、例えばメモリ内のコンフィグレーションテーブルに格納される。
【0021】
図5は、ログインコンテキストを生成するための方法の実施形態を示すフローチャートである。まずブロック500において、ログインコンテキストを生成するためのリクエストが取得される。リクエストは、例えば、Multifunction Embedded Application Platform (MEAP)アプリケーションのような、クライアントアプリケーション、バンドル、モジュール、コンポーネントなどからのメソッド呼び出しを含み、リクエストは、要求されたログインコンテキストやログインモジュールを示してもよい。ブロック510において、要求されたログインコンテキストに関連付けられたコンフィグレーションエントリは、例えばコンフィグレーションテーブルから取り出される。次にブロック520において、JAASクラスローダは、要求されたログインコンテキストに関連付けられたクラスローダに設定され、ブロック530において要求されたログインコンテキストが生成される。最後にブロック540において、ログインコンテキストは、要求をしたアプリケーション、バンドル、モジュール、コンポーネントなどに提供される。
【0022】
図6は、ログインコンテキストを生成するための方法の実施形態を示すフローチャートである。ステージ680において、ログインモジュール651は、カスタムコンフィグレーションユニット615に登録される。実施形態に応じて、ログインモジュール651は、自身をカスタムコンフィグレーションユニット615に登録してもよいし、他のアプリケーション、モジュール、バンドルなどがログインモジュール(例えば、ログインモジュールを含むバンドル)を登録してもよい。ステージ682において、カスタムコンフィグレーションユニット615は、ログインモジュールに関連付けられた情報をコンフィグレーションテーブルに記録する。
【0023】
次にステージ684において、クライアントアプリケーション670は、コンテキストファクトリ610にログインコンテキストを要求する。ステージ686において、コンテキストファクトリ610は、要求されたログインコンテキストに対するクラスローダをカスタムコンフィグレーションユニット615から取り出す。ステージ688へ進み、コンテキストファクトリ610はスレッド切替を行い、JAASデフォルトクラスローダを要求されたログインコンテキストに対するクラスローダに変更する。スレッドは、オペレーティングシステムによってスケジューリングされることができる処理の単位である。次にステージ690において、コンテキストファクトリ610は、JAAS635にログインコンテキストを要求する。ステージ692において、JAASは、クラスローダ(また、いくつかの実施形態では、クラス名(例えばログインモジュールの省略されていないクラス名(例えば、“com.canon.jaas.LoginModuleA”)))を用いてログインモジュール651に関連付けられたログインコンテキストを生成する。スレッド切替の間、コンテキストファクトリ610および/またはJAAS635は、追加のログインコンテキストを生成しようとする試みをブロックする(例えば、呼び出しブロッキング)。ステージ694に移り、コンテキストファクトリ610および/またはJAAS635に追加のログインコンテキストを生成することを許可するようにスレッドは元に戻され、JAASクラスローダはJAASデフォルトクラスローダに戻すように変更され、生成されたログインコンテキストはクライアントアプリケーション670に返される。最後にステージ696において、クライアントアプリケーション670は、返されたログインコンテキストを用いてログインモジュール651にログインを要求する。返されたログインコンテキストを用いることで、クライアントアプリケーション670は、プロキシを用いることなく、ログインモジュールおよび/もしくはJAASと通信を行うことができる。したがって、クライアントアプリケーション670は、JAAS認証を行うために標準JAASインタフェースを用いることができる。
【0024】
図7は、セキュリティサービスを実装するためのシステムの実施形態を示したフロー図である。システムは、クライアント770、JAAS735、コンテキストファクトリ710、カスタムコンフィグレーションユニット715、およびログインモジュール751を有する。ステージ1において、ログインモジュール751は、登録情報をカスタムコンフィグレーションユニット715に送信する。ログインモジュール751は、OSGiバンドルの一部として追加され、そしてログインモジュール751は、自身をカスタムコンフィグレーションユニット715に登録する。登録情報705は、モジュールの識別子、クラスローダ、クラス名、コールバックハンドラ、および/またはアプリケーションコンフィグレーションエントリを有する。カスタムコンフィグレーションユニット715は、登録情報をカスタムコンフィグレーションテーブル717に追加する。例えば、カスタムコンフィグレーションユニット715は、登録情報705をログインモジュールに関連付けられたエントリに格納してもよい。
【0025】
ステージ2において、クライアント770は、ログインコンテキストに対する要求713をコンテキストファクトリ710に送信する。ログインコンテキストに対する要求713は、ログインコンテキストが検索された1または複数の要求されたログインモジュール(例えば、ログインモジュール751)を識別する。次にステージ3において、コンテキストファクトリ710は、要求されたログインモジュール(この例では、ログインモジュール751)のクロスローダに対する要求720を送信する。クラスローダに対する要求720を受信することに応答して、カスタムコンフィグレーションユニット715は、コンフィグレーションテーブル717(例えば、登録されたログインモジュールと対応付けられたクラスローダとのマップ)を参照することによって、要求されたログインモジュールに関連付けられたクラスローダを識別する。次にステージ4において、カスタムコンフィグレーションユニット715は、ログインモジュールクラスローダへのリファレンス725をコンテキストファクトリ710に送信する。
【0026】
ステージ5において、コンテキストファクトリ710は、JAAS735のログインモジュールクラスローダへのリファレンスを修正する。まず、ログインモジュールクラスローダリファレンスは、JVMのランタイムにて決定されたJAASデフォルトクラスローダ745を参照する。JAAS735は、ログインコンテキストのインスタンスを作成するためのクラスローダを検出するためにログインモジュールクラスローダリファレンスを自動的に参照するであろうが、JVMが稼働している間はJAAS735がログインモジュールクラスローダリファレンスを変更できないため、コンテキストファクトリ710は、デフォルトクラスローダ745の代わりにログインモジュールクラスローダ750を参照するように、ログインモジュールクラスローダリファレンスを変更する。ステージ5において、コンテキストファクトリ710は、他のログインコンテキストの生成をブロックするために、スレッドのブロックを開始する。JAAS735は、ログインモジュールクラスローダリファレンスによって参照されるクラスローダを用いてログインコンテキストを生成するため、ブロッキングは重要となるであろう。故に、ブロックされない場合は、ログインモジュールクラスローダリファレンスがログインモジュールクラスローダ750を参照している間、JAAS735は、他の要求されたログインコンテキストのインスタンスを作成するためにログインモジュールクラスローダ750を用いるであろう。しかしながら、他の要求されたログインコンテキストは、デフォルトクラスローダ745に関連付けられたログインコンテキストに対する要求であってもよい。したがって、ログインモジュールクラスローダリファレンスがログインモジュールクラスローダ750を参照している間、他のログインコンテキストの生成をブロックすることが求められるであろう。
【0027】
ステージ6において、ログインモジュールクラスローダリファレンスがログインモジュールクラスローダ750を参照すると、コンテキストファクトリ710はログインコンテキスト717に対する要求をJAAS735へ送信する。ステージ7において、JAAS735は、ログインモジュールクラスローダリファレンスによって参照されたクラスローダ730(現時点では、ログインモジュールクラスローダ750)を取得する。ステージ8において、JAAS735は、ログインモジュールクラスローダ750を参照するクラスローダリファレンス755を受け取る。次にステージ9において、JAAS735は、ログインモジュールクラスローダ750を用いてログインコンテキストのインスタンスを生成する。
【0028】
ステージ10に進み、ログインコンテキストへのリファレンス765は、JAAS735によってコンテキストファクトリ710へ返される。そして、コンテキストファクトリ710は、参照するログインモジュールクラスローダリファレンスをデフォルトクラスローダ745に変更し、スレッドのブロッキングを終了する。次にステージ11において、ログインコンテキストへのリファレンス765は、クライアント770へ返される。最後にステージ12において、クライアント770は、ログインモジュール751と通信するためにログインコンテキスト760を用いる。したがって、クライアント770は、プロキシを要さず、JAAS735におけるログインコンテキスト760を介してログインモジュール751と通信を行い、そして、クライアント770は、ログインモジュール751と通信を行うために標準JAAS APIを用いることができる。
【0029】
図8は、OSGiバンドルとして実装されるセキュリティプロバイダの実施形態を示すブロック図である。セキュリティプロバイダA850−1のバンドルは、ログインモジュールAおよびクラスローダAを含む。セキュリティプロバイダB850−2のバンドルは、ログインモジュールBおよびクラスローダBを含む。セキュリティプロバイダC850−3のバンドルは、複数のログインモジュールとしてログインモジュール1〜N(Nは、任意に適用可能なログインモジュールの数)およびクラスローダCを含む。セキュリティプロバイダCのクラスローダCは、複数のログインモジュールに関連付けられており、クライアントアプリケーションを関連付けられたログインモジュールと通信を行うようにするためのログインコンテキストを生成するために用いられることができる。
【0030】
さらに、クラスローダは、関連付けられたOSGiバンドルのログインモジュールとのみ通信が可能なようにログインコンテキストを生成できるようにしてもよい。例えば、クラスローダAは、クライアントアプリケーションがログインモジュールAと通信できるようにするログインコンテキストを生成するために用いられてよいが、クライアントアプリケーションが他のセキュリティプロバイダ(例えば、ログインモジュールB、ログインモジュール1)からログインモジュールと通信できるようにするログインコンテキストは生成できない。また、クラスローダCは、クライアントアプリケーションがセキュリティプロバイダC(ログインモジュール1、ログインモジュール2、・・・、ログインモジュールN)と通信できるようにするログインコンテキストを生成するために用いられてよいが、アプリケーションが他のセキュリティプロバイダ(例えば、ログインモジュールA、ログインモジュールB)と通信できるようにするログインコンテキストを生成するために用いられることはできない。
【0031】
図9は、コンフィグレーションテーブル917の実施形態を示す。コンフィグレーションテーブルは、各ログインモジュールに関連付けられたエントリ(例えば、エントリ918A〜C)を含む。示す実施形態において、エントリは、ログインモジュール、そのクラスローダ、そのクラス名、そのコールバックハンドラ、およびそのコンフィグレーションエントリを含む。したがって、コンフィグレーションテーブル917は、ログインモジュールとログインモジュールに関連付けられたいくつかの情報とをマッピングするために用いられてよい。
【0032】
上述したデバイス、システム、および方法は、1または複数の記憶媒体に格納されたコンピュータ実行可能指示を読み出し、それらを実行するように構成された1または複数のデバイスに、上述した動作を実現するためのコンピュータ実行可能命令を格納した1または複数の記憶媒体を供給することによって達成されることができる。この場合において、1または複数の記憶媒体から読み出されたコンピュータ実行可能命令を実行した際に、1または複数のデバイスは、上述したデバイス、システム、および方法の動作を実行する。また、1または複数のシステムおよび/またはデバイス上のオペレーティングシステムは、上述したデバイス、システム、および方法の1または複数の動作を実装してよい。したがって、コンピュータ実行可能指示およびコンピュータ実行可能命令を格納した1または複数の記憶媒体は、実施形態の構成要素となる。
【0033】
いくつかの適用可能なコンピュータ可読記録媒体(例えば、磁気ディスク(フロッピー(登録商標)ディスクやハードディスクを含む)、光学式ディスク(CD、DVD、ブルーレイディスクを含む)、光磁気ディスク、磁気テープ、および固定デバイス(フラッシュメモリ、DRAM、SRAMを含む))は、コンピュータ実行可能命令に対する記憶媒体として採用できる。コンピュータ実行可能命令は、デバイスに挿入された機能拡張ボードやデバイスに接続された機能拡張ユニット上に提供されたコンピュータ可読記憶媒体に書き込まれてもよいし、機能拡張ボードやユニット上に提供されたCPUが上述したデバイス、システム、および方法の命令を使用するようにしてもよい。
【0034】
この開示は、特定の説明のための実施形態に関しての詳細な記述を行った。クレームのスコープは上述した実施形態に限定されるものではなく、クレームのスコープから外れることのない範囲で様々な変更および改良を行ってもよい。

【特許請求の範囲】
【請求項1】
ログインコンテキストを提供するための方法であって、
仮想マシンを開始する工程と、
前記仮想マシンは、オープンサービスプラットフォームと認証サービスとを含み、
前記認証サービスは、クラスローダを含み、
初期クラスローダは、前記認証サービスの前記クラスローダとして指定されており、
ログインモジュールを登録する工程と、
第1のアプリケーションから認証要求を受信する工程と、
前記認証要求に応答して、前記認証サービスの前記クラスローダとして前記ログインモジュールに対応付けられたクラスローダを指定する工程と、
前記ログインモジュールのログインコンテキストを生成する工程と、
前記第1のアプリケーションに前記ログインモジュールの前記ログインコンテキストを提供する工程と、を有し、
前記第1のアプリケーションは、認証を行うために前記ログインコンテキストを用いることを特徴とする方法。
【請求項2】
前記オープンサービスプラットフォームはOSGiであることを特徴とする請求項1に記載の方法。
【請求項3】
前記ログインモジュールは、バンドルであることを特徴とする請求項2に記載の方法。
【請求項4】
前記認証サービスは、JAASであることを特徴とする請求項1に記載の方法。
【請求項5】
前記ログインモジュールを登録する前記工程は、クロスローダを前記ログインモジュールに関連付ける工程を有することを特徴とする請求項1に記載の方法。
【請求項6】
前記認証要求は、前記ログインモジュールを示すデータを含むことを特徴とする請求項1に記載の方法。
【請求項7】
第2のログインモジュールから登録要求を受信する工程と、
前記第2のログインモジュールからの登録要求に応答して、前記第2のログインモジュールを登録する工程と、
第2のアプリケーションから第2の認証要求を受信する工程と、
前記第2の認証要求を受信することに応答して、前記認証サービスの前記クラスローダとして前記第2のログインモジュールに関連付けられたクロスローダを指定する工程と、
前記第2のログインモジュールのログインコンテキストを生成する工程と、
前記第2のアプリケーションに前記第2のログインモジュールの前記ログインコンテキストを提供する工程と、を更に有することを特徴とする請求項6に記載の方法。
【請求項8】
前記第2の認証要求は、前記第2のログインモジュールを示すデータを含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記ログインモジュールの前記ログインコンテキストを生成する前記工程の後に、前記認証サービスの前記クラスローダとして前記初期クラスローダを再指定する工程を更に有することを特徴とする請求項1に記載の方法。
【請求項10】
ログインコンテキストを作成するためのコンピュータデバイスであって、
コンピュータ可読記録媒体と、
1または複数のプロセッサと、を有し、
前記1または複数のプロセッサは、前記コンピュータデバイスを、
セキュリティプラットフォームを含む仮想マシンを動作する工程と、
前記仮想マシンが動作している間、第1のログインモジュールを登録する工程と、
前記セキュリティプラットフォームのクラスローダとして前記第1のログインモジュールに関連付けられた第1のクラスローダを割り当てる工程と、
前記第1のログインモジュールのログインコンテキストを生成する工程と、
第1のクライアントアプリケーションに前記第1のログインモジュールの前記ログインコンテキストを提供する工程と
を実行するように構成されていることを特徴とするコンピュータデバイス。
【請求項11】
前記仮想デバイスが動作している間、第2のログインモジュールを登録する工程と、
前記セキュリティプラットフォームの前記クラスローダとして前記第2のログインモジュールに関連付けられた第2のクラスローダを割り当てる工程と、
前記第2のログインモジュールのログインコンテキストを生成する工程と、
第2のクライアントアプリケーションに前記第2のログインモジュールの前記ログインコンテキストを提供する工程と、を更に実行することを特徴とする請求項10に記載のコンピュータデバイス。
【請求項12】
前記第1のログインモジュールの前記ログインコンテキストは、前記第1のログインモジュールを特定するログインコンテキストに対する第1の要求を前記第1のクライアントアプリケーションから受信することに応じて生成され、
前記第2のログインモジュールの前記ログインコンテキストは、前記第2のログインモジュールを特定するログインコンテキストに対する第2の要求を前記第2のクライアントアプリケーションから受信することに応じて生成される、ことを特徴とする請求項11に記載のコンピュータデバイス。
【請求項13】
前記第1のログインモジュールを登録する前記工程は、前記第1のクラスローダを前記第1のログインモジュールに割り当てる工程を含み、
前記第2のログインモジュールを登録する前記工程は、前記第2のクラスローダを前記第2のログインモジュールに割り当てる工程を含む、ことを特徴とする請求項11に記載のコンピュータデバイス。
【請求項14】
前記第1のログインモジュールは、前記第2のログインモジュールとは異なるセキュリティプロトコルを実装することを特徴とする請求項11に記載のコンピュータデバイス。
【請求項15】
前記セキュリティプラットフォームの前記クラスドライバを初期セキュリティプラットフォームクラスドライバに戻す工程を更に実行することを特徴とする請求項10に記載のコンピュータデバイス。
【請求項16】
1または複数のコンピュータデバイスによって実行される命令を格納した1または複数のコンピュータ可読媒体であって、
前記1または複数のコンピュータデバイスを、
セキュリティプラットフォームを含む仮想マシンが動作している間、セキュリティサービスを登録する工程と、
前記セキュリティプラットフォームのクラスローダとして前記セキュリティサービスに関連付けられたクラスローダを指定する工程と、
第1のアプリケーションから前記セキュリティサービスのコンテキストに対する要求を受信することに応答して、前記セキュリティサービスのコンテキストを生成する工程と、
前記第1のアプリケーションへ前記セキュリティサービスの前記コンテキストを提供する工程として機能させ、
前記セキュリティサービスのコンテキストを登録する前記工程は、前記指定されたセキュリティプラットフォームクラスローダを呼び出す工程を含む、ことを特徴とする命令を格納した1または複数のコンピュータ可読媒体。
【請求項17】
前記セキュリティサービスのコンテキストに対する前記要求は、前記セキュリティサービスを示すことを特徴とする請求項16に記載の1または複数のコンピュータ可読媒体。
【請求項18】
前記仮想マシンは、オープンサービスプラットフォームを動作することを特徴とする請求項17に記載の1または複数のコンピュータ可読媒体。
【請求項19】
前記セキュリティサービスを登録する前記工程は、クロスローダを前記セキュリティサービスに関連付ける工程を含むことを特徴とする請求項16に記載の1または複数のコンピュータ可読媒体。
【請求項20】
前記セキュリティサービスの前記ログインコンテキストを生成する前記工程の後に、前記セキュリティプラットフォームの前記クラスローダとして初期セキュリティプラットフォームクラスローダを指定する工程を更に機能させる命令を含むことを特徴とする請求項16に記載の1または複数のコンピュータ可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−212431(P2012−212431A)
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−70188(P2012−70188)
【出願日】平成24年3月26日(2012.3.26)
【出願人】(000001007)キヤノン株式会社 (59,756)