2017-09-26 78 views
1

我试图显示一个userEmail()或显示关于用户在我们的领域的一般信息的所有信息。显示用户电子邮件使用keycloak管理客户端不工作(无法识别的PropertyException)

我试图调用此方法: -

@Test 
    public void displayUser(){ 

     UsersResource users=kc.realm("SpringBoot").users(); 
     UserResource user=users.get("b3479699-430b-4cd3-be96-d26db584d207"); //Succeeds, we have the user 
     UserRepresentation ur=user.toRepresentation(); 
     System.out.println(ur.getEmail()); 


    } 

但是失败了,给我这个错误: - |

javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "notBefore" (class org.keycloak.representations.idm.UserRepresentation), not marked as ignorable (25 known properties: "disableableCredentialTypes", "enabled", "emailVerified", "origin", "self", "applicationRoles", "createdTimestamp", "clientRoles", "groups", "username", "totp", "id", "email", "federationLink", "serviceAccountClientId", "lastName", "clientConsents", "socialLinks", "realmRoles", "attributes", "firstName", "credentials", "requiredActions", "federatedIdentities", "access"]) 
at [Source: [email protected]; line: 1, column: 248] (through reference chain: org.keycloak.representations.idm.UserRepresentation["notBefore"]) 
     at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62) 
     at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834) 
     at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093) 
     at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1489) 
     at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1467) 
     at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282) 
     at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) 
     at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1583) 
     at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:964) 
     at org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider.readFrom(ResteasyJackson2Provider.java:127) 
     at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.readFrom(AbstractReaderInterceptorContext.java:61) 
     at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) 
     at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59) 
     at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:55) 
     at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:251) 
     at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:181) 
     at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:213) 
     at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:105) 
     at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:60) 
     at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:104) 
     at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) 
     at com.sun.proxy.$Proxy31.toRepresentation(Unknown Source) 
     at com.example.keycloakaccess2.KeycloakAccess2ApplicationTests.displayUser(KeycloakAccess2ApplicationTests.java:134) 

我不知道是否有正确的方式来显示用户的信息,甚至显示我们在我们的领域的用户!

我感谢您的帮助。

+0

检查https://stackoverflow.com/questions/37786756/keycloak-error-unrecognized-field-access-token –

+0

我看到它,我已经使用杰克逊提供商2. 那解决了我的第一个问题,但UserRepresentation每次尝试使用它都会遇到问题,我得到无法识别的域。 虽然RoleRepresentation运作良好! – Ziko

+1

你使用哪个版本的Keycloak?你确定你正在使用服务器和管理客户端类的相同版本吗? –

回答

1

为了让它更加明显,我重复了评论中发现的Sébastien的Blanc答案。

的keycloak adapterclient依赖关系是不一样的版本,所以杰克逊得到了不能被映射到一个类(在这种情况下,现场notBefore是不是在UserRepresentation类可用)的一些领域。

所以在你的pom.xml中,确保依赖关系是相同的。例如:

<dependency> 
    <groupId>org.keycloak</groupId> 
    <artifactId>keycloak-spring-security-adapter</artifactId> 
    <version>3.4.0.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.keycloak</groupId> 
    <artifactId>keycloak-admin-client</artifactId> 
    <version>3.4.0.Final</version> 
</dependency> 
+1

是的,谢谢你,这对于面对我面临同样问题的其他人将变得有帮助。 – Ziko

相关问题