Hello,
I'm facing the same problem - could you point me to the commit that fixed
this in master?
Cheers,
Thomas
2016-11-01 15:17 GMT+01:00 Bill Burke <bburke(a)redhat.com>:
Its an admin console issue. I think I fixed it in master, but I
'll
double check.
On 11/1/16 3:35 AM, Niko Köbler wrote:
> Hi,
>
> I just tested and investigated a bit more…
>
> When saving a UserStorageProvider, the „priority“ value is sent within
the config object:
> {
> "id": "320db9e2-6c40-4eb5-868e-95717be36fce",
> "name": "my-user-storage",
> "providerId": "my-user-storage",
> "providerType": "org.keycloak.storage.UserStorageProvider",
> "parentId": "demo",
> "config": {
> "baseUrl": [
> "http://localhost:9000"
> ],
> "basicAuthUsername": [
> "admin"
> ],
> "basicAuthPassword": [
> "secret"
> ],
> "priority": {
> "0": "1"
> }
> }
> }
>
> In contrast to a UserFederationProvider, where the „priority“ value is
sent as part of the root object, not in the nested config object.
>
> When adding a „priority“ config property in my UserStorageProvider, it
works, but it looks strange in the Admin console, as there are now 2
priority fields… but it works.
>
> Additionally, this error with the priority value leads to some JS error
messages in the browser console when working with the Admin console. These
are also gone when using an own „priority“ config property.
>
> I’d appreciate any feedback on this, if this is an error or whatever…
> Thanks!
>
> Regards,
> - Niko
>
>
>
>> Am 31.10.2016 um 16:15 schrieb Niko Köbler <niko(a)n-k.de>:
>>
>> Hi,
>>
>> I just implemented the User Storage SPI as replacement for our User
Federation SPI.
>>
>> Creating the User-Storage Provider works w/o errors, but not Priority
value will be saved.
>> When updating the Provider with a value for Priority, it will fail with
an exception (see below), updating the Provider without setting a value for
Priority works.
>>
>> Do I have to implement/configure something special to get it work?
>> I based my implementation on the user-storage-jpa-example, provided
with Keycloak.
>> Or is it a general error? Should a create a Jira issue for it?
>>
>>
>> The exception/stack trace:
>> 16:03:14,392 ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default
task-31) RESTEASY002005: Failed executing PUT /admin/realms/connect/
components/320db9e2-6c40-4eb5-868e-95717be36fce: org.jboss.resteasy.spi.ReaderException:
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize
instance of java.util.ArrayList out of START_OBJECT token
>> at [Source: io.undertow.servlet.spec.ServletInputStreamImpl@1a486a1f;
line: 1, column: 387] (through reference chain:
org.keycloak.representations.idm.ComponentRepresentation["
config"]->org.keycloak.common.util.MultivaluedHashMap["priority"])
>> at org.jboss.resteasy.core.MessageBodyParameterInjector.
inject(MessageBodyParameterInjector.java:184)
>> at org.jboss.resteasy.core.MethodInjectorImpl.
injectArguments(MethodInjectorImpl.java:91)
>> at org.jboss.resteasy.core.MethodInjectorImpl.invoke(
MethodInjectorImpl.java:114)
>> at org.jboss.resteasy.core.ResourceMethodInvoker.
invokeOnTarget(ResourceMethodInvoker.java:295)
>> at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(
ResourceMethodInvoker.java:249)
>> at org.jboss.resteasy.core.ResourceLocatorInvoker.
invokeOnTargetObject(ResourceLocatorInvoker.java:138)
>> at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(
ResourceLocatorInvoker.java:107)
>> at org.jboss.resteasy.core.ResourceLocatorInvoker.
invokeOnTargetObject(ResourceLocatorInvoker.java:133)
>> at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(
ResourceLocatorInvoker.java:107)
>> at org.jboss.resteasy.core.ResourceLocatorInvoker.
invokeOnTargetObject(ResourceLocatorInvoker.java:133)
>> at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(
ResourceLocatorInvoker.java:101)
>> at org.jboss.resteasy.core.SynchronousDispatcher.invoke(
SynchronousDispatcher.java:395)
>> at org.jboss.resteasy.core.SynchronousDispatcher.invoke(
SynchronousDispatcher.java:202)
>> at org.jboss.resteasy.plugins.server.servlet.
ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
>> at org.jboss.resteasy.plugins.server.servlet.
HttpServletDispatcher.service(HttpServletDispatcher.java:56)
>> at org.jboss.resteasy.plugins.server.servlet.
HttpServletDispatcher.service(HttpServletDispatcher.java:51)
>> at javax.servlet.http.HttpServlet.service(
HttpServlet.java:790)
>> at io.undertow.servlet.handlers.
ServletHandler.handleRequest(ServletHandler.java:85)
>> at io.undertow.servlet.handlers.
FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
>> at org.keycloak.services.filters.
KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.
java:90)
>> at io.undertow.servlet.core.ManagedFilter.doFilter(
ManagedFilter.java:60)
>> at io.undertow.servlet.handlers.
FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
>> at io.undertow.servlet.handlers.
FilterHandler.handleRequest(FilterHandler.java:84)
>> at io.undertow.servlet.handlers.security.
ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.
java:62)
>> at io.undertow.servlet.handlers.ServletDispatchingHandler.
handleRequest(ServletDispatchingHandler.java:36)
>> at org.wildfly.extension.undertow.security.
SecurityContextAssociationHandler.handleRequest(
SecurityContextAssociationHandler.java:78)
>> at io.undertow.server.handlers.PredicateHandler.
handleRequest(PredicateHandler.java:43)
>> at io.undertow.servlet.handlers.security.
SSLInformationAssociationHandler.handleRequest(
SSLInformationAssociationHandler.java:131)
>> at io.undertow.servlet.handlers.security.
ServletAuthenticationCallHandler.handleRequest(
ServletAuthenticationCallHandler.java:57)
>> at io.undertow.server.handlers.PredicateHandler.
handleRequest(PredicateHandler.java:43)
>> at io.undertow.security.handlers.
AbstractConfidentialityHandler.handleRequest(
AbstractConfidentialityHandler.java:46)
>> at io.undertow.servlet.handlers.security.
ServletConfidentialityConstraintHandler.handleRequest(
ServletConfidentialityConstraintHandler.java:64)
>> at io.undertow.security.handlers.
AuthenticationMechanismsHandler.handleRequest(
AuthenticationMechanismsHandler.java:60)
>> at io.undertow.servlet.handlers.security.
CachedAuthenticatedSessionHandler.handleRequest(
CachedAuthenticatedSessionHandler.java:77)
>> at io.undertow.security.handlers.
NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.
java:50)
>> at io.undertow.security.handlers.
AbstractSecurityContextAssociationHandler.handleRequest(
AbstractSecurityContextAssociationHandler.java:43)
>> at io.undertow.server.handlers.PredicateHandler.
handleRequest(PredicateHandler.java:43)
>> at org.wildfly.extension.undertow.security.jacc.
JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
>> at io.undertow.server.handlers.PredicateHandler.
handleRequest(PredicateHandler.java:43)
>> at io.undertow.server.handlers.PredicateHandler.
handleRequest(PredicateHandler.java:43)
>> at io.undertow.servlet.handlers.ServletInitialHandler.
handleFirstRequest(ServletInitialHandler.java:284)
>> at io.undertow.servlet.handlers.ServletInitialHandler.
dispatchRequest(ServletInitialHandler.java:263)
>> at io.undertow.servlet.handlers.
ServletInitialHandler.access$000(ServletInitialHandler.java:81)
>> at io.undertow.servlet.handlers.ServletInitialHandler$1.
handleRequest(ServletInitialHandler.java:174)
>> at io.undertow.server.Connectors.
executeRootHandler(Connectors.java:202)
>> at io.undertow.server.HttpServerExchange$1.run(
HttpServerExchange.java:793)
>> at java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1142)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:617)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can
not deserialize instance of java.util.ArrayList out of START_OBJECT token
>> at [Source: io.undertow.servlet.spec.ServletInputStreamImpl@1a486a1f;
line: 1, column: 387] (through reference chain:
org.keycloak.representations.idm.ComponentRepresentation["
config"]->org.keycloak.common.util.MultivaluedHashMap["priority"])
>> at com.fasterxml.jackson.databind.JsonMappingException.
from(JsonMappingException.java:148)
>> at com.fasterxml.jackson.databind.DeserializationContext.
mappingException(DeserializationContext.java:835)
>> at com.fasterxml.jackson.databind.DeserializationContext.
mappingException(DeserializationContext.java:831)
>> at com.fasterxml.jackson.databind.deser.std.
StringCollectionDeserializer.handleNonArray(StringCollectionDeserializer.
java:240)
>> at com.fasterxml.jackson.databind.deser.std.
StringCollectionDeserializer.deserialize(StringCollectionDeserializer.
java:171)
>> at com.fasterxml.jackson.databind.deser.std.
StringCollectionDeserializer.deserialize(StringCollectionDeserializer.
java:161)
>> at com.fasterxml.jackson.databind.deser.std.
StringCollectionDeserializer.deserialize(StringCollectionDeserializer.
java:19)
>> at com.fasterxml.jackson.databind.deser.std.
MapDeserializer._readAndBindStringMap(MapDeserializer.java:485)
>> at com.fasterxml.jackson.databind.deser.std.
MapDeserializer.deserialize(MapDeserializer.java:342)
>> at com.fasterxml.jackson.databind.deser.std.
MapDeserializer.deserialize(MapDeserializer.java:26)
>> at com.fasterxml.jackson.databind.deser.
SettableBeanProperty.deserialize(SettableBeanProperty.java:523)
>> at com.fasterxml.jackson.databind.deser.impl.
MethodProperty.deserializeAndSet(MethodProperty.java:95)
>> at com.fasterxml.jackson.databind.deser.impl.
BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285)
>> at com.fasterxml.jackson.databind.deser.BeanDeserializer.
vanillaDeserialize(BeanDeserializer.java:248)
>> at com.fasterxml.jackson.databind.deser.
BeanDeserializer.deserialize(BeanDeserializer.java:136)
>> at com.fasterxml.jackson.databind.ObjectReader._bind(
ObjectReader.java:1410)
>> at com.fasterxml.jackson.databind.ObjectReader.
readValue(ObjectReader.java:860)
>> at org.jboss.resteasy.plugins.providers.jackson.
ResteasyJackson2Provider.readFrom(ResteasyJackson2Provider.java:121)
>> at org.jboss.resteasy.core.interception.
AbstractReaderInterceptorContext.readFrom(AbstractReaderInterceptorConte
xt.java:61)
>> at org.jboss.resteasy.core.interception.
ServerReaderInterceptorContext.readFrom(ServerReaderInterceptorContext
.java:60)
>> at org.jboss.resteasy.core.interception.
AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorConte
xt.java:53)
>> at org.jboss.resteasy.security.doseta.
DigitalVerificationInterceptor.aroundReadFrom(
DigitalVerificationInterceptor.java:34)
>> at org.jboss.resteasy.core.interception.
AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorConte
xt.java:55)
>> at org.jboss.resteasy.plugins.interceptors.encoding.
GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59)
>> at org.jboss.resteasy.core.interception.
AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorConte
xt.java:55)
>> at org.jboss.resteasy.core.MessageBodyParameterInjector.
inject(MessageBodyParameterInjector.java:151)
>> ... 48 more
>>
>>
>> Regards,
>> - Niko
>>
>>
>> _______________________________________________
>> keycloak-user mailing list
>> keycloak-user(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/keycloak-user
>
> _______________________________________________
> keycloak-user mailing list
> keycloak-user(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/keycloak-user
_______________________________________________
keycloak-user mailing list
keycloak-user(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/keycloak-user