【问题标题】:Create weblogic user and assign roles from database to weblogic server创建 weblogic 用户并将角色从数据库分配到 weblogic 服务器
【发布时间】:2017-06-08 23:23:57
【问题描述】:

您好,我有一个名为 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 server 中删除数据,它会从 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、密码和角色。

请在这方面给我建议。

【问题讨论】:

    标签: weblogic roles sql-authentication


    【解决方案1】:

    如果我理解正确,您正在尝试使用数据库表作为您的 LDAP 用户存储。如果这种理解是正确的,那么请注意,在成功实施后,您应该能够使用 db 表中存在的凭据登录到 weblogic 控制台。

    请确保您的提供程序顺序已更改为 SQLAuthentication 优先顺序,因为优先级是从上到下给出的。还可以查看在必需、必要和充分之间为提供者设置了哪些 LDAP 标志。

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 2013-08-27
      • 2012-07-31
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      相关资源
      最近更新 更多