(57)【特許請求の範囲】
【請求項１】
ターゲットリソースにアクセスするためのセキュアクレデンシャルを提供するコンピュータに実装された方法であって、
上記方法は、１つ又はそれ以上のプロセッサ上で実行されるとき、上記１つ又はそれ以上のプロセッサに、
上記ターゲットリソースへの接続要求を、人間が介入しないリクエスタスクリプトから受信するステップを含み、上記接続要求は、上記ターゲットリソースを識別するターゲットリソース情報と、上記人間が介入しないリクエスタスクリプトを認証するために必要な構成情報とを含み、上記構成情報は、上記人間が介入しないリクエスタスクリプトのノードを一意的に識別する指紋情報を含み、
上記方法は、上記プロセッサに、
上記接続要求をデコードして、上記人間が介入しないリクエスタスクリプトを認証するためにかつ上記ターゲットリソースへのアクセス用の上記セキュアクレデンシャルを検索するためにクレデンシャルマネージャによって必要とされる上記ターゲットリソース情報及び上記構成情報を抽出するステップを実行させ、
上記クレデンシャルマネージャは、上記ターゲットリソースのためのクレデンシャルを管理しかつ記憶し、
上記方法は、上記プロセッサに、
上記抽出されたターゲットリソース情報及び構成情報を上記クレデンシャルマネージャにセキュアな通信により送信して、上記クレデンシャルを検索するステップと、
上記検索されたクレデンシャルを含む上記ターゲットリソースへのネイティブターゲットリソース接続要求を生成するステップと、
上記ネイティブターゲットリソース接続要求をネイティブターゲットリソース接続コンポーネントに渡して、上記人間が介入しないリクエスタスクリプトと上記ターゲットリソースとの間の接続を確立するステップとを実行させる方法。
【請求項２】
上記接続要求をデコードすることは、上記接続要求を構文解析することを含む請求項１記載の方法。
【請求項３】
上記抽出されたターゲットリソース情報及び構成情報を上記クレデンシャルマネージャにセキュアな通信により送信することは、上記クレデンシャルマネージャとの暗号化通信を含む請求項１記載の方法。
【請求項４】
上記方法は、Ｊａｖａ（登録商標）データベース接続（ＪＤＢＣ）アプリケーションプログラミングインターフェース（ＡＰＩ）を実装する請求項１記載の方法。
【請求項５】
上記接続要求を受信することは、ターゲットリソースＵＲＬと、上記クレデンシャルマネージャから上記クレデンシャルを検索するためのターゲットエイリアスとを含む、ＪＤＢＣユニフォームリソースロケータ（ＵＲＬ）を受信することを含む請求項４記載の方法。
【請求項６】
上記ネイティブターゲットリソース接続要求を生成することは、上記検索されたクレデンシャルを上記ターゲットリソースＵＲＬとともにパッケージ化して、ネイティブＪＤＢＣ  ＵＲＬを提供することを含む請求項５記載の方法。
【請求項７】
上記方法は、オープンデータベース接続（ＯＤＢＣ）ＡＰＩを実装する請求項１記載の方法。
【請求項８】
上記接続要求を受信することは、上記クレデンシャルマネージャから上記クレデンシャルを検索するためのターゲットエイリアスと、上記ネイティブターゲットリソース接続コンポーネントのための接続ストリングとを含む、ＯＤＢＣ接続要求を受信することを含む請求項７記載の方法。
【請求項９】
上記ネイティブターゲットリソース接続要求を生成することは、上記検索されたクレデンシャルを上記接続ストリングとともにパッケージ化することを含む請求項８記載の方法。
【請求項１０】
上記クレデンシャルは、ユーザネーム及びパスワードを含む請求項１記載の方法。
【請求項１１】
すべての接続の試行において、上記クレデンシャルは上記クレデンシャルマネージャから検索される請求項１記載の方法。
【請求項１２】
１つ又はそれ以上のプロセッサによって実行されるとき、上記１つ又はそれ以上のプロセッサに請求項１乃至１１のうちのいずれか１つに記載の方法を実行させるコンピュータにより実行可能な命令を記憶するコンピュータにより読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのためのセキュリティシステムに関する。より具体的には、本発明は、クレデンシャル（資格証明書）管理のための方法及びシステムに関し、特に、人間の介入なしに、ソフトウェアアプリケーションにリソースへアクセスすることを許可するための方法及びシステムに関する。
【背景技術】
【０００２】
コンピュータシステムへの上昇し続ける依存は、コンピュータセキュリティに関心が持たれる際において、人間が介入する機会の増加をもたらした。コンピュータ及びコンピュータリソースにアクセスすること（例えば、あるプログラム又はアプリケーションが別のものにアクセスすること）を制限するための１つの周知の方法は、パスワードを使用することである。ハードコードされたアプリケーションパスワードは、あるアプリケーション（リクエスタ）が、ターゲットによって提供されるリソース及び／又はデータへのアクセスを得るために、データベースなどの別のアプリケーション又はサービス（ターゲット）に対して認証されることを可能にするデファクトの方法を提供する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２００８／０１４８３７３号明細書。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ハードコードされたパスワードは、悪意のある第三者によって盗み見られることを回避できない平文情報として残るので、パスワードをハードコードすることは、データに対する著しい脆弱性を生成する。このようなパスワードはまた、開発者への配布を必要とし、かつ変更不可の特性に起因して長い有効期間を有する。これらの考察は、セキュリティ違反への脆弱性を増大させるのみである。
【０００５】
パスワード変更ポリシーを有するような組織では、ハードコードされたパスワードは、これらが繰り返し発生するソフトウェア保守の問題を引き起こすという欠点を有する。また、人間の再教育努力（human redevelopment effort）に関連する著しいコストが存在し、かつ同期エラー及びタイミングに起因するアプリケーションの停止の可能性が存在する。
【０００６】
これらの欠点にも関わらず、ハードコードされたパスワードは、すべての企業アプリケーションのうちの約９０％で使用されている。ハードコードされたパスワードを含む新しいアプリケーションが開発されかつ配置されている。サードパーティー（ベンダー）のアプリケーションは、企業にハードコードされたパスワードを含むシステムを受け入れさせかつ配置させる。データセンターアプリケーションのうちの７０％は、データベース駆動（database driven）である。
【０００７】
ユーザアイデンティティ管理システムは、システムに対する個人の認証及び認可を提供するが、人間が介入しないアプリケーションのためにこれらの解決方法を利用することには著しい困難が存在する。これらは、認証のためにユーザの手動の対話的操作に依存している。これらは、認証クレデンシャルの回復のためにユーザの手動の対話的操作に依存している。これらは、人間が介入しないスクリプト及びアプリケーションによる自動的な使用のためのクレデンシャルアクセス及び管理能力を含まない。これらは、耐タンパリング（改竄）性（tamper resistance）を提供しない。これらは、静的な解析又は動的な解析に対する防御を提供しない。さらに、これらは、従業員は一般に信用があると仮定しているが、部内者の攻撃の普及に起因して明らかに支持できない仮定である。
【０００８】
もう１つの可能性は、プロビジョニングシステムの使用である。プロビジョニングシステムは、オペレーティングシステム及びソフトウェア構成の更新をサーバにプッシュする能力を提供する。しかしながら、人間が介入しないアプリケーションのためにこれらの解決方法を利用することの著しい困難が存在する。これらは、人間が介入しないスクリプト及びアプリケーションによる使用のためのクレデンシャルの実行時の検索を含まない。これらは、人間が介入しないスクリプト及びアプリケーションによる自動的な使用のためのクレデンシャルアクセス及び管理能力を含まない。これらは、耐タンパリング性を提供しない。さらに、これらは、静的な解析又は動的な解析に対する防御を提供しない。
【０００９】
もう１つのオプションは、公開鍵基盤の使用である。公開鍵基盤は、包括的でありかつ洗練された認証及び認可の解決方法を生成するために必要なコンポーネントを提供する。しかしながら、人間が介入しないアプリケーションのためにこれらの解決方法を利用することの著しい困難が存在する。これらは、メモリにある間、鍵のマテリアル（keying material）を保護しない。これらは、認証クレデンシャルへのアクセスのためにユーザの対話的操作に依存している。これらは、人間が介入しないスクリプト及びアプリケーションによる自動的な使用のためのクレデンシャルアクセス及び管理能力を含まない。これらは、耐タンパリング性を提供しない。これらは、アプリケーションコードの静的な解析又は動的な解析又はタンパリング（tampering）に対する防御を提供しない。これらは、企業に対して認証パラダイムを劇的に変え、より大きな統合及び配置の努力を招く。さらに、オーセンティケータ（authenticator）及びオーセンティケート（authenticate）の両方は、認証目的のためのＰＫＩを使用するために変形されなければならない。
【００１０】
もう１つの可能性は、ケルベロス（Kerberos）認証プロトコルの使用である。ケルベロス認証プロトコルは、包括的でありかつ洗練された認証及び認可の解決方法を生成するために必要なコンポーネントを提供する。しかしながら、人間が介入しないアプリケーションのためにこの解決方法を利用することの著しい困難が存在する。これは、メモリにある間、鍵のマテリアルを保護しない。これは、認証クレデンシャルへのアクセスのためにユーザの対話的操作に依存している。これは、人間が介入しないアプリケーションによる認証のためのハードコードされたパスワードに依存している。これは、人間が介入しないスクリプト及びアプリケーションによる自動的な使用のためのクレデンシャルアクセス及び管理能力を含まない。これは、耐タンパリング性を提供しない。これは、アプリケーションコードの静的な解析又は動的な解析又はタンパリングに対する防御を提供しない。これは、企業に対して認証パラダイムを劇的に変え、より大きな統合及び配置の努力を招く。さらに、これは、オーセンティケータ及びオーセンティケートの両方が認証目的のためのケルベロスを使用するために変形されることを要求する。
【００１１】
したがって、これらのアプリケーションがリソースにアクセスすることができるように、人間が介入せずにアプリケーションを認証することを可能にするシステム及び方法についての必要性が存在する。理想的に、このようなシステム及び方法は、ハードコードされたパスワードの欠点を回避する一方、同様の、もしそうでなければより高いレベルのセキュリティを提供する。
【００１２】
したがって、本発明の目的は、従来技術の欠点を取り除く又は軽減するパスワードリリースの新しい方法及びシステムを提供することにある。
【課題を解決するための手段】
【００１３】
一態様によれば、ターゲットリソースにアクセスするためのセキュアクレデンシャルを提供するコンピュータに実装された方法が提供される。上記方法は、１つ又はそれ以上のプロセッサで実行されるとき、上記１つ又はそれ以上のプロセッサに以下のステップを実行させる。上記ターゲットリソースへの接続要求は、リクエスタアプリケーションから受信される。次いで、上記要求が構文解析などによってデコードされて、上記リクエスタアプリケーションを認証しかつ上記ターゲットリソースにアクセスするためのユーザネーム及びパスワードなどの上記セキュアクレデンシャルを検索するためにクレデンシャルマネージャによって必要とされる情報を抽出する。上記クレデンシャルマネージャは、上記ターゲットリソースのためのクレデンシャルを管理しかつ記憶する。次いで、上記抽出された情報は、上記クレデンシャルマネージャにセキュアに通信により送信されて、上記クレデンシャルを検索する。例えば、上記セキュア通信は、上記クレデンシャルマネージャへの暗号化通信及び上記クレデンシャルマネージャからの暗号化通信を備えてもよい。上記クレデンシャルマネージャから検索された上記クレデンシャルを用いて、上記ターゲットリソースへのネイティブターゲットリソース接続要求が生成される。次いで、このネイティブターゲットリソース接続要求は、ネイティブターゲットリソース接続コンポーネントに渡されて、上記リクエスタアプリケーションと上記ターゲットリソースとの間の接続を確立する。
【００１４】
実施形態によれば、上記方法は、Ｊａｖａ（登録商標）データベース接続（ＪＤＢＣ）アプリケーションプログラミングインターフェース（ＡＰＩ）を実装してもよい。上記接続要求を受信することは、ターゲットリソースＵＲＬと、上記クレデンシャルマネージャから上記クレデンシャルを検索するためのターゲットエイリアス（ターゲットの別名）とを含む、ＪＤＢＣユニフォームリソースロケータ（ＵＲＬ）を受信することを含み、上記ネイティブターゲットリソース接続要求を生成することは、上記検索されたクレデンシャルを上記ターゲットリソースＵＲＬとともにパッケージ化して、ネイティブＪＤＢＣ  ＵＲＬを提供することを含む。
【００１５】
別の実施形態によれば、上記方法は、オープンデータベース接続（ＯＤＢＣ）ＡＰＩを実装してもよく、上記接続要求を受信することは、上記クレデンシャルマネージャから上記クレデンシャルを検索するためのターゲットエイリアスと、上記ネイティブターゲットリソース接続コンポーネントのための接続ストリングとを含む、ＯＤＢＣ接続要求を受信することを含み、上記ネイティブターゲットリソース接続要求を生成することは、上記検索されたクレデンシャルを上記接続ストリングとともにパッケージ化することを含む。
【００１６】
別の態様によれば、ターゲットリソースにアクセスするためのセキュアクレデンシャルを提供するためのコンピュータにより実行可能な命令を記憶するコンピュータにより読み取り可能な媒体を備えるコンピュータプログラム製品が提供される。実行されるとき、上記命令は、上記１つ又はそれ以上のプロセッサに以下の機能モジュールを実装させる。リクエスタインターフェースは、リクエスタアプリケーションと通信して、上記ターゲットリソースを識別するターゲットリソース情報と、上記リクエスタアプリケーションを認証するために必要な構成情報とを含む接続要求を受信するように実装される。クレデンシャルサービスインターフェースは、上記ターゲットリソースのためのクレデンシャルを管理しかつ記憶するクレデンシャルマネージャとセキュアに通信するように実装される。ネイティブデータベース接続インターフェースは、上記ターゲットリソースとの接続を確立するネイティブデータベース接続コンポーネントと通信するように実装される。また、決定エンジンは、上記リクエスタインターフェース、上記クレデンシャルサービスインターフェース、及び上記ネイティブデータベース接続インターフェースのそれぞれと通信するように実装される。上記決定エンジンは、上記要求をデコードして、上記ターゲットリソースのアイデンティティと、上記リクエスタアプリケーションを認証しかつ上記ターゲットリソースにアクセスするための上記セキュアクレデンシャルを検索するために上記クレデンシャルマネージャによって必要とされる上記構成情報とを決定するように機能し、上記クレデンシャルマネージャは、上記ターゲットリソースのためのクレデンシャルを管理しかつ記憶し、上記決定エンジンは、上記抽出された情報を上記クレデンシャルマネージャにセキュアに通信により送信して、上記クレデンシャルを検索し、上記検索されたクレデンシャルを含む上記ターゲットリソースへのネイティブデータベース接続要求を生成し、かつ上記ネイティブデータベース接続要求を上記ネイティブデータベース接続コンポーネントに渡して、上記接続を確立するように機能する。
【００１７】
本発明の他の態様及び特徴は、添付の図面とともに本発明の特定の実施形態の以下の説明を検討することにより当業者に明らかとなるであろう。
【００１８】
ここで、添付の図面を参照して、単なる例示として本発明の実施形態が説明されるであろう。
【図面の簡単な説明】
【００１９】
【図１】クレデンシャル管理のための従来技術に係るシステムのブロック図である。
【図２】本発明の実施形態に係るデータベース接続コンポーネントを用いるシステムのブロック図である。
【図３】本発明の実施形態に係るデータベース接続コンポーネント及びクレデンシャルマネージャを用いるデータベース接続のフローチャートである。
【図４】本発明の実施形態に係るデータベース接続コンポーネントのブロック図である。
【発明を実施するための形態】
【００２０】
図１は、「人間が介入しないアプリケーションのための認証クレデンシャルの簡単化された管理（Ｓｉｍｐｌｉｆｉｅｄ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｒｅｄｅｎｔｉａｌｓ  ｆｏｒ  Ｕｎａｔｔｅｎｄｅｄ  Ａｐｐｌｉｃａｔｉｏｎｓ）」と題された米国出願番号１１／６４０，３７１（特許文献１）で説明されたクレデンシャル管理のための従来技術のシステム１０を示し、特許文献１の内容は、その全体が参照することにより本明細書に組み込まれる。リクエスタノード１２は、その上で動作する（resident）、サーバパスワードマネージャ（ＳＰＭ）モジュール１４、リクエスタアプリケーション１６、及びオプションとしてセキュアキャッシュモジュール１８を有する。リクエスタノード１２は、パスワード認可システムを実装するクレデンシャルマネージャ（ＣＭ）ノード２０と通信する。ＣＭノード２０は、その上で動作するＣＭモジュール２２及びデータストアモジュール２４を有する。リクエスタノード１２は、ＣＭノード２０と通信して、ターゲットノード２８上のリソース２６へのアクセスを要求する。オプションとして、ＶＰＮ（仮想プライベートネットワーク）モジュール３０がターゲットノード２８上で動作し、ＣＭノード２０及びリクエスタノード１２のいずれか、又は両方との通信を支配してもよい。
【００２１】
リクエスタノード１２、ＣＭノード２０、及びターゲットノード２８はすべて、コンピュータネットワークにおけるノードであり、かつ単一のマシンサーバ、又は相互接続されたサーバのコレクションであってもよい。図１の様々なモジュールは、ノードのハードウェアと相互作用してそれらの命令を実行するソフトウェアモジュールである。
【００２２】
ＣＭノード２０は、リソース２６にアクセスするために必要なクレデンシャルを記憶するデータストア２４を制御するＣＭモジュール２２とともに動作する。リクエスタアプリケーション１６は、リソース２６にアクセスする必要があるとき、リソースへのアクセスを得るためのこれらのクレデンシャルを要求しなければならない。リクエスタアプリケーションの要求は、リクエスタアプリケーション１６と同一のノード上で動作するＳＰＭモジュール１４に通信により送信される。ＳＰＭモジュール１４は、要求を受信し、要求から関連する情報を抽出し、かつＣＭモジュールへの送信のためにこの情報を要求パッケージにパッケージ化する。ＳＰＭモジュール１４は、ＣＭモジュール２２によって生成されかつＳＰＭモジュール１４に事前に通信により送信された暗号化鍵を用いて要求パッケージを暗号化する。ＳＰＭモジュール１４はまた、暗号化された要求パッケージとともに、リクエスタノード１２に関する指紋データを送信する。
【００２３】
クレデンシャルをターゲットリソース２６に通信により送信するために、ＣＭモジュール２２は、アクセスを許可されるリクエスタアプリケーション１６の識別情報とともに、これらのクレデンシャルを直接的にターゲットリソース２６に送信してもよい。代替として、ＣＭモジュール２２は、リクエスタアプリケーション１６がターゲットリソース２６にアクセスするためにこれらのクレデンシャルを直接的に使用してもよいように、クレデンシャルをＳＰＭモジュール１４に返してもよい。ＣＭモジュール２２はまた、パスワード及び暗号化鍵などの変更されたクレデンシャルに関する更新のために、ターゲットリソース２６及びその関連したＳＰＭモジュール３２と通信してもよい。
【００２４】
リクエスタノード１２のＳＰＭモジュール１４は、セキュアキャッシュ１８を用いてリクエスタアプリケーション１６のためのクレデンシャルを記憶してもよく、その結果、ターゲットリソースへの将来のアクセスは、ＣＭモジュール２２を介して動作する必要がないことが留意されるべきである。同様に、ＣＭモジュール２２によって生成され、かつＳＰＭモジュール１４によって使用されてＣＭモジュール２２との通信を暗号化する／復号する暗号化鍵がまた、セキュアキャッシュ１８に記憶されてもよい。
【００２５】
セキュアに動作するために、それぞれのＳＰＭモジュール１４，３２は、上述したプロセスを実行することができるようになる前に、ＣＭモジュール２２に身元を明らかにして、ＣＭモジュール２２と通信するときに使用する唯一の暗号化鍵を受信しなければならない。このセットアップステージの一部として、それぞれのＳＰＭモジュール１４，３２は、どのリソースがターゲットリソースであるのか、どのアプリケーションがリクエスタアプリケーションであるのか、及びこれらのリソース及びアプリケーションに関する詳細を含むそのノード１２，２８についてのデータを収集する。ＳＰＭモジュール１４，３２はまた、ノードにインストールされたハードウェア、及びそのノードを一意に識別する他の構成情報などのそのノードについての構成情報を収集する。（シリアル番号、ノードにインストールされたアプリケーション、インストールされたソフトウェア及びハードウェアの両方のバージョン番号を含んでもよい）この構成情報はその後、そのノードの「指紋」として使用されてもよい。指紋データは１つのノードに収集されてもよく、その後、その特定のノードの他の情報とともに、検証のためにＣＭノード２０に送信されてもよい。検証されると、リクエスタノード及びその上で動作するＳＰＭモジュールは、ＣＭモジュール２２に登録されたリソースへのアクセスを要求することができる。もちろん、ＣＭモジュール２２に登録されたノード上で動作するリクエスタアプリケーションのみが、ターゲットリソース２６にアクセスすることを許可される。ノードの新しいアプリケーションは、ターゲットリソースへのアクセスを要求することができる前に、登録しかつＣＭモジュール２２によって検証されなければならない。
【００２６】
リソースにアクセスするために必要なクレデンシャルへのアクセスを得るために、それぞれのＳＰＭモジュールは、そのノード上で動作するリクエスタアプリケーションがアクセスを依頼するときはいつでも、そのノードの指紋データを提供しなければならないことが留意されるべきである。上述したように、この指紋データは、リクエスタアプリケーションによるターゲットリソースへのアクセス要求に関する関連する情報とともに、ＣＭモジュール２２に送信される。ＣＭモジュール２２がこの指紋データを受信するとき、ＣＭモジュール２２は、データストア２４からその特定のノードについての登録データを検索して、リクエスタノードから受信された指紋データが、リクエスタノードが最初に検証されたときに受信された指紋データに一致するかを調査してもよい。一致する場合、ＳＰＭモジュールはそれが意図したものであり、別の調査が続行してもよい。一致しない場合、リソースアクセス要求は拒否される。このような要求の拒否は、リクエスタノードが最初の登録／検証プロセスを経験しなければならないことを意味する。
【００２７】
ＣＭモジュール２２によって、１つのリクエスタノードが（その上で動作するＳＰＭモジュールを介して）検証されたとき、又は（リクエスタノードごとに複数のＳＰＭモジュールが存在する場合には）１つのＳＰＭモジュールが検証されたとき、ＣＭモジュールは、ＣＭモジュール２２とＳＰＭモジュール又はリクエスタノードとの間の通信で使用されるべき暗号化鍵を生成することがさらに留意されるべきである。これらの暗号化鍵は、複製が関連するＳＰＭモジュール／リクエスタノードに送信されると、ＣＭモジュールによる使用のためにデータストア２４に保持される。リクエスタノードは、その上で動作する１つより多いＳＰＭモジュールを有してもよく、それぞれのＳＰＭモジュールは、リクエスタノード上の少なくとも１つのリクエスタアプリケーションのためのターゲットリソースアクセスを管理することを課せられていることが明らかであろう。このような構成では、それぞれのＳＰＭモジュールは、ＣＭモジュールとの通信に使用するための自分自身の暗号化鍵のセットを有してもよい。より高度なセキュリティのために、それぞれのリクエスタアプリケーションが、リクエスタアプリケーションとＣＭモジュールとの間で通信するときに使用するためのＣＭモジュールと共有された自分自身の暗号化鍵を有するように構成されてもよい。
【００２８】
それぞれのリクエスタアプリケーションは、その関連するＳＰＭモジュール及びそれが動作しているノードとともに、ＣＭモジュールに登録されかつ検証される。ターゲットリソースへのアクセスを得るために、リクエスタアプリケーションは、このようなアクセスを依頼し、かつそれが検証及び登録を探索するときにＣＭモジュールに元々送信されたデータを送信する。このようなデータは、そのアプリケーションの名前、そのアプリケーションのファイル記憶のロケーション、そのアプリケーションの実行パス、そのアプリケーションの識別情報（ＩＤ）、そのアプリケーションの一方向ハッシュ値、そのセッションの認可鍵、及びそれが動作しているノードのマシン指紋を含んでもよい。もちろん、システムの構成に応じて、追加のデータを伴う又は伴わない上述したものの任意のサブセットがまた、リソースへのアクセスを得るために使用されてもよい。
【００２９】
ＣＭノード２０のデータストア２４に関して、データストアはデータベースの形式であってもよい。重要な値は、データベースのデータベースフィールドに記憶するために、強い暗号を用いて暗号化されてもよい。重要な暗号化されたデータは、長く、強いパスワードを用いてプライベートデータベースに書き込まれてもよく、プライベートデータベースはデータベースの一部である。このプライベートデータベースはその後、管理された対称鍵を用いて暗号化されたパスワードを用いて保護されてもよい。管理された鍵はその後、パブリックデータベースのテーブルに置かれて、鍵がアドホック又はスケジューリングされた方法で変更されることを可能にしてもよい。
【００３０】
ＣＭモジュールの記録を保持する義務を簡単化するために、エイリアス（別名）の概念が使用されてもよい。（例えば、ターゲットサーバ上のアプリケーションである）それぞれのターゲットリソースは、特定のエイリアスに関連してもよい。また、エイリアスは、（例えばアカウント及びパスワードである）ターゲットリソースのクレデンシャルに関連する。登録された／検証されたとき、ターゲットリソースへのアクセスを要求してもよい潜在的なリクエスタアプリケーションはその後、リクエスタアプリケーションのアクセス権、及びターゲットリソースへのアクセスのためのクレデンシャルのリリースに必要な任意の実行時の基準とともに、エイリアスにマッピングされる。これは、クレデンシャルを検索するためにあるレベルの間接参照を導入する。これは、クレデンシャルがリクエスタアプリケーションに影響を与えることなく変化することを可能にする。したがって、リクエスタアプリケーションは、特定のリソースにアクセスするために必要なクレデンシャルが変更された場合、個々に通知される必要がない。
【００３１】
上述したように、ＳＰＭモジュール１４は、事前にアクセスされたリソースが同一のノード上の他のリクエスタアプリケーションによってアクセスされてもよいように、セキュアキャッシュ１８を使用してもよい。これは、リクエスタアプリケーションにとってリソースへのより高速なアクセスを可能にするであろう。セキュアキャッシュ１８を使用するために、ＣＭモジュール２２から受信されたクレデンシャルは、セキュアキャッシュ１８に保存されてもよい。ＳＰＭモジュール１４と同一のノード上のリクエスタアプリケーション１６が、クレデンシャルがセキュアキャッシュ１８に記憶されたリソースへのアクセスを要求する場合、ＳＰＭモジュール１４は、リクエスタアプリケーションをローカルに認証して必要なクレデンシャルを提供することができる。もちろん、セキュリティの理由のために、セキュアキャッシュのコンテンツは暗号化されてもよく、かつコンテンツは、コンテンツが所定の時間の後、自動的に削除されてもよいように時間制限されてもよい。このような方法は、クレデンシャルが周期的にアクセスされることを必要とし、その結果、古いクレデンシャルが無制限に記憶されないことを保証する。
【００３２】
リソースにアクセスするために使用される（例えばパスワード及び暗号化鍵である）クレデンシャルが最新であることを保証するために、ＣＭモジュールは、これらのリソースのためのクレデンシャルを変更してもよい。ＣＭモジュール２２は、（例えばソフトウェアアプリケーションである）リソースと通信して、リソースにアクセスするために必要なクレデンシャルを変更することができる。クレデンシャルが変更されると、新しいクレデンシャルは、ＣＭモジュール２２に通信により送信される。ＣＭモジュール２２はその後、データストア２４における関連する記録を更新する。
【００３３】
図１に示されたシステムは、人間が介入しないアプリケーションのためのセキュアなクレデンシャル管理を提供する。しかしながら、当業者によって認識されるように、ＳＰＭモジュール１４，３２は、リクエスタアプリケーション及びターゲットノード２８に統合されなければならず、熟練したプログラマ及びリクエスタアプリケーション１６のコードへの変更を必要とする。したがって、レガシーアプリケーションが動作している大企業内へのセキュアパスワード認可システムの採用を促進するために、専門の再コード化又はプログラミング知識を必要とすることなくパスワード認可システムにインターフェースによって接続する手段を提供することが望ましい。
【００３４】
概して、本発明は、リクエスタアプリケーションを再コード化する必要なく、ＳＰＭターゲットリソース接続コンポーネント（以下、「ＳＰＭ接続コンポーネント」という。）をインストールしかつ構成することによって、人間が介入しないリクエスタアプリケーションのためにデータベース接続を認証することを可能にする方法及びシステムを提供する。ＳＰＭデータベース接続コンポーネントは、ターゲットリソースのための要求を横取り（intercept）し、クレデンシャルマネージャに理解可能な形式で要求を再パッケージ化し、クレデンシャルマネージャからセキュアクレデンシャルにアクセスし、かつクレデンシャルをターゲットリソースに渡す。例えば、クレデンシャルマネージャは、ＣｌｏａｋＷａｒｅ（登録商標）サーバパスワードマネージャ又は他の利用可能なクレデンシャルマネージャなどの上述されたＣＭノードであってもよい。
【００３５】
図２は、本発明の実施形態に係る全体のシステムアーキテクチャを示す。リクエスタノード１００は、その上で動作するリクエスタアプリケーション１０２を有し、リクエスタアプリケーション１０２は、ターゲットノード１０６上で動作する１つ又は複数のターゲットリソース１０４へのアクセスを要求する。ＳＰＭ接続コンポーネント１０８は、リクエスタアプリケーション１０２とネイティブターゲットリソース接続コンポーネント１１０（以下、「ネイティブ接続コンポーネント」という。）との間に設けられ、ターゲットリソース１０４へのアクセスのためのリクエスタアプリケーション１０２からの要求を横取りし、かつそれらを、リクエスタノード１０２上で動作する、又は図示されるようにＣＭノード１１４上で動作する、クレデンシャルマネージャ（ＣＭ）１１２にルーティングする。ネイティブ接続コンポーネントは、例えばＪＤＢＣ又はＯＤＢＣなどの標準のデータベース接続アプリケーションプログラミングインターフェース（ＡＰＩ）を実装することによって、リクエスタアプリケーションのためのデータベース接続を提供する既知のコンポーネントである。接続は、データベース固有であってもよい。
【００３６】
クレデンシャルマネージャ１１２は、リクエスタノード１００に配置される又はリクエスタノード１００で利用可能なコンポーネントである。クレデンシャルマネージャ１１２は、ローカルのリクエスタアプリケーションのためのクレデンシャル要求を調整する。クレデンシャルマネージャ１１２は、典型的に、様々なタイプのリクエスタアプリケーションのためのＡＰＩを提供する。一実施形態では、ＣＭノード１１４は、図１に関して上述されたコンポーネント及び機能を含む。リクエスタノード１００、ＣＭノード１１４、及びターゲットノード１０６はすべて、コンピュータネットワークにおけるノードであり、かつ単一のマシンサーバ、又は相互接続されたサーバのコレクションであってもよい。図２の様々なモジュールは、ノードのハードウェアと相互作用してそれらの命令を実行するソフトウェアモジュールである。
【００３７】
ＳＰＭ接続コンポーネント１０８を用いるクレデンシャル管理システムの全体の動作が、図２を参照して図３に示される。リクエスタアプリケーション１０２が、データベースなどのターゲットリソース１０４への接続を要求する（ステップ１５０）。ＳＰＭ接続コンポーネント１０８が、この要求を横取り又は受信し（ステップ１５２）、接続要求をデコードする（ステップ１５４）。次いで、ＳＰＭ接続コンポーネントは、クレデンシャルマネージャ１１２からクレデンシャルを要求する（ステップ１５６）。クレデンシャルマネージャ１１２は、要求を認証し、必要なクレデンシャルを返して、ＳＰＭ接続コンポーネント１０８への要求を満たす（ステップ１５８）。ＳＰＭ接続コンポーネント１０８は、クレデンシャルマネージャ１１２によって供給されたクレデンシャルを用いて、ネイティブ接続コンポーネント１１０を介してネイティブデータベース接続を初期化する（ステップ１６０）。次いで、ネイティブ接続コンポーネント１１０は、ターゲットリソース１０４をホスティングする外部のターゲットシステムへの接続を確立する又は確立しようと試みる（ステップ１６２）。クレデンシャルが有効でありかつ接続が確立されている場合、ターゲット１０４への確立された接続は、リクエスタアプリケーション１０２に返される（ステップ１６４）。接続を確立する試みが成功しなかった場合、オプションの再試行が実行されてもよい。別のクレデンシャルがクレデンシャルマネージャ１１２から検索されて、接続の再試行がステップ１５６から試みられる。許容可能な再試行の回数は、設計上の選択の問題である。
【００３８】
図４に示すように、ＳＰＭ接続コンポーネント１０８は、ソフトウェアモジュールである。これは、ネイティブデータベース接続コンポーネント１１０及びクレデンシャルマネージャ１１２とともに配置される。ＳＰＭ接続コンポーネント１０８は、リクエスタアプリケーション１０２と通信するためのリクエスタインターフェース１８０と、クレデンシャルマネージャ１１２と通信するためのクレデンシャルサービスインターフェース１８２と、ネイティブ接続コンポーネントと通信するためのネイティブターゲットリソース接続インターフェース１８４と、セキュリティマネージャからの更新を可能にするためのセキュリティインターフェース１８６と、リクエスタからの要求をクレデンシャルマネージャ１１２への適切なＡＰＩコールに変換する方法を決定するための決定エンジン１８８とを備える。
【００３９】
ＳＰＭ接続コンポーネントは、リクエスタアプリケーションのための認証されかつ認可されたデータベース接続を提供する。ＳＰＭ接続コンポーネントは、ネイティブ接続コンポーネントが動的にロードされるリクエスタアプリケーションへのコード変更を必要とせずに、実時間ベースで、データベース又は他のターゲットリソース、クレデンシャルを検索するデータベース接続コンポーネントとして動作する。ＳＰＭ接続コンポーネントは、リクエスタアプリケーションに対するデータベース接続についてのすべてのアクセスを認証しかつ認可する。
【００４０】
ＳＰＭ接続コンポーネント１０８の機能は、例示的な実装を参照して最良に理解されることができる。ＪＤＢＣ  ＳＰＭ接続コンポーネント、及びＯＤＢＣ  ＳＰＭ接続コンポーネントである２つの例示的な実施形態が以下で説明される。これらの例は、限定的なものではなくかつ例示的なもののみである。これらの例は、当業者から期待されるように、Ｊａｖａ（登録商標）プログラミング、及びＪＤＢＣ接続及びＯＤＢＣ接続を熟知していることを仮定している。
【００４１】
ＪＤＢＣは、クライアントがデータベースにアクセスする方法を決定するＪａｖａ（登録商標）プログラミング言語のためのＡＰＩである。これは、データベースのデータを問い合わせる及び更新するための方法を提供する。ＪＤＢＣは、カスタムのＪａｖａ（登録商標）ＤａｔａＳｏｕｒｃｅ（データソース）オブジェクトを使用する。ＤａｔａＳｏｕｒｃｅオブジェクトは、Ｊａｖａ（登録商標）プログラミング言語におけるデータソースの表現である。基本用語では、データソースは、データを記憶するための設備（facility）である。これは、大きな企業のための複雑なデータベースと同じくらい洗練されてもよく、又は行及び列を有するファイルと同じくらい簡単であってもよい。データソースはリモートサーバ上で動作してもよく、又はローカルのデスクトップマシンに存在してもよい。アプリケーションは、接続を用いてデータソースにアクセスし、かつＤａｔａＳｏｕｒｃｅオブジェクトは、ＤａｔａＳｏｕｒｃｅインスタンスが表す特定のデータソースへの接続のためのファクトリ（factory）として考えられることができる。カスタムのＪａｖａ（登録商標）ＤａｔａＳｏｕｒｃｅオブジェクトは、データソース又はターゲットリソースへのコールをカプセル化し、かつ透過的にクレデンシャルマネージャ１１２にアクセスして、データソースにアクセスするために必要なセキュアクレデンシャルを検索する。
【００４２】
ＳＰＭ接続コンポーネント１０８の役割は、データベース接続の取得における認証の透過的な管理である。この機能及び特徴能力を達成するために、本明細書ではＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒ（ＳＰＭプロキシドライバ）と呼ばれるプロキシＪＤＢＣ  Ｄｒｉｖｅｒ（ＪＤＢＣドライバ）クラスが提供され、決定エンジン１８８を実装する。このプロキシＤｒｉｖｅｒ（ドライバ）クラスは、ネイティブ接続コンポーネント１１０によって管理される実際に下層に位置するＪＤＢＣ接続管理及びＤｒｉｖｅｒ（ドライバ）利用のために必要なすべての情報をエンコードした特別に定義されたＵＲＬで動作する。このプロキシクラスは、構成の間にユーザによって、任意のデータベースのためのＤｒｉｖｅｒクラスとして指定される。ユーザはその後、標準の方法で、必要なＪＤＢＣ  ＵＲＬ情報をエンコードすることができる。実行中において、ＪＤＢＣ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒ（ＪＤＢＣプロキシドライバ）は通常のＪＤＢＣドライバとして動作するが、委譲された（delegated）ＪＤＢＣドライバ呼び出し及びクレデンシャルマネージャ１１２へのコールを透過的に実行している。プロキシＪＤＢＣ  Ｄｒｉｖｅｒクラスは、ＳＰＭ  ＪＤＢＣ  ＵＲＬと呼ばれる特化したＪＤＢＣ  ＵＲＬエンコーディングを使用し、その詳細は以下で提供される。機能的に、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒはすべての必要条件に従い、かつＪａｖａ（登録商標）  ＪＤＢＣ  Ｄｒｉｖｅｒクラスに適用されるすべての使用の慣習に従う。
【００４３】
ターゲットリソースにアクセスするために必要なクレデンシャルをセキュアに検索するために、カスタムの指定されたＵＲＬのプロパティがＳＰＭ  Ａｌｉａｓ（ＳＰＭエイリアス）を宣言するために使用される。上述したように、（例えば、ターゲットサーバ上のアプリケーションである）それぞれのターゲットリソースは、特定のエイリアスに関連してもよい。また、エイリアスは、（例えばアカウント及びパスワードである）ターゲットリソースのクレデンシャルに関連する。登録された／検証されたとき、ターゲットリソースへのアクセスを要求する潜在的なリクエスタアプリケーションはその後、リクエスタアプリケーションのアクセス権、及びターゲットリソースへのアクセスのためのクレデンシャルのリリースに必要な任意の実行時の基準とともに、エイリアスにマッピングされる。これは、クレデンシャルを検索するためにあるレベルの間接参照を導入する。これは、クレデンシャルがリクエスタアプリケーションに影響を与えることなく変化することを可能にする。したがって、リクエスタアプリケーションは、特定のリソースにアクセスするために必要なクレデンシャルが変更された場合、個々に通知される必要がない。
【００４４】
カスタムの指定されたＵＲＬのプロパティは、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒが実際の（ターゲットの）ＪＤＢＣ  Ｄｒｉｖｅｒとして使用すべき正確なドライバクラスを宣言するように定義される。すべての接続の試行では、ユーザ／パスワードなどのクレデンシャルは、クレデンシャルマネージャ１１２から得られる。ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒは、すべての呼び出し元（caller）から供給されるユーザ／パスワードのインスタンスを無視する。好ましくは、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒはまた、クレデンシャルマネージャ１１２の呼び出しにおける失敗又はエラーの場合に対処することができる。これらの場合を取り扱うために、ＳＱＬＥｘｃｅｐｔｉｏｎ（ＳＱＬ例外）から必然的に導出されるあるＳＰＭ固有の例外が定義されてもよい。
【００４５】
ＳＰＭ  ＪＤＢＣ代理（proxying）のためのコアクラスは、ｊａｖａ．ｓｑｌ．Ｄｒｉｖｅｒインターフェースを実装しかつ要求されるサービス実装のすべてを含むＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒクラスである。ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒクラスは、すべてのＳＰＭ  ＪＤＢＣ  ＵＲＬを管理する。より具体的には、ドライバマネージャに登録されたＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒクラスの単一のインスタンスが、すべてのＳＰＭ  ＪＤＢＣ  ＵＲＬを管理する。これは、異なるデータベースが単一のＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒインスタンスを介して同時にアクセスされてもよいことを意味する。
【００４６】
ＳＰＭ  ＪＤＢＣ  ＵＲＬは、Ｄｒｉｖｅｒを代理するため、及びクレデンシャルマネージャ１１２を介してクレデンシャルを取り扱いかつ管理するための追加の情報とともに実際のＪＤＢＣ  ＵＲＬをエンコードするカスタムのＪＤＢＣ  ＵＲＬである。ＳＰＭ  ＪＤＢＣ  ＵＲＬのフォーマットは、以下のように定義される。
【００４７】
［数１］
ｓｐｍ：［ｕｒｌ］；Ｐ１＝Ｖ１；．．．；Ｐｎ＝Ｖｎ
【００４８】
ここで、ｓｐｍ：は、リテラル接頭辞「ｓｐｍ：」である。
【００４９】
［ｕｒｌ］は、以下のようなユーザ固有である実際のＪＤＢＣ（ベース）ＵＲＬである。
【００５０】
［数２］
ｊｄｂｃ：ｈｓｑｌｄｂ：ｈｓｑｌ：／／ｌｏｃａｌｈｏｓｔ：９００１／ｃｓｐｍ１
【００５１】
それぞれのＰｉは、実際のＪＤＢＣ  ＵＲＬのプロパティのためのプロパティ名、又はそうでなければ、ＳＰＭの区別用プロパティ（SPM distinguished property）であるＳＰＭＡｌｉａｓ（ＳＰＭエイリアス）又はＳＰＭＤｒｉｖｅｒ（ＳＰＭドライバ）のうちの１つである。
【００５２】
ＳＰＭＡｌｉａｓは、Ｐｉリストに出現すべきである。その値は、ユーザ／パスワードの探索における使用のための意図されたＳＰＭ  Ａｌｉａｓでなければならない。
【００５３】
さらに、ＳＰＭＤｒｉｖｅｒはＰｉリストに出現してもよく、その場合、［ｕｒｌ］値について有効なＪＤＢＣ  Ｄｒｉｖｅｒでなければならない。
【００５４】
ＳＰＭプロパティは、実際のＪＤＢＣ  Ｄｒｉｖｅｒが値を得ることができるＪａｖａ  Ｐｒｏｐｅｒｔｉｅｓ（Ｊａｖａプロパティ）マップで表される。
【００５５】
決定エンジン１８８は、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒクラス内に実装され、かつＳＰＭ  ＪＤＢＣ  ＵＲＬを決定エンジンが内部で使用するであろう関連するパーツにデコードする又は構文解析する。これらのパーツは、
１．Ｏｒｉｇｉｎａｌ  ＵＲＬ（オリジナルＵＲＬ）：指定されたようにＳＰＭ  ＪＤＢＣ  ＵＲＬとして定義される。
２．Ｂａｓｅ  ＵＲＬ（ベースＵＲＬ）：上述した［ｕｒｌ］の断片としてのみ定義される。
３．Ｄｒｉｖｅｒ  ＵＲＬ（ドライバＵＲＬ）：ＳＰＭＡｌｉａｓ及びＳＰＭＤｒｉｖｅｒが除去されることの発生（また、ユーザ及びパスワードが除去されることの発生）とともにＳＰＭ  ＪＤＢＣ  ＵＲＬとして定義される。
４．ＳＰＭ  Ａｌｉａｓ：要求されたＳＰＭＡｌｉａｓプロパティの値として定義される。
５．Ｄｒｉｖｅｒ  Ｃｌａｓｓ  Ｎａｍｅ（ドライバクラス名）：存在する場合はＳＰＭＤｒｉｖｅｒプロパティの値として定義され、そうでなければヌルとして定義される。
【００５６】
ＵＲＬパラメータが適合するそのサービスのすべてにおいて、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒクラスによって受信されるものは、ＳＰＭ  ＪＤＢＣ  ＵＲＬであろう。ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒクラスは、ターゲットＪＤＢＣ  Ｄｒｉｖｅｒを得てかつ保持して、存在する場合はプロパティＳＰＭＤｒｉｖｅｒの値によって名付けられる、又はそうでなければ［ｕｒｌ］（Ｂａｓｅ  ＵＲＬ）を受け入れるドライバを探索することによって名付けられるクラスのインスタンスを用いて、ＳＰＭ  ＪＤＢＣ  ＵＲＬ接続を要求する。いずれの場合でも、ターゲットＤｒｉｖｅｒ（ターゲットドライバ）の取得は、ＤｒｉｖｅｒＭａｎａｇｅｒ（ドライバマネージャ）クラスを介する探索によって発生することができる。さらに、ｊａｖａ．ｓｑｌ．Ｄｒｉｖｅｒインターフェースを実装して、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒは、ＪｄｂｃＤｒｉｖｅｒＵｒｌＥｎｔｒｙ（ＪｄｂｃドライバＵｒｌエントリ）クラスのインスタンスにおいて、リクエスタアプリケーション又はサーバの構成又は指紋情報などの予め与えられたＳＰＭ  ＪＤＢＣ  ＵＲＬのための接続を確立するために必要なデータのすべてを記憶する。ＪｄｂｃＤｒｉｖｅｒＵｒｌＥｎｔｒｙインスタンスは、ＳＰＭ  ＪＤＢＣ  ＵＲＬによって鍵をかけられたキャッシュに記憶されてもよい。
【００５７】
ＳＰＭ接続コンポーネントのＪＤＢＣ実装は、アプリケーションを再コード化することなく、クレデンシャルマネージャ１１２の機能をユーザのアプリケーションに統合するためにユーザによって使用されることができるＪａｖａ（登録商標）ライブラリ（例えば、ＪａｖａＤｏｃを有するｊａｒファイル）を提供する。使用において、エンドユーザは、ドライバ及び関連するクラスとともにライブラリをリクエスタアプリケーションサーバのクラスパスに追加し、かつリクエスタアプリケーションサーバのＤａｔａＳｏｕｒｃｅをＳＰＭ  ＪＤＢＣ  ＵＲＬを示すＳＰＭ  Ｐｒｏｘｙ  ＪＤＢＣ（ＳＰＭプロキシＪＤＢＣ）ドライバを使用するように構成しさえすればよい。より具体的には、ＳＰＭ  ＪＤＢＣ  Ｄｒｉｖｅｒ（ＳＰＭ  ＪＤＢＣドライバ）を使用するために、構成ファイルの属性が変更されて、事前に指定されたように接続ｕｒｌを設定し、かつドライバ−クラスをＳＰＭ  ＪＤＢＣ  Ｄｒｉｖｅｒに設定する。
【００５８】
ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒクラス及びその関連するクラスは、別々に配置されることができる分離したコンポーネントを形成する。これは、ｃｓｐｍｃｌｉｅｎｔ．ｊａｒライブラリ、統合されたときには恐らくｌｏｇ４ｊ（又は他のロギングシステム）、及びＳＰＭ  ＪＤＢＣ  ＵＲＬを介する構成で宣言されたようなベンダー固有のＪＤＢＣ  Ｄｒｉｖｅｒクラスに対して統合依存（integration dependency）を有する。
【００５９】
接続要求は、リクエスタアプリケーション１０２がＵＲＬ及びプロパティのセットを供給することによって実行される。要求は、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒによって受信され、ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒはまず、受信されたＵＲＬがＳＰＭ  ＪＤＢＣ  ＵＲＬであり、したがってクラスによって取り扱われるかを調査する。ＵＲＬがＳＰＭ  ＪＤＢＣ  ＵＲＬでない場合、接続要求は失敗する。ＵＲＬがＳＰＭ  ＪＤＢＣ  ＵＲＬである場合、要求されたＪｄｂｃＤｒｉｖｅｒＵｒｌＥｎｔｒｙインスタンスが、ＪｄｂｃＤｒｉｖｅｒＵｒｌＥｎｔｒｙＣａｃｈｅ（ＪｄｂｃドライバＵｒｌエントリキャッシュ）から得られる。ＪｄｂｃＵｒｌＤｒｉｖｅｒＥｎｔｒｙＣａｃｈｅクラスのａｓｓｏｃｉａｔｅＤｒｉｖｅｒ（アソシエイトドライバ）サービスは、ＪｄｂｃＵｒｌＤｒｉｖｅｒＥｎｔｒｙインスタンスにおいてＳＰＭ  ＪＤＢＣ  ＵＲＬに関連する（結びつけられる）ターゲットＪＤＢＣ  Ｄｒｉｖｅｒ（ターゲットＪＤＢＣドライバ）を位置付けることに関与する。キャッシュのエントリは、それが存在しない場合、この時点で生成される。
【００６０】
クレデンシャルマネージャ１１２へのコールが実行されて、それぞれの反復される試行において、ユーザネーム及びパスワードなどの必要なセキュアクレデンシャルを検索する。ＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒによって具体化されるクレデンシャルマネージャ１１２とＳＰＭ接続コンポーネントとの間の通信は暗号化されて、認可されていない当事者による検出又は傍受を回避することが好ましい。暗号化は、クレデンシャルマネージャ１１２とＳＰＭ  Ｐｒｏｘｙ  Ｄｒｉｖｅｒとの間で事前に取り決められてもよく、かつ例えば、暗号化鍵の交換を含んでもよい。クレデンシャルマネージャ１１２は、ターゲットリソース２６との接続を確立するために必要なセキュアクレデンシャルを返す。それぞれの試行において、その後、ネイティブターゲットＪＤＢＣドライバへのコールが実行されて、接続を得る。使用されるパラメータは、ベースＪＤＢＣ  ＵＲＬと、ＪｄｂｃＤｒｉｖｅｒＵｒｌＥｎｔｒｙインスタンスからのマージされたプロパティ及びリクエスタアプリケーション１０２によって提供されるプロパティを含むプロパティオブジェクトとである。マージされたプロパティでは、ハードコードされたユーザネーム及びパスワードなどのクレデンシャルは、クレデンシャルマネージャ１１２から返される値によって上書きされる。接続は、接続が得られると、リクエスタアプリケーション１０２に即座に返される。そうでなければ、図３に関して上述したように、再試行が開始されてもよく、又はＳＱＬＥｘｃｅｐｔｉｏｎが呼び出し元に投げられてもよい。
【００６１】
接続取得のためのこの低レベルのドライバ管理は、（例えばクレデンシャルマネージャ１１２によって）データベースのパスワードが変更されたユーザのために取得されるすべての新しい接続が、新しいパスワードを用いて実行されることを意味する。この動作は、任意の知識又は任意の所有データソースの介入なしに自動的に発生する。ＳＰＭ  ＪＤＢＣドライバによるこのような接続管理は、データベースパスワードの変更が、データソースの動作について完全に透過的であることを保証する。
【００６２】
ＯＤＢＣの実装では、カスタムのＳＰＭ  ＯＤＢＣドライバが提供される。ＯＤＢＣは、データベース管理システムなどのターゲットリソースにアクセスするための標準のソフトウェアＡＰＩ方法を提供する。ドライバは、クレデンシャルマネージャＣＯＭオブジェクトを使用して、データベースに接続する要求がリクエスタアプリケーション１０２から実行されたときに、クレデンシャルをクレデンシャルマネージャ１１２から検索する。要求はその後、ネイティブターゲットＯＤＢＣドライバに渡されて、遷移を完了する。ＳＰＭ  ＯＤＢＣドライバは、すべてのＯＤＢＣ２．０の機能と、下位互換性のためにいくつかの廃止予定のＯＤＢＣ１．０の機能とを実装することが好ましい。
【００６３】
ＳＰＭ  ＪＤＢＣ  Ｄｒｉｖｅｒと同様に、ＳＰＭ  ＯＤＢＣ  Ｄｒｉｖｅｒ（ＳＰＭ  ＯＤＢＣドライバ）は決定エンジン１８８を実装する。ＳＰＭ  ＯＤＢＣ  Ｄｒｉｖｅｒ接続ストリングは以下の情報を含む。Ｄｒｉｖｅｒ（ドライバ）−ＳＰＭ  ＯＤＢＣ  Ｄｒｉｖｅｒの名前、Ａｌｉａｓ（エイリアス）−クレデンシャルを検索するときにクレデンシャルマネージャ１１２に送信するためのターゲットＡｌｉａｓ（ターゲットエイリアス）、及びＴａｒｇｅｔＤｒｉｖｅｒ（ターゲットドライバ）−ターゲットドライバのための接続ストリング。ＴａｒｇｅｔＤｒｉｖｅｒストリング（ターゲットドライバストリング）は、ターゲットドライバによって要求される情報のすべてを含むが、ユーザＩｄ及び／又はパスワードを含まない。
【００６４】
ＳＰＭ  ＯＤＢＣ  Ｄｒｉｖｅｒは、機能を３つの関数に加える必要がある。ＳＱＬＣｏｎｎｅｃｔ（ＳＱＬ接続）−予め定義されたＤＳＮを用いてデータベースへの接続を生成する、ＳＱＬＤｒｉｖｅｒＣｏｎｎｅｃｔ（ＳＱＬドライバ接続）−接続ストリングを用いてデータベースへの接続を生成する、及びＣｏｎｆｉｇＤＳＮ（コンフィグＤＳＮ）−ＤＳＮを生成、変更、又は削除する。
【００６５】
ＳＱＬＣｏｎｎｅｃｔ関数は、７つのパラメータを有する。第１のパラメータは、ＡＰＩ関数ＳＱＬＣｏｎｎｅｃｔをコールするときに渡される。第２のパラメータ及び第３のパラメータは、構成を検索するために使用される。残りの４つのパラメータ、ユーザネーム及びパスワードは無視される。ドライバのＳＱＬＣｏｎｎｅｃｔ関数がコールされるとき、これは、Ｔａｒｇｅｔ  Ａｌｉａｓ（ターゲットエイリアス）及びＴａｒｇｅｔ  ＤＳＮ（ターゲットＤＳＮ）を検索し、Ｔａｒｇｅｔ  Ａｌｉａｓを使用してクレデンシャルを検索し、かつクレデンシャルマネージャから検索したＴａｒｇｅｔ  ＤＳＮ及びクレデンシャルを渡すＡＰＩ関数ＳＱＬＣｏｎｎｅｃｔ関数をコールするであろう。
【００６６】
ＳＱＬＤｒｉｖｅｒＣｏｎｎｅｃｔ関数は、８つのパラメータを有する。第３のパラメータ及び第４のパラメータは、構成情報を検索するために使用される。残りのパラメータは、ＡＰＩ関数ＳＱＬＤｒｉｖｅｒＣｏｎｎｅｃｔがコールされるときに伝えられる。ドライバのＳＱＬＤｒｉｖｅｒＣｏｎｎｅｃｔ関数がコールされるとき、これは、接続ストリングからＴａｒｇｅｔ  Ａｌｉａｓ及びＴａｒｇｅｔ  Ｄｒｉｖｅｒを抽出し、Ｔａｒｇｅｔ  Ａｌｉａｓを使用してクレデンシャルを検索し、Ｔａｒｇｅｔ  Ｄｒｉｖｅｒ接続ストリング（ターゲットドライバ接続ストリング）の複製を生成しかつクレデンシャルマネージャ１１２から検索されたクレデンシャル（ユーザｉｄ及びパスワード）を加え、かつＴａｒｇｅｔ  Ｄｒｉｖｅｒ接続ストリングの更新複製（update copy）を渡すＡＰＩ関数ＳＱＬＤｒｉｖｅｒＣｏｎｎｅｃｔ関数をコールするであろう。
【００６７】
上述した説明では、説明の目的のために、多数の詳細が本発明の実施形態の十分な理解を提供するために説明される。しかしながら、これらの特定の詳細説明は本発明を実施するために必要でないことが、当業者に明らかであろう。他のインスタンスでは、周知の電気的な構造及び回路は、本発明を曖昧にしないために、ブロック図の形式で示される。例えば、特定の詳細説明は、本明細書で説明される本発明の実施形態がソフトウェアルーチン、ハードウェア回路、ファームウェア、又はそれらの組み合わせとして実装されるかどうかを提供しない。
【００６８】
本発明の実施形態は、（コンピュータにより読み取り可能な媒体、プロセッサにより読み取り可能な媒体、又はその中に具体化されたコンピュータにより読み取り可能なプログラムコードを有するコンピュータにより使用可能な媒体とも呼ばれる）機械により読み取り可能な媒体に記憶されるソフトウェア製品として表されてもよい。機械により読み取り可能な媒体は、ディスケット、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、（揮発性又は不揮発性の）メモリデバイス、又は同様の記憶機構を含む磁気記憶媒体、光学式記憶媒体、又は電気的な記憶媒体を含む任意の適切な有形の媒体（tangible medium）であってもよい。機械により読み取り可能な媒体は、実行されるときに、プロセッサに本発明の実施形態に係る方法のステップを実行させる様々な命令のセット、コードシーケンス、構成情報、又は他のデータを含んでもよい。当業者は、説明される発明を実装するために必要な他の命令及び動作がまた、機械により読み取り可能な媒体に記憶されてもよいことを認識するであろう。機械により読み取り可能な媒体から実行するソフトウェアは、回路とインターフェースにより接続し、説明されるタスクを実行してもよい。
【００６９】
また、この発明を理解する当業者は、それらのすべてが以下の特許請求の範囲で決定される本発明の範囲内であると意図される上述したものの代替の構造及び実施形態又は変形例を思いつくであろう。
【図１】
0005635978.tif 000002
【図２】
0005635978.tif 000003
【図３】
0005635978.tif 000004
【図４】
0005635978.tif 000005