[keycloak-user] MongoDB - Model provider not found

Marek Posolda mposolda at redhat.com
Wed May 21 05:54:46 EDT 2014


Hi Davide,

Right now, mongo model should be fixed and work without issues on KC master.

Marek

On 21.5.2014 00:14, Marek Posolda wrote:
> 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>
>>     > > > >
>>     > > > >
>>     > > > >
>>     > > >
>>     > >
>>     >
>>
>>
>
>
>
> _______________________________________________
> keycloak-user mailing list
> keycloak-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-user

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


More information about the keycloak-user mailing list