目次

> # JDBC 認証属性

> JDBC (Java Database Connectivity) 認証属性は組織属性です。サービス設定の下で組織属性に適用される値は、JDBC 認証テンプレートのデフォルト値になります。組織にサービスを登録した後、サービステンプレートを作成する必要があります。デフォルト値は組織の管理者が登録後に変更できます。組織属性は組織のエントリに継承されません。JDBC 認証属性は次のとおりです。

> - 「接続タイプ」
> - 「接続プールの JNDI 名」
> - 「JDBC ドライバ」
> - 「JDBC URL」
> - 「データベースに接続するユーザー」
> - 「データベースに接続するユーザー」
> - 「データベースに接続するパスワード」
> - 「データベースに接続するパスワード (確認)」
> - 「データベース内のパスワードカラム」
> - 「準備されているステートメント」
> - 「パスワード構文を変換するクラス」
> - 「認証レベル」

> ## 接続タイプ

> このフィールドには、JNDI (Java Naming and Directory Interface) 接続プールまたは JDBC ドライバのいずれかを使用して、SQL データベースへの接続タイプを指定します。オプションは次のとおりです。

> - JNDI から取得された接続プール
> - 非持続 JDBC 接続

> JNDI 接続プールは、配下の Web コンテナの設定を利用します。

> ## 接続プールの JNDI 名

> 「接続タイプ」で JNDI を選択した場合は、このフィールドに接続プール名を指定します。JDBC 認証では Web コンテナから提供される JNDI 接続が使用されるので、ここで設定した JNDI 接続プールがほかの Web コンテナの接続と一致しなくなることがあります。

> 次の例は、Web サーバーと MySQL 4.0 の接続プールを設定する方法を示しています。

> 1. Web サーバーコンソールで、次の属性を持つ JDBC 接続プールを作成します。

> プール名: samplePool

> データソースクラス名: com.mysql.jdbc.jdbc2.optional.MysqlDatacSource

> サーバー名 : mySQL サーバーのサーバー名

> ポート : mySQL サーバーを実行するポート番号

> ユーザー : データベースのユーザー名

> パスワード : ユーザーのパスワード

> データベース名: データベースの名前

> 注 | 以下の手順で使用する DataSource クラスと JDBC ドライバクラスが含まれる jar ファイルは、このアプリケーションのクラスパスに追加する必要があります。

> 2. JDBC リソースを設定します。Web サーバーコンソールで、次の属性を持つ JDBC リソースを作成します。

> JNDI 名: jdbc/samplePool

> プール名 : samplePool

> データリソースを有効 : オン

> 3. 次の行をアプリケーションの sun-web.xml ファイルに追加します。

> <resource-ref>
> <res-ref-name>jdbc/mySQL</res-ref-name>
> <jndi-name>jdbc/samplePool</jndi-name>
> </resource-ref>

> 4. 次の行をアプリケーションの web.xml ファイルに追加します。

> <resource-ref>
> <description>mySQL Database</description>
> <res-ref-name>jdbc/mySQL</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>

> 設定が完了すると、この属性の値は次のようになります。

> java:comp/env/jdbc/mySQL

> ## JDBC ドライバ

> 「接続タイプ」で JDBC を選択した場合は、SQL データベースから提供される JDBC ドライバをこのフィールドに指定します。次に例を示します。

> com.mysql.jdbc.Driver

> ## JDBC URL

> 「接続タイプ」で JDBC を選択した場合は、このフィールドにデータベース URL を指定します。たとえば、mySQL の場合は、次の URL を指定します。

> jdbc.mysql://hostname:port/databaseName

> ## データベースに接続するユーザー

> このフィールドには、JDBC 接続を使用してデータベースに接続するユーザーの名前を指定します。

> ## データベースに接続するパスワード

> このフィールドには、「データベースに接続するユーザー」に指定したユーザーのパスワードを定義します。

> ## データベースに接続するパスワード (確認)

> パスワードを確認します。

> ## データベース内のパスワードカラム

> このフィールドには、SQL データベースのパスワードカラム名を指定します。

> ## 準備されているステートメント

> このフィールドには、ログインしようとしているユーザーのパスワードを取得するための SQL 文を指定します。次に例を示します。

> select Password from Employees where USERNAME = ?

> ## パスワード構文を変換するクラス

> この属性には、データベースから取得したパスワードをユーザー入力の形式に変換して、パスワードを比較するためのクラス名を指定します。このクラスは、JDBCPasswordSyntaxTransform インタフェースを実装している必要があります。

> ## 認証レベル

> 認証レベルは認証方法ごとに個別に設定します。この値は、認証の信頼度を示します。ユーザーが認証を受けると、この値がセッションの SSO トークンに格納されます。ユーザーがアクセスしたいアプリケーションに SSO トークンが提供されると、そのアプリケーションは格納されている値を使用して、ユーザーにアクセスを許可するのに十分なレベルかどうかを判別します。SSO トークンに格納されている認証レベルが必要な最小値に満たない場合、アプリケーションはユーザーにより高い認証レベルのサービスで認証を再度受けるよう要求することがあります。デフォルト値は 0 です。

目次