2017-07-30 10 views
0

私はkeycloakとspringの新機能です。Keycloak admin-client:コンテンツタイプapplication/jsonのMessageBodyReaderを見つけることができません

Keycloak kc = Keycloak.getInstance(
    "http://localhost:8080/auth", 
    "master", // the realm to log in to 
    "admin", "password", // the user 
    "admin-cli"); 

    CredentialRepresentation credential = new CredentialRepresentation(); 
    credential.setType(CredentialRepresentation.PASSWORD); 
    credential.setValue("test123"); 

    UserRepresentation user = new UserRepresentation(); 
    user.setUsername("testuser"); 
    user.setFirstName("Test"); 
    user.setLastName("User"); 
    user.setCredentials(Arrays.asList(credential)); 

    kc.realm("master").users().create(user); 

を、私はこのエラーを取得しておく::私はこのような私の春ブートプロジェクトにユーザーを作成するにはkeycloak管理クライアントを使用しようとしている

Exception in thread "main" javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse 
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:158) 
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:107) 
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) 
at com.sun.proxy.$Proxy18.grantToken(Unknown Source) 
at org.keycloak.admin.client.token.TokenManager.grantToken(TokenManager.java:89) 
at org.keycloak.admin.client.token.TokenManager.getAccessToken(TokenManager.java:69) 
at org.keycloak.admin.client.token.TokenManager.getAccessTokenString(TokenManager.java:64) 
at org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:52) 
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:443) 
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:105) 
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) 
at com.sun.proxy.$Proxy26.create(Unknown Source) 
at me.phuongtm.KeycloakAdminClientDemoApplication.main(KeycloakAdminClientDemoApplication.java:68) 
    Caused by: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse 
at org.jboss.resteasy.core.interception.jaxrs.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:42) 
at org.jboss.resteasy.core.interception.jaxrs.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:80) 
at org.jboss.resteasy.core.interception.jaxrs.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) 
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:266) 
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:196) 
at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:212) 
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:122) 
... 13 more 

あると思われますRESTEASYに問題があるので、私はresteasy-jackson2-providerをkeycloak docsが提案するように追加しましたが、運はありません。ここで

は私のpom.xmlのの依存性を、次のとおりです。

https://stackoverflow.com/a/40462534/7441720

しかし運:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.keycloak</groupId> 
     <artifactId>keycloak-admin-client</artifactId> 
     <version>3.2.0.Final</version> 
    </dependency> 
    <dependency> 
<groupId>javax.ws.rs</groupId> 
<artifactId>javax.ws.rs-api</artifactId> 
<version>2.0</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-client</artifactId> 
    <version>3.1.4.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-multipart-provider</artifactId> 
    <version>3.1.4.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jackson2-provider</artifactId> 
    <version>3.1.4.Final</version> 
</dependency> 
    </dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

私は答えを見つけようとして時間と時間を費やして、私もこのMatteoMのソリューションを試してみました。

は私が得ることができるすべての助けに感謝

UPDATE:プロバイダの問題のように見える

10:06:45.027 [main] WARN org.jboss.resteasy.resteasy_jaxrs.i18n - 
RESTEASY002145: NoClassDefFoundError: Unable to load builtin provider 

org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider from 
jar:file:/C:/Users/hp/.m2/repository/org/jboss/resteasy/resteasy-jackson2- 
    provider/3.1.4.Final/resteasy-jackson2-provider-3.1.4.Final.jar!/META- 
    INF/services/javax.ws.rs.ext.Providers 

が、私は解決策を見つけるように見えることはできません、私は瓶とクラスをチェックした。

ResteasyJackson2Provider 

が存在します!

UPDATE:私はそれはの依存性の問題だった、伝えることができるものから、

、私はGradleのに切り替え(しかし、それは同様にMavenのために働く必要があります)、私の新しい依存関係は以下のとおりです。

compile('org.keycloak:keycloak-admin-client:3.2.1.Final') 
compile('org.jboss.resteasy:resteasy-client:3.0.14.Final') 
compile('org.jboss.resteasy:resteasy-multipart-provider:3.0.14.Final') 
compile('org.jboss.resteasy:resteasy-jackson2-provider:3.0.14.Final') 
compile('org.jboss.resteasy:resteasy-jaxb-provider:3.0.14.Final') 
compile('org.jboss.resteasy:resteasy-jettison-provider:3.0.14.Final') 
compile('org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec:1.0.0.Final') 
keycloakについて

は、私は豆とConfigurationクラスを作成しました:

@Bean 
    public Keycloak keycloakBeanConfig(){ 
     return KeycloakBuilder.builder().serverUrl(keycloakUrl).realm(realm) // 
       .grantType(OAuth2Constants.CLIENT_CREDENTIALS).clientId(clientId) // 
       .clientSecret(clientSecret) 
       .build(); 
    } 
+0

使用権バージョン依存関係ページhttps://mvnrepository.com/artifact/org.keycloak/keycloak-adminどおりすなわち「3.0.14.Final」、:あなたは、以下の依存関係を見つけることができます-client/3.2.0.Final – ravthiru

+0

あなたはその解決策を見つけましたか?私はまったく同じ問題に直面しています! – Zok

答えて

-1

resteasy-jackson-providerを使用し、を削除しよう。 RESTEasyのクライアントの

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jackson-provider</artifactId> 
    <version>3.1.3.Final</version> 
</dependency> 
+0

resteasy-jackson-providerの問題点は、以下を認識しないことです。認識できないフィールド "access_token"(クラスorg.keycloak.representations.AccessTokenResponse)。無視できるとマークされていません。 keycloakドキュメントによると、resteasy-jackson2-provider – Lucy101

関連する問題