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

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

Info

Publication number
JP2012212431A
JP2012212431A JP2012070188A JP2012070188A JP2012212431A JP 2012212431 A JP2012212431 A JP 2012212431A JP 2012070188 A JP2012070188 A JP 2012070188A JP 2012070188 A JP2012070188 A JP 2012070188A JP 2012212431 A JP2012212431 A JP 2012212431A
Authority
JP
Japan
Prior art keywords
login
login module
context
class loader
security
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.)
Granted
Application number
JP2012070188A
Other languages
English (en)
Other versions
JP5511874B2 (ja
Inventor
Khosrova Eliza
コースロバ イライザ
Mazzagatte Craig
マッツァゲート クレイグ
Karantothu Hari
カラントーシュ ハリー
Chern Wei-Jhy
チャーン ウェイジェイ
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
Priority claimed from US13/073,882 external-priority patent/US8631480B2/en
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2012212431A publication Critical patent/JP2012212431A/ja
Application granted granted Critical
Publication of JP5511874B2 publication Critical patent/JP5511874B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/41User authentication where a single sign-on provides access to a plurality of computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

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

Description

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

Claims (20)

  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または複数のコンピュータ可読媒体。
JP2012070188A 2011-03-28 2012-03-26 セキュリティサービスに実装するシステムおよび方法 Expired - Fee Related JP5511874B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/073,882 2011-03-28
US13/073,882 US8631480B2 (en) 2011-03-28 2011-03-28 Systems and methods for implementing security services
US13/420,462 US8732811B2 (en) 2011-03-28 2012-03-14 Systems and methods for implementing security services
US13/420,462 2012-03-14

Publications (2)

Publication Number Publication Date
JP2012212431A true JP2012212431A (ja) 2012-11-01
JP5511874B2 JP5511874B2 (ja) 2014-06-04

Family

ID=46929113

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012070188A Expired - Fee Related JP5511874B2 (ja) 2011-03-28 2012-03-26 セキュリティサービスに実装するシステムおよび方法

Country Status (2)

Country Link
US (1) US8732811B2 (ja)
JP (1) JP5511874B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10275592B2 (en) 2013-11-15 2019-04-30 Kabushiki Kaisha Toshiba Information processing device, information processing method, and computer program product

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8955055B1 (en) * 2012-09-28 2015-02-10 Juniper Networks, Inc. Customer extendable AAA framework for network elements
CN103607426B (zh) * 2013-10-25 2019-04-09 中兴通讯股份有限公司 安全服务订制方法和装置
CN103514027B (zh) * 2013-11-12 2017-04-26 北京深思数盾科技股份有限公司 一种增强软件保护易用性的方法
CN103870723A (zh) * 2014-03-20 2014-06-18 北京深思数盾科技有限公司 一种增强软件保护易用性的方法及装置
CN111010403A (zh) * 2019-12-26 2020-04-14 紫光云(南京)数字技术有限公司 自动生成sasl认证文件的方法、装置及计算机存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002287990A (ja) * 2001-03-26 2002-10-04 Canon Inc アプリケーション管理装置、アプリケーション管理方法、記憶媒体及びプログラム
JP2007206965A (ja) * 2006-02-01 2007-08-16 Canon Inc 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム
JP2008508583A (ja) * 2004-07-30 2008-03-21 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア・アプリケーションにアクセスするユーザに関するセキュリティ・ポリシーおよび認可ポリシーを確立する方法、システム、およびプログラム記憶装置
JP2009199234A (ja) * 2008-02-20 2009-09-03 Ricoh Co Ltd 認証制御装置、認証制御方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2372119A (en) * 2001-02-13 2002-08-14 Lux Inflecta Ehf Distributed computing system
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
US8990903B2 (en) * 2007-11-09 2015-03-24 International Business Machines Corporation Extension point application and configuration of a login module

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002287990A (ja) * 2001-03-26 2002-10-04 Canon Inc アプリケーション管理装置、アプリケーション管理方法、記憶媒体及びプログラム
JP2008508583A (ja) * 2004-07-30 2008-03-21 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア・アプリケーションにアクセスするユーザに関するセキュリティ・ポリシーおよび認可ポリシーを確立する方法、システム、およびプログラム記憶装置
JP2007206965A (ja) * 2006-02-01 2007-08-16 Canon Inc 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム
JP2009199234A (ja) * 2008-02-20 2009-09-03 Ricoh Co Ltd 認証制御装置、認証制御方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10275592B2 (en) 2013-11-15 2019-04-30 Kabushiki Kaisha Toshiba Information processing device, information processing method, and computer program product

Also Published As

Publication number Publication date
JP5511874B2 (ja) 2014-06-04
US20120254969A1 (en) 2012-10-04
US8732811B2 (en) 2014-05-20

Similar Documents

Publication Publication Date Title
JP6248153B2 (ja) 信頼レベルのアクティブ化
US10305937B2 (en) Dividing a data processing device into separate security domains
KR101456489B1 (ko) CLDC OSGi 환경에서 어플리케이션의 접속 권한을관리하는 방법 및 장치
EP2549380B1 (en) Information processing device, virtual machine generation method, and application software distribution system
US8074231B2 (en) Configuration of isolated extensions and device drivers
US8904518B2 (en) Information processing device, information processing method, and program distribution system
JP5511874B2 (ja) セキュリティサービスに実装するシステムおよび方法
US20090307781A1 (en) Program execution control method, its device, and execution control program for same
US20080250493A1 (en) Method, System and Computer Program for Automating Configuration of Software Applications
CN107203715B (zh) 执行系统调用的方法及装置
US8112745B2 (en) Apparatus and method for capabilities verification and restriction of managed applications in an execution environment
US10511630B1 (en) Dividing a data processing device into separate security domains
KR101308351B1 (ko) 어플리케이션에 권한을 할당하는 단말기 및 상기 단말기의 권한 할당 방법
US9871800B2 (en) System and method for providing application security in a cloud computing environment
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
EP3367291B1 (en) Label transition for mandatory access controls
US20160378348A1 (en) Methods and apparatus to manage inter-virtual disk relations in a modularized virtualization topology using virtual hard disks
KR101665894B1 (ko) 가상 머신 내의 강제적 보호 제어
US20160378361A1 (en) Methods and apparatus to apply a modularized virtualization topology using virtual hard disks
JPWO2008114560A1 (ja) コンピュータ、動作ルール適用方法、オペレーティングシステム
US8631480B2 (en) Systems and methods for implementing security services
CN116450373A (zh) 代码运行方法、装置、设备及计算机可读存储介质
Zhauniarovich Android Security (and Not) Internals
US11977889B2 (en) Method for control flow isolation with protection keys and indirect branch tracking
JP4638505B2 (ja) 電子デバイス内の安全なプログラム解釈方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131017

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140325

LAPS Cancellation because of no payment of annual fees