1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.console.rest;
20
21 import com.fasterxml.jackson.core.type.TypeReference;
22 import com.fasterxml.jackson.databind.JsonNode;
23 import com.fasterxml.jackson.databind.json.JsonMapper;
24 import com.fasterxml.jackson.databind.module.SimpleModule;
25 import java.io.InputStream;
26 import java.util.List;
27 import javax.ws.rs.core.MediaType;
28 import javax.ws.rs.core.Response;
29 import org.apache.cxf.jaxrs.client.WebClient;
30 import org.apache.syncope.client.console.SyncopeWebApplication;
31 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
32 import org.apache.syncope.common.lib.AMSession;
33
34 public final class WASessionRestClient extends AMSessionRestClient {
35
36 private static final long serialVersionUID = 22118820292494L;
37
38 protected static final JsonMapper MAPPER = JsonMapper.builder().
39 addModule(new SimpleModule().addDeserializer(AMSession.class, new AMSessionDeserializer())).build();
40
41 public WASessionRestClient(final List<NetworkService> instances) {
42 super(instances);
43 }
44
45 @Override
46 protected String getActuatorEndpoint() {
47 return instances.get(0).getAddress() + "actuator/ssoSessions";
48 }
49
50 @Override
51 public List<AMSession> list() {
52 try {
53 Response response = WebClient.create(
54 getActuatorEndpoint(),
55 SyncopeWebApplication.get().getAnonymousUser(),
56 SyncopeWebApplication.get().getAnonymousKey(),
57 null).
58 accept(MediaType.APPLICATION_JSON_TYPE).get();
59 if (response.getStatus() == Response.Status.OK.getStatusCode()) {
60 JsonNode node = MAPPER.readTree((InputStream) response.getEntity());
61 if (node.has("activeSsoSessions")) {
62 return MAPPER.readValue(MAPPER.treeAsTokens(node.get("activeSsoSessions")), new TypeReference<>() {
63 });
64 }
65 } else {
66 LOG.error("Unexpected response for SSO Sessions from {}: {}",
67 getActuatorEndpoint(), response.getStatus());
68 }
69 } catch (Exception e) {
70 LOG.error("Could not fetch SSO Sessions from {}", getActuatorEndpoint(), e);
71 }
72
73 return List.of();
74 }
75 }