Создайте пользователя weblogic и назначьте роли из базы данных серверу weblogic.

Привет, у меня есть таблица с именем 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 для всех идентификаторов пользователей, паролей и ролей.

Пожалуйста, предложите мне это.


person YLG    schedule 24.01.2017    source источник


Ответы (1)


Если я правильно понял, вы пытаетесь использовать таблицу базы данных в качестве хранилища пользователей LDAP. Если это понимание правильное, обратите внимание, что при успешной реализации вы сможете войти в консоль weblogic с учетными данными, присутствующими в вашей таблице БД.

Пожалуйста, убедитесь, что порядок ваших провайдеров был изменен таким образом, что SQLAuthentication стоит на первом месте, поскольку приоритет дается сверху вниз. Также посмотрите, какие флаги LDAP были установлены для провайдеров среди обязательных, обязательных и достаточных.

person Praveen Raj Kumar    schedule 24.01.2017