配置 JAAS 以进行数据库认证
可以使用 Java™ 认证和授权服务 (JAAS) 进行数据库认证。
有关此任务
您可以使用 JAAS 登录上下文条目来指定用于设置用于向数据库认证的用户名和密码的定制登录模块。
过程
- 在 server.xml 文件中添加
appSecurity-2.0,jdbc-4.0和jca-1.6功能部件。 还可添加appSecurity-2.0、jdbc-4.1和jca-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 功能部件。 - 使用要使用的登录模块在 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> - 使用您在步骤中配置的
jaasLoginContextEntry元素的标识来配置dataSourceelementjaasLoginContextEntryRef属性,如以下示例中所示。<dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" jaasLoginContextEntryRef="myJAASLoginEntry" .../>但是,仅当使用指定了
res-auth值Container的res-refJNDI 引用在 EAR application.xml 文件或 WAR web.xml 文件中标识数据源时,配置才会使用此jaasLoginContextEntryRef值。 否则,将忽略jaasLoginContextEntryRef值。以下示例演示通过在sever.xml文件中定义jaasLoginContextEntryRef值来指定定制登录模块时所需的 application.xml 或 web.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> - 作为步骤 3 的替代方法,您可以在应用程序的部署描述符 ibm-web-bnd.xml 文件中配置
custom-login-configuration元素。 名称属性必须与 server.xml 文件中定义的jaasLoginContextEntry的id属性匹配。 例如:<resource-ref name="jdbc/ds1ref" binding-name="jdbc/ds1"> <custom-login-configuration name="myJAASLoginEntry"> <property name="property1" value="value1"/> </custom-login-configuration> </resource-ref>