配置 JAAS 以进行数据库认证

可以使用 Java™ 认证和授权服务 (JAAS) 进行数据库认证。

有关此任务

您可以使用 JAAS 登录上下文条目来指定用于设置用于向数据库认证的用户名和密码的定制登录模块。

过程

  1. server.xml 文件中添加 appSecurity-2.0jdbc-4.0jca-1.6 功能部件。 还可添加 appSecurity-2.0jdbc-4.1jca-1.7。 例如:
    
    <featureManager>
       <feature>appSecurity-2.0</feature>
       <feature>jdbc-4.0</feature>
       <feature>jca-1.6</feature>
    </featureManager>
    已稳定的功能部件: jca-1.6 功能部件已稳定。 您可继续使用 jca-1.6 功能部件。 但是,请考虑使用较新版本的 JCA 功能部件。
  2. 使用要使用的登录模块在 server.xml 文件中配置 jaasLoginContextEntry 元素。 例如:
    
    <jaasLoginContextEntry id="myJAASLoginEntry" name="myJAASLoginEntry" loginModuleRef="myLoginModule" />
    	<jaasLoginModule id="myLoginModule" className="my.package.MyLoginModule" controlFlag="REQUIRED" libraryRef="customLoginLib"/>
    
    	<library id="customLoginLib">
    	  <fileset dir="${server.config.dir}" includes="MyLoginModule.jar"/>
            </library>
  3. 使用您在步骤中配置的 jaasLoginContextEntry 元素的标识来配置 dataSource element jaasLoginContextEntryRef 属性,如以下示例中所示。
    
    <dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" 
                jaasLoginContextEntryRef="myJAASLoginEntry" .../>

    但是,仅当使用指定了 res-authContainerres-ref JNDI 引用在 EAR application.xml 文件或 WAR web.xml 文件中标识数据源时,配置才会使用此 jaasLoginContextEntryRef 值。 否则,将忽略 jaasLoginContextEntryRef 值。

    以下示例演示通过在 sever.xml 文件中定义 jaasLoginContextEntryRef 值来指定定制登录模块时所需的 application.xmlweb.xml 配置。
    <resource-ref>
    	 <res-ref-name>java:app/jdbc/ds1</res-ref-name>
    	 <res-type>javax.sql.DataSource</res-type>
    	 <res-auth>Container</res-auth>
    </resource-ref>
    
  4. 作为步骤 3 的替代方法,您可以在应用程序的部署描述符 ibm-web-bnd.xml 文件中配置 custom-login-configuration 元素。 名称属性必须与 server.xml 文件中定义的 jaasLoginContextEntryid 属性匹配。 例如:
    
    <resource-ref name="jdbc/ds1ref" binding-name="jdbc/ds1">
       <custom-login-configuration name="myJAASLoginEntry">
         <property name="property1" value="value1"/>
       </custom-login-configuration>
    </resource-ref>