配置 WebLogic 数据库验证

前言

WebLogic默认使用自带的LDAP进行身份存储和验证,在应用整合的时候有可能会用到基于数据库的身份存储和验证,比如使用业务系统的角色表和用户表。这时候就需要通过配置Read-only SQL Authentication provider或者SQL Authentication provider。这两个都能提供基于数据库的身份存储和验证,其中Read-only SQL Authentication provider是只读的,不能在WebLogic里增加,修改用户和组,而后者可以完全操作用户和组的表数据。一般来说如何用户和组信息由应用系统来维护的话建议使用Read-only SQL Authentication provider,否则如果只是单纯的由WebLogic自己维护用户和组信息则使用SQL Authentication provider。

配置使用 Read-only SQL Authentication provider

关键点1:

在realm里,Providers里新加一个Read-only SQL Authentication provider,"Provider Specific"在config.xml里的参考值如下:

      <sec:authentication-provider xsi:type="wls:read-only-sql-authenticatorType">
        <sec:name>DBAuthenticator</sec:name>
        <sec:control-flag>SUFFICIENT</sec:control-flag>
        <wls:data-source-name>rmyyoa12</wls:data-source-name>
        <wls:plaintext-passwords-enabled>false</wls:plaintext-passwords-enabled>
        <wls:sql-get-users-password>SELECT USER_PASS U_PASSWORD FROM HR_USER WHERE EMPLOYEE_NUMBER = ?</wls:sql-get-users-password>
        <wls:sql-user-exists>SELECT EMPLOYEE_NUMBER U_NAME FROM HR_USER WHERE EMPLOYEE_NUMBER = ?</wls:sql-user-exists>
        <wls:sql-list-member-groups>SELECT ROLE_ID G_NAME FROM USER_ROLE_TABLE  WHERE USER_ID = ?</wls:sql-list-member-groups>
        <wls:sql-list-users>SELECT EMPLOYEE_NUMBER U_NAME FROM HR_USER WHERE EMPLOYEE_NUMBER LIKE ?</wls:sql-list-users>
        <wls:sql-get-user-description>SELECT FULL_NAME U_DESCRIPTION FROM HR_USER WHERE EMPLOYEE_NUMBER = ?</wls:sql-get-user-description>
        <wls:sql-list-groups>SELECT ID G_NAME FROM MY_ROLE WHERE ID LIKE ? </wls:sql-list-groups>
        <wls:sql-group-exists>SELECT ID G_NAME FROM MY_ROLE WHERE ID = ?</wls:sql-group-exists>
        <wls:sql-is-member>SELECT USER_ID G_MEMBER FROM USER_ROLE_TABLE WHERE ROLE_ID = ? AND USER_ID = ?</wls:sql-is-member>
        <wls:sql-get-group-description>SELECT ROLE_NAME G_DESCRIPTION FROM MY_ROLE WHERE ID = ?</wls:sql-get-group-description>
      </sec:authentication-provider>

     其中HR_USER是应用的用户表,MY_ROLE 是用户的角色表,USER_ROLE_TABLE是角色用户关系表。

关键点2:

将新建的DBAuthenticator的control-flag设置为SUFFICIENT,将DefaultAuthenticator的control-flag也设置为SUFFICIENT,并将DBAuthenticator的顺序调到最上。

关键点3:

应用的用户密码的加密算法: public static String toMd5Hash(String original) { if (original == null) { return null; } try { byte[] strTemp = original.getBytes(); // 使用MD5创建MessageDigest对象 MessageDigest mdTemp = MessageDigest.getInstance("MD5"); return "{MD5}" + new sun.misc.BASE64Encoder().encode(mdTemp.digest(strTemp)); } catch (Exception e) { return null; } }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值