1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.ui.commons.resources.saml2sp4ui;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.nio.charset.StandardCharsets;
24 import javax.ws.rs.core.MediaType;
25 import javax.ws.rs.core.Response;
26 import org.apache.cxf.jaxrs.client.WebClient;
27 import org.apache.syncope.client.ui.commons.BaseSession;
28 import org.apache.syncope.client.ui.commons.SAML2SP4UIConstants;
29 import org.apache.syncope.client.ui.commons.annotations.Resource;
30 import org.apache.syncope.common.rest.api.service.SAML2SP4UIService;
31 import org.apache.wicket.Session;
32
33 @Resource(
34 key = SAML2SP4UIConstants.URL_CONTEXT + ".metadata",
35 path = "/" + SAML2SP4UIConstants.URL_CONTEXT + "/metadata")
36 public class MetadataResource extends AbstractSAML2SP4UIResource {
37
38 private static final long serialVersionUID = -1694048805459648725L;
39
40 @Override
41 protected ResourceResponse newResourceResponse(final Attributes attributes) {
42 SAML2SP4UIService service = BaseSession.class.cast(Session.get()).getAnonymousService(SAML2SP4UIService.class);
43 WebClient.client(service).accept(MediaType.APPLICATION_XML_TYPE).type(MediaType.APPLICATION_XML_TYPE);
44 Response metadataResponse = service.getMetadata(spEntityID(attributes), SAML2SP4UIConstants.URL_CONTEXT);
45 WebClient.client(service).reset();
46
47 ResourceResponse response = new ResourceResponse();
48 response.disableCaching();
49 response.setContentType(MediaType.APPLICATION_XML);
50 response.setTextEncoding(StandardCharsets.UTF_8.name());
51 response.setWriteCallback(new WriteCallback() {
52
53 @Override
54 public void writeData(final Attributes attributes) throws IOException {
55 writeStream(attributes, (InputStream) metadataResponse.getEntity());
56 }
57 });
58
59 return response;
60 }
61 }