#### JDBC

Java Database Connectivity (JDBC) 验证模块允许 OpenSSO 通过任何提供启用 JDBC 驱动程序的结构化查询语言 (Structured Query Language, SQL) 数据库来验证用户。可以直接通过 JDBC 驱动程序或 JNDI 连接池连接 SQL 数据库。JDBC 属性是领域属性。这些属性包括：

- 连接类型

- 连接池 JNDI 名称

- JDBC 驱动程序

- JDBC URL

- 将此用户连接至数据库

- 连接至数据库的密码

- 连接至数据库的密码确认

- 密码列字符串

- 预处理语句

- 变换密码语法的类

- 验证级别

##### 连接类型

指定连接至 SQL 数据库的连接类型，可以是 JNDI（Java 命名和目录接口）连接池或 JDBC 驱动程序。这些选项包括：

- 已通过 JNDI 检索连接池

- 非持久 JDBC 连接

JNDI 连接池利用了底层 Web 容器的配置。

##### 连接池 JNDI 名称

如果在“连接类型”中选择了 JNDI，此字段将指定连接池名称。由于 JDBC 验证使用 Web 容器提供的 JNDI 连接池，因此，JNDI 连接池的设置在其他 Web 容器中可能会不一致。有关示例，参见 OpenSSO Administration Guide。

##### 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。

注 – 如果未指定任何验证级别，则在核心验证属性默认验证级别中所指定的值将会存储到 SSO 令牌中。