[keycloak-user] MongoDB - Model provider not found

Marek Posolda mposolda at redhat.com
Tue May 20 18:14:58 EDT 2014


i've looked at this one and have it fixed in branch 
https://github.com/mposolda/keycloak/ . Feel free to give it try if you 
are impatient, but still it seems that there are some more issues with 
mongo model (few integration tests are still failing). I will send PR to 
master tomorrow morning with mongo model fully working.

Marek

On 20.5.2014 22:18, Davide Ungari wrote:
> Following your instruction he application startup is fine.
> Now after login I have another exception that involves Mongo :
>
> 22:15:21,616 ERROR [io.undertow.request] (default task-3) UT005023: 
> Exception handling request to 
> /auth/realms/keycloak-admin/tokens/access/codes: 
> org.jboss.resteasy.spi.UnhandledException: 
> java.lang.IllegalArgumentException: Can't found converter for type 
> class 
> org.keycloak.models.mongo.keycloak.entities.MongoClientUserSessionAssociationEntity 
> in registered appObjectMappers
> at 
> org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:76) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:212) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:149) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:372) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
> [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> org.keycloak.services.filters.ClientConnectionFilter.doFilter(ClientConnectionFilter.java:41) 
> [keycloak-services-1.0-beta-1-SNAPSHOT.jar:]
> at 
> io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:41) 
> [keycloak-services-1.0-beta-1-SNAPSHOT.jar:]
> at 
> io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
> at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
> at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) 
> [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.server.Connectors.executeRootHandler(Connectors.java:168) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:687) 
> [undertow-core-1.0.0.Final.jar:1.0.0.Final]
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
> [rt.jar:1.7.0_51]
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
> [rt.jar:1.7.0_51]
> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
> Caused by: java.lang.IllegalArgumentException: Can't found converter 
> for type class 
> org.keycloak.models.mongo.keycloak.entities.MongoClientUserSessionAssociationEntity 
> in registered appObjectMappers
> at 
> org.keycloak.models.mongo.api.types.MapperRegistry.convertApplicationObjectToDBObject(MapperRegistry.java:80) 
> [keycloak-model-mongo-1.0-beta-1-SNAPSHOT.jar:]
> at 
> org.keycloak.models.mongo.impl.MongoStoreImpl.insertEntity(MongoStoreImpl.java:171) 
> [keycloak-model-mongo-1.0-beta-1-SNAPSHOT.jar:]
> at 
> org.keycloak.models.mongo.keycloak.adapters.UserSessionAdapter.associateClient(UserSessionAdapter.java:102) 
> [keycloak-model-mongo-1.0-beta-1-SNAPSHOT.jar:]
> at 
> org.keycloak.services.resources.TokenService.accessCodeToToken(TokenService.java:656) 
> [keycloak-services-1.0-beta-1-SNAPSHOT.jar:]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> [rt.jar:1.7.0_51]
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
> [rt.jar:1.7.0_51]
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> [rt.jar:1.7.0_51]
> at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_51]
> at 
> org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:280) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:234) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:140) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:103) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> at 
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) 
> [resteasy-jaxrs-3.0.6.Final.jar:]
> ... 37 more
>
>
> --
> Davide
>
>
> On Tue, May 20, 2014 at 11:52 AM, Stian Thorgersen <stian at redhat.com 
> <mailto:stian at redhat.com>> wrote:
>
>     You need to edit:
>
>     standalone/deployments/auth-server.war/WEB-INF/classes/META-INF/keycloak-server.json
>
>     For mongo replace "model" and "audit" with:
>
>         "audit": {
>             "provider": "mongo",
>             "mongo": {
>                 "host": "<hostname>",
>                 "port": <port>,
>                 "user": <user>,
>                 "password": <password>
>             }
>         },
>
>         "model": {
>             "provider": "mongo"
>             "mongo": {
>                 "host": "<hostname>",
>                 "port": <port>,
>                 "user": <user>,
>                 "password": <password>
>             }
>         }
>
>     "host" and "port" are optional if not specified "localhost" and
>     27017 will be used. "user" and "password" are optional as well,
>     these are only required if you've enabled authentication for your
>     mongo db. You can also change the db name by adding "db".
>
>     ----- Original Message -----
>     > From: "Davide Ungari" <ungarida at gmail.com
>     <mailto:ungarida at gmail.com>>
>     > To: "Stian Thorgersen" <stian at redhat.com <mailto:stian at redhat.com>>
>     > Cc: "Marek Posolda" <mposolda at redhat.com
>     <mailto:mposolda at redhat.com>>, keycloak-user at lists.jboss.org
>     <mailto:keycloak-user at lists.jboss.org>
>     > Sent: Tuesday, 20 May, 2014 10:38:41 AM
>     > Subject: Re: [keycloak-user] MongoDB - Model provider not found
>     >
>     > Hi Stian,
>     > I'm aligned to master.
>     > Could you show me the class I must read to understand how to
>     configure it?
>     >
>     > --
>     > Davide
>     >
>     >
>     > On Tue, May 20, 2014 at 10:45 AM, Stian Thorgersen
>     <stian at redhat.com <mailto:stian at redhat.com>> wrote:
>     >
>     > > In master this has recently changed and is now configured in a
>     config file
>     > > instead of through system properties. The documentation will
>     be updated in
>     > > due time.
>     > >
>     > > ----- Original Message -----
>     > > > From: "Davide Ungari" <ungarida at gmail.com
>     <mailto:ungarida at gmail.com>>
>     > > > To: "Marek Posolda" <mposolda at redhat.com
>     <mailto:mposolda at redhat.com>>
>     > > > Cc: "Stian Thorgersen" <stian at redhat.com
>     <mailto:stian at redhat.com>>, keycloak-user at lists.jboss.org
>     <mailto:keycloak-user at lists.jboss.org>
>     > > > Sent: Tuesday, 20 May, 2014 8:17:52 AM
>     > > > Subject: Re: [keycloak-user] MongoDB - Model provider not found
>     > > >
>     > > > Hi Marek,
>     > > > thanks for your answer.
>     > > >
>     > > > You could add a paragraph in documentation page
>     > > >
>     > >
>     http://docs.jboss.org/keycloak/docs/1.0-alpha-3/userguide/html_single/index.html#d4e167
>     > > > about
>     > > > this.
>     > > >
>     > > >
>     > > > --
>     > > > Davide
>     > > >
>     > > >
>     > > > On Mon, May 19, 2014 at 10:38 PM, Marek Posolda
>     <mposolda at redhat.com <mailto:mposolda at redhat.com>>
>     > > wrote:
>     > > >
>     > > > >  Hi,
>     > > > >
>     > > > > I guess you removed persistence.xml from auth-server.war
>     right? In
>     > > newest
>     > > > > version, persistence.xml contains configuration of
>     model-api, but also
>     > > for
>     > > > > audit-api . Default implementation of audit-api is based
>     on JPA and
>     > > needs
>     > > > > persistence.xml .
>     > > > >
>     > > > > Thing is that default implementation of audit-api is
>     always based on
>     > > JPA
>     > > > > even if you changed your model implementation to "mongo".
>     My opinion
>     > > is,
>     > > > > that we should change this behaviour. So default
>     implementation of
>     > > > > audit-api will be same like the chosen implementation of
>     model-api. So
>     > > if
>     > > > > someone (like you) changed the implementation of model to
>     be based on
>     > > > > mongo, the audit-api will automatically use mongo as well.
>     I will
>     > > discuss
>     > > > > with guys about this tomorrow.
>     > > > >
>     > > > > Until this is done, I think that easiest solution for you
>     is to
>     > > manually
>     > > > > switch audit-api to use mongo as well. So in addition to
>     property
>     > > > > "-Dkeycloak.model=mongo" you also need to add property
>     > > > > "-Dkeycloak.audit=mongo" .
>     > > > >
>     > > > > Marek
>     > > > >
>     > > > >
>     > > > > On 16.5.2014 22:20, Davide Ungari wrote:
>     > > > >
>     > > > > Hi Stian,
>     > > > > I think the problem was that I was running "mvn package"
>     inside
>     > > > > /keycloak/distribuition instead it works if your run it
>     from root
>     > > > > directory.
>     > > > >
>     > > > >  I have all the jars, model-mongo included, but the
>     application fails
>     > > at
>     > > > > startup with error message "No Persistence provider for
>     EntityManager
>     > > named
>     > > > > jpa-keycloak-audit-store\". What am I doing wrong this time?
>     > > > >
>     > > > >  If you need I'm free to test the import process as you do it.
>     > > > >
>     > > > >  Thanks.
>     > > > >
>     > > > >  --
>     > > > > Davide
>     > > > >
>     > > > >
>     > > > > On Thu, May 15, 2014 at 10:31 AM, Stian Thorgersen
>     <stian at redhat.com <mailto:stian at redhat.com>
>     > > >wrote:
>     > > > >
>     > > > >> I'm not sure why the mongo model has been removed from
>     the WAR, I'll
>     > > look
>     > > > >> into that.
>     > > > >> "jpa-keycloak-identity-store"
>     > > > >>
>     > > > >> We don't yet have support for upgrading the database when
>     upgrading
>     > > > >> Keycloak. This will be added soon. The plan is to provide
>     a mechanism
>     > > to
>     > > > >> export the database to a json file, and after installing
>     a new
>     > > version of
>     > > > >> Keycloak you import this json file again. We'll make this
>     import
>     > > backwards
>     > > > >> compatible so you can import a json file from any older
>     versions of
>     > > > >> Keycloak.
>     > > > >>
>     > > > >> ----- Original Message -----
>     > > > >> > From: "Davide Ungari" <ungarida at gmail.com
>     <mailto:ungarida at gmail.com>>
>     > > > >> > To: keycloak-user at lists.jboss.org
>     <mailto:keycloak-user at lists.jboss.org>
>     > > > >> > Sent: Monday, 12 May, 2014 7:13:53 PM
>     > > > >> > Subject: Re: [keycloak-user] MongoDB - Model provider
>     not found
>     > > > >> >
>     > > > >> > I found out that:
>     > > > >> > 1- the command "mvn package" does not include mongo
>     module and
>     > > driver
>     > > > >> > 2- there is a regression on data model, updating source
>     of keycloak
>     > > I
>     > > > >> must
>     > > > >> > drop database in order to see the admin console works again
>     > > > >> > --
>     > > > >> > Davide
>     > > > >> >
>     > > > >>  > _______________________________________________
>     > > > >> > keycloak-user mailing list
>     > > > >> > keycloak-user at lists.jboss.org
>     <mailto:keycloak-user at lists.jboss.org>
>     > > > >> > https://lists.jboss.org/mailman/listinfo/keycloak-user
>     > > > >>
>     > > > >
>     > > > >
>     > > > >
>     > > > > _______________________________________________
>     > > > > keycloak-user mailing
>     > > > > listkeycloak-user at lists.jboss.orghttps://
>     > > lists.jboss.org/mailman/listinfo/keycloak-user
>     <http://lists.jboss.org/mailman/listinfo/keycloak-user>
>     > > > >
>     > > > >
>     > > > >
>     > > >
>     > >
>     >
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-user/attachments/20140521/a26de59f/attachment-0001.html 


More information about the keycloak-user mailing list