Skip to content

Commit 9b58b08

Browse files
author
vramik
committed
switch to resteasy client
1 parent 76759bd commit 9b58b08

File tree

3 files changed

+32
-91
lines changed

3 files changed

+32
-91
lines changed

pom.xml

-19
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
<version.wicket.cdi>6.0</version.wicket.cdi>
2828
<version.keycloak>1.1.0.Final</version.keycloak>
2929

30-
3130
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
3231
<buildTimestamp>${maven.build.timestamp}</buildTimestamp>
3332

@@ -381,24 +380,6 @@
381380
</dependency>
382381
-->
383382

384-
<!-- PicketBox, PicketLink - for login attempts -->
385-
<!-- <dependency>
386-
<groupId>org.picketbox</groupId>
387-
<artifactId>picketbox-core</artifactId>
388-
<version>${version.picketbox}</version>
389-
</dependency>
390-
<dependency>
391-
<groupId>org.picketbox</groupId>
392-
<artifactId>picketbox-http</artifactId>
393-
<version>${version.picketbox}</version>
394-
</dependency>
395-
<dependency>
396-
<groupId>org.picketlink</groupId>
397-
<artifactId>picketlink-idm-api</artifactId>
398-
<version>3.0.0.Beta2</version>
399-
<type>jar</type>
400-
</dependency>-->
401-
402383
<!-- Wicket -->
403384
<dependency>
404385
<groupId>org.apache.wicket</groupId>

src/main/java/com/issuetracker/web/security/KeycloakAuthSession.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import java.util.Set;
88
import javax.servlet.http.HttpServletRequest;
99
import org.apache.wicket.request.cycle.RequestCycle;
10-
import org.jboss.resteasy.logging.Logger;
10+
import org.jboss.logging.Logger;
1111
import org.keycloak.KeycloakSecurityContext;
1212
import org.keycloak.representations.AccessToken;
1313
import org.keycloak.representations.IDToken;
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,43 @@
11
package com.issuetracker.web.security;
22

33
import static com.issuetracker.web.Constants.SERVER_URL;
4-
import org.apache.http.client.HttpClient;
5-
import org.apache.http.client.methods.HttpGet;
6-
import org.keycloak.adapters.HttpClientBuilder;
74
import static com.issuetracker.web.security.KeycloakAuthSession.*;
85
import java.io.IOException;
9-
import java.io.InputStream;
106
import java.util.ArrayList;
11-
import java.util.Arrays;
127
import java.util.HashSet;
138
import java.util.List;
149
import java.util.Set;
1510
import java.util.TreeSet;
16-
import org.apache.http.HttpEntity;
17-
import org.apache.http.HttpResponse;
11+
import javax.ws.rs.WebApplicationException;
12+
import javax.ws.rs.client.ClientRequestContext;
13+
import javax.ws.rs.client.ClientRequestFilter;
14+
import org.jboss.logging.Logger;
15+
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
16+
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
1817
import org.keycloak.KeycloakSecurityContext;
1918
import org.keycloak.representations.idm.RoleRepresentation;
20-
import org.keycloak.representations.idm.UserRepresentation;
21-
import org.keycloak.util.JsonSerialization;
2219

