JDBCクライアントのパススルークレデンシャルの設定
データソースがパススルーログインを使用するように構成されている場合、JDBCクライアントによって他のクレデンシャルが設定されていない場合、デフォルトでTDVサーバーセッションクレデンシャルがデータソースにログインするために使用されます。 JDBCドライバーを使用して、さまざまなデータソースクレデンシャルを指定し、データソースアクセスをネゴシエートできます。パススルーログインを使用するようにデータソースが構成されている場合、データソースクレデンシャルは接続とセッションを確立します。 JDBCドライバーで設定されたクレデンシャルは、パススルー認証を使用するように構成されたデータソースでの使用にのみ有効であり、クレデンシャルで作成された接続は、現在のJDBCクライアントセッションでのみ有効です。
パススルーログインを使用するように構成されたリソースとの接続を作成するときに、名前付きの各リソースにユーザー名とパスワードのペアを設定できます。これは、指定されていないリソースの一般的な「nullデータソース」設定インスタンスに対しても実行できます。
setDataSourceCredentials()メソッドは、指定された各データソースの現在のセッションのデータソースパススルークレデンシャルを登録します。データを取得するパススルーログインが有効な各リソースに資格情報を設定するために、必要な回数だけ呼び出すことができます。
setDataSourceCredentials("<fullpath>","<username>", "<password>");
変数 |
説明 |
<フルパス> |
データソースへのフルパスを提供するか、NULLにすることができます。
パスが、ユーザーがアクセスする権限を持たないデータソースを参照している場合、プログラムはエラーメッセージを返します。 |
<ユーザー名> |
パスに設定できるユーザー名とパスワードのペアは1つだけです。 |
<パスワード> |
データソースへのパスワード。 |
クレデンシャルの使用規則
次のルールは、資格情報の使用を管理します。
•クライアントがそれらのリソースからデータを要求しない限り、データソースとの接続とセッションは作成されません。
•接続とクレデンシャルは、現在のJDBCクライアントセッションでのみ有効です。
•パススルーを使用するように構成されたデータソースの場合、TDVは他の接続または他のユーザーによって作成されたセッションを再利用しません。 JDBCクライアントによって設定されたクレデンシャルは、現在のクライアントセッションでのみ使用できます。クライアント接続が異常終了した場合、接続は他のクライアントが使用するためにプールに戻されません。
•データソースパスが、資格情報が指定されているデータソース名と一致する場合、それらの資格情報を使用してデータの取得が試行されます。セキュリティを強化するために、これらのクレデンシャルを使用してデータを接続または取得できない場合、NULLデータソースに適切なクレデンシャルが設定されていても、他のクレデンシャルを使用しようとせずに取得プロセスが停止します。
•setDataSourceCredentials()を使用してユーザー(例: 'userabc')を通常どおり指定する場合、データソースはこのユーザーとしてデータベースサーバーへのログインに進みます。ただし、クライアントが「admin」としてTDVサーバーにログインしている場合は例外です。この場合、setDataSourceCredentials()は無視され、代わりに、TDVはデフォルトでデータソースの資格情報を使用してデータベースサーバーにログインします。
注:プールされた接続を使用する場合、JDBCクライアントは、clearAllDataSourceCredentials(引数なし)メソッドを呼び出して、接続をプールに戻す前に設定された資格情報をすべてクリアすることをお勧めします。
パススルーログインの資格情報を設定するには
1. クライアントアプリケーションにパススルーログインを使用することを決定します。
3. クライアントプログラムに接続URLを追加します。たとえば、Javaの場合、次を追加できます。
String url = "jdbc:compositesw:dbapi@localhost:9401?"
+"domain=composite&dataSource=cdspt";
String user = "compUser";
String pass = "compPassword";
// Load driver
Class.forName("cs.jdbc.driver.CompositeDriver");
// Create connection
conn = DriverManager.getConnection(url, user, pass);
4. setDataSourceCredentialsメソッドを追加します。たとえば、Javaクライアントアプリケーションに次を追加します。
((cs.jdbc.driver.CompositeConnection)conn)
.setDataSourceCredentials("/shared/sources/dsPassThru", "dsUser", "dsPassword");
5. プールされた接続を使用している場合clearAllDataSourceCredentials(引数なし)メソッドを追加して、接続をプールに戻す前に設定された資格情報をすべてクリアします
6. より詳細なサンプルコードについては、次のトピックのいずれかを参照してください。
リファレンス |
説明 |
|
パススルーログインが有効になっているデータソースからデータが要求されると、TDVサーバーは最初に、要求しているクライアントにその名前付きリソースに設定された資格情報があるかどうかを確認します。クレデンシャルが設定されている場合は、そのソースからデータを取得するための接続とセッションを確立するためにクレデンシャルが渡されます。 |
|
データが必要なデータソースにクレデンシャルが設定されていない場合、TDVサーバーはsetDataSourceCredentials()メソッドがヌルデータソース(NULL)にクレデンシャルを設定するために使用されたかどうかを確認します。 setDataSourceCredentials()を使用してnullデータソースにクレデンシャルを設定した場合、それらのクレデンシャルを使用してデータの取得を試みます。 |
|
クレデンシャルが特定の名前のデータソースまたはNULLに設定されていない場合、TDVサーバーは、TDVサーバーとの接続を確立するために使用されたものと同じログインクレデンシャルを使用してデータソースにアクセスしようとします。 |