diff --git a/pom.xml b/pom.xml
index 20fc6af..fad59e6 100755
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
oxalis-as4
- 4.1.4
+ 4.1.5
jar
diff --git a/src/main/java/no/difi/oxalis/as4/outbound/As4MessageSender.java b/src/main/java/no/difi/oxalis/as4/outbound/As4MessageSender.java
index 4aa84ff..e481215 100644
--- a/src/main/java/no/difi/oxalis/as4/outbound/As4MessageSender.java
+++ b/src/main/java/no/difi/oxalis/as4/outbound/As4MessageSender.java
@@ -49,32 +49,30 @@ public class As4MessageSender {
public static final QName SERVICE_NAME = new QName("oxalis.difi.no/", "outbound-service");
public static final QName PORT_NAME = new QName("oxalis.difi.no/", "port");
- @Inject
- private MessagingProvider messagingProvider;
-
- @Inject
- private MessageIdGenerator messageIdGenerator;
-
- @Inject
- private Settings settings;
-
- @Inject
- private Settings as4settings;
-
- @Inject
- private CompressionUtil compressionUtil;
-
- @Inject
- private Settings httpConfSettings;
-
- @Inject
- private TransmissionResponseConverter transmissionResponseConverter;
-
- @Inject
- private MerlinProvider merlinProvider;
+ private final MessagingProvider messagingProvider;
+ private final MessageIdGenerator messageIdGenerator;
+ private final Settings settings;
+ private final Settings as4settings;
+ private final CompressionUtil compressionUtil;
+ private final Settings httpConfSettings;
+ private final TransmissionResponseConverter transmissionResponseConverter;
+ private final MerlinProvider merlinProvider;
+ private final PolicyService policyService;
+ private final String browserType;
@Inject
- private PolicyService policyService;
+ public As4MessageSender(MessagingProvider messagingProvider, MessageIdGenerator messageIdGenerator, Settings settings, Settings as4settings, CompressionUtil compressionUtil, Settings httpConfSettings, TransmissionResponseConverter transmissionResponseConverter, MerlinProvider merlinProvider, PolicyService policyService, BrowserTypeProvider browserTypeProvider) {
+ this.messagingProvider = messagingProvider;
+ this.messageIdGenerator = messageIdGenerator;
+ this.settings = settings;
+ this.as4settings = as4settings;
+ this.compressionUtil = compressionUtil;
+ this.httpConfSettings = httpConfSettings;
+ this.transmissionResponseConverter = transmissionResponseConverter;
+ this.merlinProvider = merlinProvider;
+ this.policyService = policyService;
+ this.browserType = browserTypeProvider.getBrowserType();
+ }
public TransmissionResponse send(TransmissionRequest request) throws OxalisAs4TransmissionException {
try (DispatchImpl dispatch = createDispatch(request)) {
@@ -162,6 +160,9 @@ private DispatchImpl createDispatch(TransmissionRequest request) th
final HTTPClientPolicy httpClientPolicy = httpConduit.getClient();
httpClientPolicy.setConnectionTimeout(httpConfSettings.getInt(HttpConf.TIMEOUT_CONNECT));
httpClientPolicy.setReceiveTimeout(httpConfSettings.getInt(HttpConf.TIMEOUT_READ));
+ httpClientPolicy.setAllowChunking(true);
+ httpClientPolicy.setChunkLength(8192);
+ httpClientPolicy.setBrowserType(browserType);
return dispatch;
}
diff --git a/src/main/java/no/difi/oxalis/as4/outbound/BrowserTypeProvider.java b/src/main/java/no/difi/oxalis/as4/outbound/BrowserTypeProvider.java
new file mode 100644
index 0000000..d04fc82
--- /dev/null
+++ b/src/main/java/no/difi/oxalis/as4/outbound/BrowserTypeProvider.java
@@ -0,0 +1,45 @@
+package no.difi.oxalis.as4.outbound;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import lombok.extern.slf4j.Slf4j;
+import no.difi.oxalis.as4.inbound.OxalisAS4Version;
+import no.difi.oxalis.commons.util.OxalisVersion;
+import org.bouncycastle.asn1.x500.RDN;
+import org.bouncycastle.asn1.x500.X500Name;
+import org.bouncycastle.asn1.x500.style.BCStyle;
+import org.bouncycastle.asn1.x500.style.IETFUtils;
+import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
+
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.X509Certificate;
+
+@Slf4j
+@Singleton
+public class BrowserTypeProvider {
+
+ private final X509Certificate certificate;
+
+ @Inject
+ public BrowserTypeProvider(X509Certificate certificate) {
+ this.certificate = certificate;
+ }
+
+ public String getBrowserType() {
+ return String.format("Oxalis %s / AS4 %s / %s",
+ OxalisVersion.getVersion(),
+ OxalisAS4Version.getVersion(),
+ getCN());
+ }
+
+ private String getCN() {
+ try {
+ X500Name x500name = new JcaX509CertificateHolder(certificate).getSubject();
+ RDN cn = x500name.getRDNs(BCStyle.CN)[0];
+ return IETFUtils.valueToString(cn.getFirst().getValue());
+ } catch (CertificateEncodingException e) {
+ log.warn("Could not extract CN from certificate", e);
+ return "Unknown";
+ }
+ }
+}
diff --git a/src/main/java/no/difi/oxalis/as4/util/SOAPHeaderParser.java b/src/main/java/no/difi/oxalis/as4/util/SOAPHeaderParser.java
index d370545..ceffdc8 100644
--- a/src/main/java/no/difi/oxalis/as4/util/SOAPHeaderParser.java
+++ b/src/main/java/no/difi/oxalis/as4/util/SOAPHeaderParser.java
@@ -79,7 +79,8 @@ public static X509Certificate getSenderCertificate(SOAPHeader header) throws Oxa
if (bstNodes != null) {
for (int i = 0; i < bstNodes.getLength(); i++) {
Element bstElem = (Element) bstNodes.item(i);
- if (bstElem.getAttribute("wsu:Id").equals(refUri)) {
+
+ if (bstElem.getAttributeNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Id").equals(refUri)) {
try {
String pem = bstElem.getTextContent().replaceAll("[\r\n]+", "");
byte[] buf = Base64.getDecoder().decode(pem);