2017-06-06 31 views
0

我想KeyCloak管理客戶端與Spring引導整合Keycloak管理客戶端3.1.0.Final與Spring 1.5.1引導

整合但,當我試圖創建一個新帳戶拋出一個異常:

Caused by: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse 

於是,我就明確地登記傑克遜提供了KeyCloak這樣的:

  KeycloakBuilder 
      .builder() 
      .serverUrl(SERVER_URL) 
      .realm(REALM) 
      .username(USERNAME) 
      .password(PASSWORD) 
      .clientId(CLIENT_ID) 
      .resteasyClient(new ResteasyClientBuilder() 
        .providerFactory(factory.register(ResteasyJackson2Provider.class)) 
        .connectionPoolSize(10) 
        .build()) 
      .build(); 

但我無法導入ResteasyJackson2Provider.class

的pom.xml

<dependency> 
    <groupId>org.keycloak</groupId> 
    <artifactId>keycloak-spring-security-adapter</artifactId> 
    <version>3.1.0.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.keycloak</groupId> 
    <artifactId>keycloak-admin-client</artifactId> 
    <version>3.1.0.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jaxrs</artifactId> 
    <version>3.1.3.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-client</artifactId> 
    <version>3.1.3.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jackson2-provider</artifactId> 
    <version>3.1.3.Final</version> 
</dependency> 

順便說一句,如果我用resteasy-jackson-provider,我得到這個異常:

javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "access_token" (Class org.keycloak.representations.AccessTokenResponse), not marked as ignorable 
at [Source: org.jboss.r[email protected]7cc842b0; line: 1, column: 18] (through reference chain: org.keycloak.representations.AccessTokenResponse["access_token"]) 

回答

2

一段時間後,我想通了,要解決這個問題:

首先,我用獨立項目(空的maven項目)對它進行了測試,問題仍然存在,因爲resteasy-jackson-provider。它應該是resteasy-jackson2-provider(注意,其resteasy- jackson2 -provider)

現在,我知道問題在某種程度上源於春天開機,RestEasy的。最後,我想出這個工作的pom.xml

<dependency> 
     <groupId>org.keycloak</groupId> 
     <artifactId>keycloak-admin-client</artifactId> 
     <version>3.1.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-client</artifactId> 
     <version>3.1.3.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jackson2-provider</artifactId> 
     <version>3.1.3.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.8.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.8.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.8.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.jaxrs</groupId> 
     <artifactId>jackson-jaxrs-json-provider</artifactId> 
     <version>2.8.8</version> 
    </dependency> 

還有一點要注意的是,你應該使用管理,CLI客戶在你的Keycloak,因爲默認情況下,它有直接訪問授權的

順便說一句啓用,這是Java的配置:

  KeycloakBuilder 
      .builder() 
      .serverUrl("localhost:8080/auth") 
      .realm("master") 
      .username("YOUR_USERNAME") 
      .password("YOUR_PASSWORD") 
      .clientId("admin-cli") 
      .build(); 

工作示例:https://github.com/phuongtailtranminh/Keycloak-Admin-Client-Spring-Boot-Demo