2320
/**
2421
*
2522
* @author vramik
2623
*/
2724
public class KeycloakService {
25+
private static final Logger log = Logger.getLogger(KeycloakService.class);
2826

29-
private static class TypedListOfUser extends ArrayList<UserRepresentation> {
30-
}
3127
private static class TypedSetOfRoles extends HashSet<RoleRepresentation> {
3228
}
3329

34-
public static class Failure extends Exception {
35-
private final int status;
36-
37-
public Failure(int status) {
38-
this.status = status;
39-
}
30+
private static class AuthHedersRequestFilter implements ClientRequestFilter {
4031

41-
public int getStatus() {
42-
return status;
32+
private final String tokenString;
33+
34+
public AuthHedersRequestFilter(KeycloakSecurityContext session) {
35+
tokenString = session.getTokenString();
4336
}
44-
}
45-
46-
public static List<UserRepresentation> getUsers() throws Failure {
47-
HttpClient client = new HttpClientBuilder().disableTrustManager().build();
4837

49-
try {
50-
HttpGet get = new HttpGet(SERVER_URL + "/auth/admin/realms/issue-tracker/users");
51-
System.out.println("GET: " + get.toString());
52-
KeycloakSecurityContext session = getKeycloakSecurityContext();
53-
get.addHeader("Authorization", "Bearer " + session.getTokenString());
54-
System.out.println("GET HEADER: " + Arrays.toString(get.getHeaders("Authorization")));
55-
try {
56-
HttpResponse response = client.execute(get);
57-
if (response.getStatusLine().getStatusCode() != 200) {
58-
System.out.println("STATUS CODE: " + response.getStatusLine().getStatusCode());
59-
throw new Failure(response.getStatusLine().getStatusCode());
60-
}
61-
HttpEntity entity = response.getEntity();
62-
try (InputStream is = entity.getContent()) {
63-
return JsonSerialization.readValue(is, TypedListOfUser.class);
64-
}
65-
} catch (IOException ex) {
66-
throw new RuntimeException(ex);
67-
}
68-
} finally {
69-
client.getConnectionManager().shutdown();
38+
@Override
39+
public void filter(ClientRequestContext requestContext) throws IOException {
40+
requestContext.getHeaders().add("Authorization", "Bearer " + tokenString);
7041
}
7142
}
7243

@@ -76,37 +47,26 @@ public static List<UserRepresentation> getUsers() throws Failure {
7647
*
7748
*/
7849
public static List<String> getRealmRoles() {
79-
HttpClient client = new HttpClientBuilder().disableTrustManager().build();
50+
Set<String> roles = new TreeSet<>();
51+
roles.add("Public");
52+
53+
KeycloakSecurityContext session = getKeycloakSecurityContext();
54+
if (session == null) {
55+
return new ArrayList<>(roles);
56+
}
8057

58+
ResteasyClient client = new ResteasyClientBuilder().build();
59+
client.register(new AuthHedersRequestFilter(session));
8160
try {
82-
HttpGet get = new HttpGet(SERVER_URL + "/auth/admin/realms/issue-tracker/roles");
83-
KeycloakSecurityContext session = getKeycloakSecurityContext();
84-
if (session == null) {
85-
return new ArrayList<>();
86-
}
87-
get.addHeader("Authorization", "Bearer " + session.getTokenString());
88-
try {
89-
HttpResponse response = client.execute(get);
90-
if (response.getStatusLine().getStatusCode() != 200) {
91-
throw new Failure(response.getStatusLine().getStatusCode());
92-
}
93-
HttpEntity entity = response.getEntity();
94-
try (InputStream is = entity.getContent()) {
95-
Set<String> roles = new TreeSet<>();
96-
for (RoleRepresentation role : JsonSerialization.readValue(is, TypedSetOfRoles.class)) {
97-
roles.add(role.getName());
98-
}
99-
roles.add("Public");
100-
return new ArrayList<>(roles);
101-
}
102-
} catch (IOException ex) {
103-
throw new RuntimeException(ex);
104-
} catch (Failure f) {
105-
throw new RuntimeException("Returned status code: " + f.getStatus(), f);
61+
TypedSetOfRoles typedSetOfRoles = client.target(SERVER_URL + "/auth/admin/realms/issue-tracker/roles").request().get(TypedSetOfRoles.class);
62+
63+
for (RoleRepresentation typedSetOfRole : typedSetOfRoles) {
64+
roles.add(typedSetOfRole.getName());
10665
}
107-
} finally {
108-
client.getConnectionManager().shutdown();
66+
} catch (WebApplicationException e) {
67+
//in case the response status code of the response returned by the server is not successful
10968
}
69+
return new ArrayList<>(roles);
11070
}
11171

11272
}

0 commit comments

Comments
 (0)