I followed the solution below to try to integrate my custom Oracle database.
Now I am able to login to Admin Console using my custom admin account & password from by my custom table, and those custom users from my custom table can be shown on the User Summary page.
However, when I try to login the Client (e.g. Spark), login is failed.
In the Debug log, there is an exception which said “No stored key for user”:
2016.09.26 09:32:03 org.jivesoftware.openfire.net.SASLAuthentication - SASLAuthentication: SaslException
javax.security.sasl.SaslException: No stored key for user ‘imuser1’
at org.jivesoftware.openfire.sasl.ScramSha1SaslServer.generateServerFinalMessage(S cramSha1SaslServer.java:194)
at org.jivesoftware.openfire.sasl.ScramSha1SaslServer.evaluateResponse(ScramSha1Sa slServer.java:117)
at org.jivesoftware.openfire.net.SASLAuthentication.handle(SASLAuthentication.java :357)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:186)
at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:181)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceive d(DefaultIoFilterChain.java:690)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(D efaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilt erChain.java:47)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceiv ed(DefaultIoFilterChain.java:765)
at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapte r.java:109)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(D efaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilt erChain.java:47)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceiv ed(DefaultIoFilterChain.java:765)
at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flus h(ProtocolCodecFilter.java:407)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:236)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(D efaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilt erChain.java:47)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceiv ed(DefaultIoFilterChain.java:765)
at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(Ordere dThreadPoolExecutor.java:769)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(Order edThreadPoolExecutor.java:761)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThr eadPoolExecutor.java:703)
at java.lang.Thread.run(Thread.java:745)
There is also an exception shown in Warn log:
2016.09.26 09:32:03 org.jivesoftware.openfire.sasl.ScramSha1SaslServer - Exception in SCRAM.getSalt():
java.lang.UnsupportedOperationException
at org.jivesoftware.openfire.auth.JDBCAuthProvider.setPassword(JDBCAuthProvider.ja va:341)
at org.jivesoftware.openfire.auth.AuthFactory.setPassword(AuthFactory.java:197)
at org.jivesoftware.openfire.sasl.ScramSha1SaslServer.getSalt(ScramSha1SaslServer. java:327)
at org.jivesoftware.openfire.sasl.ScramSha1SaslServer.generateServerFirstMessage(S cramSha1SaslServer.java:161)
at org.jivesoftware.openfire.sasl.ScramSha1SaslServer.evaluateResponse(ScramSha1Sa slServer.java:113)
at org.jivesoftware.openfire.net.SASLAuthentication.handle(SASLAuthentication.java :300)
at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:183)
at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:181)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceive d(DefaultIoFilterChain.java:690)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(D efaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilt erChain.java:47)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceiv ed(DefaultIoFilterChain.java:765)
at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapte r.java:109)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(D efaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilt erChain.java:47)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceiv ed(DefaultIoFilterChain.java:765)
at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flus h(ProtocolCodecFilter.java:407)
at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:236)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(D efaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilt erChain.java:47)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceiv ed(DefaultIoFilterChain.java:765)
at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(Ordere dThreadPoolExecutor.java:769)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(Order edThreadPoolExecutor.java:761)
at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThr eadPoolExecutor.java:703)
at java.lang.Thread.run(Thread.java:745)
My custom user table is called PS_FT_IM_ACCOUNT which only contains 4 fields: IM_USERNAME, PASSWORD, IM_NAME, EMAIL
I just used the the plain as the password type in the jdbcAuthProvider properties.
jdbcAuthProvider.passwordSQL
SELECT PASSWORD FROM PS_FT_IM_ACCOUNT WHERE IM_USERNAME=?
jdbcAuthProvider.passwordType
plain
Does anyone know what the problem is ?
Please help, Thanks!!!