2017-01-24 18 views
0

こんにちは、user_id、passwd、およびuser_priv(weblogicユーザーの役割)を含むuser_dataという名前のテーブルがあります。私はデータベースuser_dataをweblogic serverにマップする必要があります。weblogicユーザーを作成し、データベースから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> 

私はsucessfullyそれを保存し、再度、アプリケーションサーバーを再起動します。

サーバーを再起動する前に。 user_dataテーブルにデータを追加して、テーブルからフェッチしているかどうかを確認します。

データを挿入してサーバを再起動しましたが、weblogicサーバのデータを見ることができませんでした。

しかし、weblogicサーバーからデータを削除しようとすると、user_dataからデータが削除されますが、その逆は機能しません。

もう1つのアプローチは、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> 

しかし、これも機能しませんでした。私のデータベースをすべてのユーザーID、パスワード、役割のweblogicサーバーにマップすることができる他の方法はありますか?

私にこれを提案してください。

答えて

0

正しく理解していれば、LDAPユーザーストアとしてデータベーステーブルを使用しようとしています。この理解が正しければ、実装が成功すると、dbテーブルにある資格情報とともにweblogicコンソールにログインできるようになることに注意してください。

優先順位が上から下に向かって順番にSQLAuthenticationが来るようにプロバイダの注文が変更されていることを確認してください。また、必要な、必要な、そして十分なプロバイダの中で、どのようなLDAPフラグが設定されているかも参照してください。

関連する問題