您好我有一个名为user_data的表,其中包含user_id,passwd和user_priv(weblogic用户的角色)。我需要将我的数据库user_data映射到weblogic服务器。
我尝试使用包含此表的数据源创建带有sqlAuthenticator的提供程序。
我修改了所有查询以实现结果。
假设从桌面获取用户到weblogic服务器:
<wls:sql-get-users-password>SELECT PASSWD FROM USER_DATA where user_id=?</wls:sql-get-users-password>
<wls:sql-user-exists>SELECT USER_ID FROM USER_DATA whre user_id=?</wls:sql-user-exists>
<wls:sql-list-users>SELECT USER_ID FROM USER_DATA whre user_id=?</wls:sql-list-users>
我将成功保存并再次重新启动应用程序服务器。
重新启动服务器之前。我将在user_data表中添加数据,以检查它是否从表中获取天气。
我已插入数据并重新启动服务器,但无法在weblogic服务器中查看数据。
但如果我尝试从weblogic服务器删除数据,它将从user_data中删除数据,反之亦然。
我尝试的另一种方法是创建readSqlAuthenticator以使其只能读取。它只有3个如上所述的陈述。
但它会抛出
的异常 java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
>
<24 Jan, 2017 1:48:03 PM IST> <Error> <Security> <BEA-000000> <[Security:090759]A SQLException occurred while retrieving password information
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
>
<24 Jan, 2017 1:48:03 PM IST> <Error> <Security> <BEA-000000> <[Security:090759]A SQLException occurred while retrieving password information
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
>
<24 Jan, 2017 1:48:03 PM IST> <Error> <Security> <BEA-000000> <[Security:090759]A SQLException occurred while retrieving password information
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16268)
at oracle.jdbc.driver.OraclePreparedStatement.setFormOfUseInternal(OraclePreparedStatement.java:16238)
at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:7895)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:314)
at weblogic.jdbc.wrapper.PreparedStatement.setString(PreparedStatement.java:914)
Truncated. see log file for complete stacktrace
在启动应用程序服务器并单击用户和组时,我将得到以下异常
weblogic. security.providers.authentication.DBMSSQLAuthenticatorDelegateException: [Security:090279]Error listing users *
为此,我得到了删除过滤器的建议,例如:
<wls:sql-get-users-password>SELECT PASSWD FROM USER_DATA</wls:sql-get-users-password>
<wls:sql-user-exists>SELECT USER_ID FROM USER_DATA</wls:sql-user-exists>
<wls:sql-list-users>SELECT USER_ID FROM USER_DATA</wls:sql-list-users>
但这也没有奏效。是否有任何其他方法可以将我的数据库映射到weblogic服务器以获取所有用户ID,密码和角色。
请在此建议我。
答案 0 :(得分:0)
如果我理解正确,您正在尝试使用数据库表作为LDAP用户存储。如果这种理解是正确的,那么请注意,成功实施后,您应该能够使用db表中的凭据登录weblogic控制台。
请确保您的提供商订单已按照SQLAuthentication优先顺序进行更改,因为优先权是从上到下给出的。另请参阅在必需,必需和足够的情况下为提供程序设置了哪些LDAP标志。