Questions asked by Alex Suterhttps://answers.axonivy.com/questions/asked-by/710/alex-suter/?type=rssQuestions asked by <a href="/users/710/alex-suter" >Alex Suter</a>enTue, 17 Mar 2020 10:00:35 -0400Ghostcat vulnerability in Tomcat (CVE-2020-1938)https://answers.axonivy.com/questions/4456/ghostcat-vulnerability-in-tomcat-cve-2020-1938<p><strong>IMPORTANT NOTE FROM 2020-05-12</strong> Tomcat had a bug with AJP and IIS over HTTPS. Ivy 7.0.17 and 8.0.4/8.0.5 are affected by this bug. You will need to upgrade to 7.0.18 and 8.0.6.</p> <hr> <p>The Axon.ivy Digital Business Platform is using Tomcat as web server. <a href="https://www.chaitin.cn/en/ghostcat">Ghostcat</a> 👻😼 (<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1938">CVE-2020-1938</a>) is a security vulnerability in Tomcat and is related to the AJP protocol. AJP is a binary protocol and is used in conjunction with a reverse proxy like IIS or Apache httpd. A secure Axon.ivy Engine setup always includes a reverse proxy, like the following example:</p> <pre><code>Browser --&gt; (HTTP, HTTPS) --&gt; Reverse Proxy (IIS, Apache, ...) --&gt; (AJP) --&gt; Axon.ivy Engine </code></pre> <p>HTTP or HTTPS is also possible as communication protocol between the reverse proxy and the Axon.ivy Engine, but AJP is the most used setup, especially in Windows environments.</p> <p><strong>Are you affected by this vulnerability?</strong></p> <ul> <li><strong>8.0</strong> You are affected by this issue if you have explicitly enabled the AJP port and have not explicitly protected access to the Axon.ivy engine for example with a firewall.</li> <li><strong>7.0</strong> You are affected by this issue if you not have explicitly disabled the AJP port and have not explicitly protected access to the Axon.ivy engine for example with a firewall.</li> </ul> <p><strong>How to fix this without updating?</strong></p> <p>Is your reverse proxy running on the same host as the Axon.ivy Engine?</p> <ul> <li><strong>Yes.</strong> You need to bind the AJP port only to localhost by setting the property <code>Connector.AJP.Address</code> to <code>localhost</code> in <code>ivy.yaml</code> and restart the Axon.ivy Engine. The AJP port is now only available on the host itself. For Axon.ivy 7.0 you need to set the system property <code>WebServer.AJP.Address</code> to <code>localhost</code>.</li> <li><strong>No.</strong> Configure your network to ensure exclusive access between the reverse proxy and the Axon.ivy Engine. If this is not possible, you will need to setup a firewall on the host where the Axon.ivy Engine is running. Only requests from the reverse proxy must be allowed.</li> </ul> <p><strong>What will change in Axon.ivy 7.0.17 and 8.0.6?</strong></p> <p>Axon.ivy will come with the latest Tomcat version:</p> <ul> <li>Axon.ivy 8.0.6 comes with Tomcat 9.0.35</li> <li>Axon.ivy 7.0.18 comes with Tomcat 8.5.55</li> </ul> <p>Tomcat has changed the default behavior of the AJP port. AJP is now bound by default to localhost and not anymore to every network interface (nic). This means nobody can access the Axon.ivy Engine from another host via AJP. Furthermore the AJP port is now also disabled by default in Axon.ivy 7.0.18.</p> <p><strong>What do you have to do when upgrading to 7.0.18?</strong></p> <p>Is your reverse proxy running on the same host as the Axon.ivy Engine?</p> <ul> <li><strong>Yes.</strong> Just make sure that the system property <code>WebServer.AJP.Address</code> is empty after the upgrade. So we take the Tomcat default and the AJP port is only available locally.</li> <li><strong>No.</strong> You need to bind the AJP port to the public network address by setting the system property <code>WebServer.AJP.Address</code> to <code>YOUR_AXON_IVY_ENGINE_IP_ADDRESS</code>. Additionally, you need to configure your network to ensure exclusive access between the reverse proxy and the Axon.ivy Engine. If this is not possible, you will need to setup a firewall on the host where the Axon.ivy Engine is running. Only requests from the reverse proxy must be allowed.</li> </ul> <p>If you don't use a reverse proxy at all, then you need to disable the AJP port by setting the system property <code>WebServer.AJP.Enabled</code> to <code>false</code>.</p> <p><strong>What do you have to do when upgrading to 8.0.6?</strong></p> <p>Is your reverse proxy running on the same host as the Axon.ivy Engine?</p> <ul> <li><strong>Yes.</strong> Just make sure that <code>Connector.AJP.Address</code> in <code>ivy.yaml</code> is empty after the upgrade. So we take the Tomcat default and the AJP port is only available locally.</li> <li><strong>No.</strong> You need to bind the AJP port to the public network address by setting the property <code>Connector.AJP.Address</code> to <code>YOUR_AXON_IVY_ENGINE_IP_ADDRESS</code> in <code>ivy.yaml</code>. Additionally, you need to configure your network to ensure exclusive access between the reverse proxy and the Axon.ivy Engine. If this is not possible, you will need to setup a firewall on the host where the Axon.ivy Engine is running. Only requests from the reverse proxy must be allowed.</li> </ul> <p><strong>isapi.dll and mod_jk.so upgrades</strong></p> <p>We also bundle with the upcoming release the latest version of <code>isapi.dll</code> and <code>mod_jk.so</code>. They are needed by the reverse proxy (IIS, Apache httpd). We recommend to upgrade them on the reverse proxy as described in the <a href="https://developer.axonivy.com/doc/8.0.3/doc/migrationNotes/UpgradeApacheTomcatConnector.html">migration guide</a>.</p> <p><strong>What about <code>secret</code> and <code>secretRequired</code>?</strong></p> <p>You may have read something about secret or secretRequired. This is an alternative way to protect the communication between the reverse proxy and Axon.ivy Engine. We believe that a secure communication between the reverse proxy and the Axon.ivy Engine should be protected by firewall rules even in trusted networks and therefore this is not needed.</p> <p>If you don't have the same opinion, we would love to hear 👂 why!</p> <p>If you really want to use <code>secret</code> and <code>secretRequired</code>, you can define them in <code>ivy.yaml</code> (<a href="http://developer.axonivy.com/doc/nightly/engine-guide/configuration/files/ivy-webserver-yaml.html">see configuration</a>). Furthermore you need to define the secret itself in the <code>[worker.properties][5]</code> as part of the reverse proxy installation.</p> <p><strong>Security is important to us 💯 %</strong></p> <p>We, the platform development team, take security very seriously. If you have any questions or find other weaknesses, please do not hesitate to contact us.</p>Alex SuterTue, 17 Mar 2020 10:00:35 -0400https://answers.axonivy.com/questions/4456/ghostcat-vulnerability-in-tomcat-cve-2020-1938securitytomcatAXIS web service client calls LinkageError with Policyhttps://answers.axonivy.com/questions/4451/axis-web-service-client-calls-linkageerror-with-policy<p>Since Axon.ivy 8.0 you may have problems with AXIS web service client calls, which you will notice in the log as follows:</p> <pre><code>LinkageError: loader constraint violation: loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @4797c3e2 wants to load class org.apache.neethi.Policy. A different class with the same name was previously loaded by org.eclipse.osgi.internal.loader.EquinoxClassLoader @59b5251d. (org.apache.neethi.Policy is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @59b5251d, parent loader 'platform') </code></pre> <p>This problem occurs in combination with web service policies. To fix this issue, you need to migrate to the CXF Web Service Client technology - the AXIS stack is deprecated.</p> <p><img alt="alt text" src="https://answers.axonivy.com/upfiles/1583991754-603005-image.png"></p> <p>We have invested heavily in the new CXF technology in the Web Service Call Stack . If you have any problems with CXF, please contact us. We will take our time and make the CXF stack even better 💪!</p>Alex SuterThu, 12 Mar 2020 01:45:20 -0400https://answers.axonivy.com/questions/4451/axis-web-service-client-calls-linkageerror-with-policywebservicecxfaxisCXF Web Service Client improvements in 8.0.3https://answers.axonivy.com/questions/4445/cxf-web-service-client-improvements-in-8-0-3<p>By default CXF Web Service Calls runs by default with <code>HttpUrlConnection</code> of Java. <code>HttpUrlConnection</code> is limited when it comes to authenticate against a NTML web service.</p> <p>CXF provides the ability to change the implementation of the connection itself to <code>org.apache.http.nio.client.HttpAsyncClient</code>. Besides the full support of NTML it also provides better performance. Due that fact we changed the default connection to <code>HttpAsyncClient</code> of CXF Web Service Calls.</p> <p>There are no known compatibility issues between these to implementations. If you face one, please contact us. And you are always still able to fallback by setting the <code>use.async.http.conduit</code> to <code>false</code> on the Web Service Client.</p>Alex SuterThu, 05 Mar 2020 02:33:11 -0500https://answers.axonivy.com/questions/4445/cxf-web-service-client-improvements-in-8-0-3webservicecxfHow to use WS-Addressing in a webservice call?https://answers.axonivy.com/questions/3106/how-to-use-ws-addressing-in-a-webservice-call<p>I need to use web service standard WS-Addressing to call a web service. How can I use it?</p>Alex SuterWed, 21 Feb 2018 10:36:38 -0500https://answers.axonivy.com/questions/3106/how-to-use-ws-addressing-in-a-webservice-callwebservicecxfsoapJSF View Scope can lead to memory leakhttps://answers.axonivy.com/questions/2918/jsf-view-scope-can-lead-to-memory-leak<p>JSF stores the View Scope (<code>@ViewScope</code>) in the session store. Can this lead to memory issues?</p>Alex SuterWed, 18 Oct 2017 10:52:04 -0400https://answers.axonivy.com/questions/2918/jsf-view-scope-can-lead-to-memory-leakjsfviewscopememoryHow to install and use the Linux Designerhttps://answers.axonivy.com/questions/2857/how-to-install-and-use-the-linux-designer<p>We release since version 6.7.0 the Axon.ivy Designer for Linux. Basically, it runs very well. </p> <p><strong>Simple automated installation</strong></p> <ol> <li>Download and unpack the Designer to a location of your choice. E.g. <code>~/opt/Designer7</code></li> <li>run the <code>install-ivy-dependencies.sh</code> script in the root of the designer.</li> <li>run <code>Axon.ivy Designer</code></li> </ol> <p><strong>Manual Dependency Installation</strong></p> <p>The manual installation process on a Debain based Linux is as follows:</p> <ul> <li> <p>Install <code>libwebkitgtk-1.0.0</code> that the internal browser works correctly. A simple APT command should be sufficient:</p> <ul> <li><code>sudo apt install libwebkitgtk-1.0.0</code></li> <li>if this browser library is not installed: the web browser will fail with an error such as this in the screen <img src="https://answers.axonivy.com/upfiles/debianBrowserError.png" height="250"></li> </ul> </li> <li> <p>Install a Java Runtime Environment (JRE). <code> sudo apt install openjdk-8-jdk sudo apt install openjfx </code></p> </li> <li>For the fast JNI SVN Team connector the libraries must be made accessible<ul> <li><code>sudo apt-get install libsvn-java</code></li> </ul> </li> <li>Download and unpack the Linux Designer. E.g. into <code>~/Downloads/Designer7</code></li> <li>Run the <code>eclipse</code> binary in the unpacked Designer directory. Enjoy!</li> </ul> <p><strong>Only for versions older than 7.0.0</strong></p> <ul> <li>Windows tools.jar included instead of Linux tools.jar (<code>configuration/org.eclipse.osgi/107/0/.cp/lib/tools.jar</code>)<ul> <li>Could lead to serious problems (e.g. jmockit). Replacing existing Windows tools.jar with a Linux tools.jar solved it.</li> </ul> </li> </ul> <p><strong>Other Fixes</strong></p> <ul> <li><a href="https://answers.axonivy.com/questions/3410/error-uncaught-exception-in-thread-awt-eventqueue-1-linux-mint-19">https://answers.axonivy.com/questions/3410/error-uncaught-exception-in-thread-awt-eventqueue-1-linux-mint-19</a></li> </ul> <p><strong>This Q&amp;A entry is a community wiki. Share your experiences with us!</strong></p>Alex SuterFri, 08 Sep 2017 03:06:14 -0400https://answers.axonivy.com/questions/2857/how-to-install-and-use-the-linux-designerdesignerlinuxHow to create cancel or park button in my Html Dialog?https://answers.axonivy.com/questions/2855/how-to-create-cancel-or-park-button-in-my-html-dialog<p>On what should I pay attention when I want to create a cancel or a park button in my Html Dialog?</p>Alex SuterFri, 08 Sep 2017 01:43:30 -0400https://answers.axonivy.com/questions/2855/how-to-create-cancel-or-park-button-in-my-html-dialoghtmluserdialoghtmldialogjsfCan't sign up to Axon.ivy Q&Ahttps://answers.axonivy.com/questions/2642/can-t-sign-up-to-axon-ivy-q-a<p>I can't sign up to Axon.ivy Q&amp;A because I do not receive a confirmation mail.</p>Alex SuterMon, 29 May 2017 05:01:50 -0400https://answers.axonivy.com/questions/2642/can-t-sign-up-to-axon-ivy-q-aquestion_and_answerReserved request parametershttps://answers.axonivy.com/questions/2586/reserved-request-parameters<p>Hi Ivy.team,</p> <p>I have a concern when trying to attach a param names "lang" to an URL. Ex: <code><a href="http://localhost:8081/ivy/pro/designer/abc/15A6EF8EF2C5F61B/start.ivp?lang=EN">http://localhost:8081/ivy/pro/designer/abc/15A6EF8EF2C5F61B/start.ivp?lang=EN</a></code></p> <p>And it returns null when extract by using <code>ivy.request.getFirstParameter("lang")</code>.</p> <p>Then, I change it to <code>"language"</code> as below. <code><a href="http://localhost:8081/ivy/pro/designer/abc/15A6EF8EF2C5F61B/start.ivp?language=EN">http://localhost:8081/ivy/pro/designer/abc/15A6EF8EF2C5F61B/start.ivp?language=EN</a></code> Now it returns value <code>EN</code> with <code>ivy.request.getFirstParameter("language")</code> as I expect.</p> <p>Is <code>lang</code> a keywork or something which couldn't use for url param?</p> <p>Asked by <a href="http://answers.axonivy.com/users/796/thienqh">@thienqh</a></p>Alex SuterFri, 21 Apr 2017 15:47:27 -0400https://answers.axonivy.com/questions/2586/reserved-request-parametersrequestPortal deploymenthttps://answers.axonivy.com/questions/2546/portal-deployment<p>I use the portal for my business processes. There is already a portal deployed as part of the engine. How should I deploy my projects which depends on the portal projects?</p> <p>Variant 1 - One Application: All projects in one application (Portal Projects / Custom Projects).</p> <p>Variant 2 - Multiple Applications: One Application for the portal and one or multiple custom applications for my custom projects? How does the user mangement works in this case?</p>Alex SuterTue, 28 Mar 2017 16:16:56 -0400https://answers.axonivy.com/questions/2546/portal-deploymentportaldeploymentAspose "Evaluation only" messagehttps://answers.axonivy.com/questions/2526/aspose-evaluation-only-message<p><img alt="Evaluation only" src="http://answers.axonivy.com/upfiles/aspose-evaluation-only.png"></p> <p>I create documents with Aspose, which is offically part of IvyAddOns. Why is on each generated document an "evaluation only" message?</p> <p>This code generates the document:</p> <pre><code>import com.aspose.words.Document; Document doc = new Document("C:\\temp\\test.docx"); doc.save("C:\\temp\\test.pdf"); </code></pre>Alex SuterFri, 24 Mar 2017 10:02:34 -0400https://answers.axonivy.com/questions/2526/aspose-evaluation-only-messageasposedocumentI can't import java.util.Date in script step, why?https://answers.axonivy.com/questions/2489/i-can-t-import-java-util-date-in-script-step-why<p><img alt="Import java.uti.date in script step" src="http://answers.axonivy.com/upfiles/import-java-util-date.png"></p> <p>I can't import java.util.Date, why?</p>Alex SuterMon, 13 Mar 2017 08:13:25 -0400https://answers.axonivy.com/questions/2489/i-can-t-import-java-util-date-in-script-step-whyivyscript