2017-01-24 5 views
0

안녕하세요. user_id, passwd 및 user_priv (weblogic 사용자의 역할)가 포함 된 user_data라는 테이블이 있습니다. 내 데이터베이스 user_data를 weblogic 서버와 매핑해야합니다.weblogic 사용자를 생성하고 데이터베이스에서 weblogic 서버로 역할을 할당하십시오.

이 테이블이 포함 된 데이터 소스로 sqlAuthenticator를 사용하여 공급자를 만들려고했습니다.

결과를 얻기 위해 모든 쿼리가 수정되었습니다.

한다고 가정

사용자가 테이블에서 서버를 웹 로직에 도착 :

<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> 

그러나 이것도 작동하지 않았습니다. 모든 사용자 ID, 비밀번호 및 역할에 대해 데이터베이스를 weblogic 서버에 매핑 할 수있는 다른 방법이 있습니까?

제발 제안 해주세요.

답변

0

제대로 이해했다면 LDAP 사용자 저장소로 데이터베이스 테이블을 사용하려고합니다. 이러한 이해가 정확하다면 성공적인 구현시 DB 테이블에있는 자격 증명으로 weblogic 콘솔에 로그인 할 수 있어야합니다.

우선 순위가 위에서 아래로 지정되어 있으므로 SQLAuthentication이 먼저 오도록 공급자 순서가 변경되었는지 확인하십시오. 또한 필수, 필수 및 충분 중에서 제공자에게 LDAP 플래그가 설정되었는지 확인하십시오.