Skip to main content
Skip table of contents

Appendix

This section provides supplemental information.

Enabling Split Authentication

In a Windchill setup with Single Sign On (SSO) implemented on the master/main server and a replica server connected to it, HaloCAD has a limitation when obtaining metadata from the replica server using SSO-based authentication.

Split authentication can overcome HaloCAD's limitation in accessing REST calls from the replica server to the main server. All other activities are performed using SSO authentication or customized authentication that the customer uses, except for HaloCAD operations on the replica server.

PTC has recommended this solution, and it can be found in Knowledge Base Article CS291543. The following example shows how to configure split authentication for the HaloCAD Controller endpoint on the main server.
Follow the steps for the configuration: 

  1. Stop the Windchill and Apache servers.

  2. In the HTTPServer directory <WT_HOME>\HttpServer\conf\conf.d (for example, C:\ptc\Windchill_12.0\HTTPServer\conf\conf.d), create a new configuration file with a number higher than the existing <number>-app-Windchill-Auth.conf file. For example, if there is a file with 39-app-Windchill-Auth.conf, you can create one with 40-app-Windchill-Auth.conf.

  3. Now enter the following values into the file and save it.

    CODE
    <LocationMatch ^/+Windchill/+servlet/+HALOCADController(;.*)?>
          AuthName "Windchill"
          AuthType Basic
          AuthBasicProvider Windchill-LDAP 
          Require valid-user
    </LocationMatch>
  4. Restart the Windchill and Apache servers.

Failover Mechanism for HaloENGINE in HaloCAD for PLM

Server failover between two systems supports uninterrupted operation and service reliability in case of a breakdown. The server failover configuration is "active-standby," meaning that the primary server is "active", and the secondary server is "standby." 

HaloCAD for PLM supports connection failover between two HaloENGINEs. Here's a summary of its purpose: 

  1. High Availability: If the primary HaloENGINE fails, the secondary HaloENGINE will take over, reducing downtime and maintaining continuous operation.
    Example: Let us assume that your business process requires no downtime.
    As per the business security policy, your administrator has configured Fail-Safe Mode as Strict to block any file upload or download whenever an error occurs. If HaloENGINE encounters an unexpected issue, failure to obtain label information will prevent file download or upload. In this instance, the failover mechanism in HaloENGINE will be the ideal option for dealing with such unforeseen scenarios, with no impact on the end user. Thus, even if the primary HaloENGINE connection fails, HaloCAD recognizes the failure and instantly switches to the secondary HaloENGINE to continue providing services.
    Once the primary HaloENGINE is restored, it will be a standby for the secondary HaloENGINE. If there is any failure in the secondary HaloENGINE, the primary HaloENGINE will again take over the operations.

    Common_Failover.png

    Failover Mechanism for HaloENGINE in HaloCAD for PLM

  2. Redundancy: It provides redundancy, which means there is always another HaloENGINE ready to take over if the primary one fails. This minimizes the possibility of a single point of failure. 

  3. Data Integrity and Consistency: In the event of a failure, the failover technique can help guarantee that data is consistent and file upload/download activities are not lost, which is crucial for systems that rely on high data security. 

  Failover Mechanism Requirement 

  1. Network Infrastructure: Minimal Secondary HaloENGINE needs to be segmented so that the primary and secondary HaloENGINEs don't share the same network. 

  2. Make sure the secondary HaloENGINE has HaloENGINE service installed as well. 

  3. Data replication: Both HaloENGINEs must have the same classification profiles and rules. 

Open-source Software

Third-party software/code is included or bundled with Secude's products according to its appropriate license. Secude conducts testing to make sure the third-party products are compatible with and perform as intended with Secude applications.

The third-party libraries and dependencies used by HaloCAD for Windchill are shown in the table below.

Library

Version

Source Code

License Link

httpmime

4.5.+

https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime

http://www.apache.org/licenses/LICENSE-2.0.txt

javax.mail

1.4.1

https://mvnrepository.com/artifact/javax.mail/mail 

Common Development and Distribution License (CDDL) v1.0 https://glassfish.dev.java.net/public/CDDLv1.0.html

commons-io

2.+

https://mvnrepository.com/artifact/commons-io/commons-io

https://www.apache.org/licenses/LICENSE-2.0.txt

javax.servlet-api

3.1.+

https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api

https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html

jna

5.8.0

https://mvnrepository.com/artifact/net.java.dev.jna/jna

http://www.apache.org/licenses/LICENSE-2.0.txt
http://www.gnu.org/licenses/licenses.html

jna-platform

5.8.0

https://mvnrepository.com/artifact/net.java.dev.jna/jna-platform

http://www.apache.org/licenses/LICENSE-2.0.txt
http://www.gnu.org/licenses/licenses.html

activation

1.1.1

https://mvnrepository.com/artifact/javax.activation/activation

https://glassfish.dev.java.net/public/CDDLv1.0.html

jaxws-api

2.3.1

https://mvnrepository.com/artifact/javax.xml.ws/jaxws-api

https://github.com/javaee/jax-ws-spec/blob/master/LICENSE.md

jaxws-ri

2.3.0

https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-ri

https://oss.oracle.com/licenses/CDDL+GPL-1.1

rt

2.3.0

https://mvnrepository.com/artifact/com.sun.xml.ws/rt

https://oss.oracle.com/licenses/CDDL+GPL-1.1

stax2-api

4.0.0

https://mvnrepository.com/artifact/org.codehaus.woodstox/stax2-api

http://www.opensource.org/licenses/bsd-license.php

Open-source software

Metadata

The Windchill metadata present in the HaloENGINE is listed in the table below.

Windchill metadata

Use

server_name

Derivation from server name (FQDN of the Windchill server).

(For example, svin0007.secude.local)

user_name

Derivation from Windchill logged-in users.

(For example, John and Derek)

file_name

Derivation from the file name.

project_name

Derivation from the project name.

(For example, Windchill)

product_name

Derivation from product name (For example, Windchill).

lifecycle_template

Derivation from the lifecycle of a file. Lifecycle provides an overview of how business items develop and serves as a model for the commercialization process. The lifecycle templates may be of the following types: Approval, Basic, Default, and so on. (For example, Pipeline.prt - Default)

user_role

Derivation from user role.

(For example, Designer and Engineer)

lifecycle_state

Derivation from the lifecycle of a file. Each phase of a lifecycle template is associated with a lifecycle state. There are different kinds of lifecycle states.

  1. Approval (template): In work, under review, approved (states)

  2. Basic (template): Basic: In work, released, canceled (states)

  3. Default (template): Default: In Work, under review, released (states)

(For example, Pipeline.prt- Default-released)

security_label

Derivation from Windchill access control policy. For more details, please refer to the online PTC Windchill documentation.

(For example, Export Control, Corporate Proprietary, and Third Party Proprietary)

file_type

Derivation from file type (Creo file types and MS Office native file types).

(For example, sec, prt, asm, XLSX)

library_name

Derivation from library name.

(For example, Density, Wheel, and Pipeline)

workspace_name

Derivation from workspace.

(For example, Generic_computer and Drive System)

system_context

Derivation from the origin of the data. (For example, Generic_computer and Drive System)

preexpression_custom_pre-expression

Derivation from custom pre-expression.

  1. Yes

  2. No

Windchill metadata

Download Log Definition

This section explains the log definition for every log format that HaloENGINE supports.

What is SIEM Integration?

SIEM, which stands for Security Information and Event Management, is a comprehensive approach to managing an organization's security information and events. SIEM integration refers to the process of incorporating SIEM solutions into an organization's existing IT infrastructure to enhance its ability to monitor, detect, and respond to security incidents. To support this approach, the HaloENGINE transmits logs in JavaScript Object Notation (JSON), Log Event Extended Format (LEEF), and Common Event Format (CEF).

  1. Common Event Format is an open log management standard developed by HP ArcSight. CEF comprises a standard prefix and a variable extension that is formatted as key-value pairs. 

  2. Log Event Extended Format is a customized event format for IBM Security QRadar. LEEF comprises a LEEF header, event attributes, and an optional Syslog header. 

  3. JavaScript Object Notation is a lightweight text-based open standard designed for human-readable data interchange.

These logs are forwarded to the communications module, which transmits them to your collection server via UDP or TCP. Ideally, a SIEM (Microsoft Azure Sentinel, Splunk, RSA, and others) server would scan the received messages, sort them, and alert your security team.

HaloCAD with PLM_SIEM LOG.png

Forwarding logs

Why CEF Standard?

The CEF format is an open log management standard that simplifies log management. CEF allows third parties to create their device schemas that are compatible with a standard that is used industry-wide for normalizing security events. Technology companies and customers can use the standardized CEF format to facilitate data collection and aggregation, for later analysis by an enterprise management system. CEF is an extensible, text-based format designed to support multiple device types by offering the most relevant information. It defines the syntax for log records consisting of a standard header and a variable extension, formatted as key-value pairs. 

Syslog and CEF Header

The data is normalized and categorized into the ArcSight CEF for easy correlation and analysis. CEF uses Syslog as a transport mechanism. It uses the following format, consisting of a Syslog prefix, a header, and an extension, as shown below. If an event producer is unable to write Syslog messages, it is still possible to write the events to a file.

Prefix │ Header │[Extension]

CEF format

10:29:48.486 host CEF:Version|Device Vendor|DeviceProduct|Device Version|Signature ID|Name|Severity|[Extension]

CEF format sample

Format

Description

Example

Prefix

Syslog applies a prefix to each message, no matter which device it arrives from, that contains the date and hostname.

10:29:48.486

Header

Version is an integer and identifies the version of the CEF format. The current CEF version is 0 (CEF:0).

CEF:0

Device Vendor, Device Product, and Device Version are strings that uniquely identify the type of sending device.

|Secude|HaloCAD|6.7.0.0|

  • Device Event Class ID is a unique identifier per event-type. 

  • This can be a string or an integer. Device Event Class ID identifies the type of event reported.

100 (User download)

Extension

The Extension field contains a collection of key-value pairs. The keys are part of a predefined set.

The standard allows for including additional keys as outlined in "ArcSight Extension Dictionary”.

An event can contain any number of key-value pairs in any order, separated by spaces ("").

If a field contains a space, such as a filename, this is valid and can be logged in exactly that manner.

Secude uses only Standard Key Names from ArcSight Extension Directory and no custom extensions.

The reason for that is to avoid significant limitations custom extensions will cause.

Please refer to the following table.

CEF Header details

10:41:49.413 CEF:0|Secude|HaloCAD|6.7.0.3|100|user download|1|deviceCustomDate1Label=exportTime deviceCustomDate1=Oct 15 2024 05:03:44 UTC externalId=6AC3FE0920904D9DB8537EFA7393C87A deviceCustomDate2Label=logTime deviceCustomDate2=Oct 15 2024 05:11:49 UTC act=unblocked;labeled;protected fname=importList.txt filePath=New Product fileType=txt fsize=22 in=34895 shost=windchill123 duser=sakthi,type:WINDCHILL dst=10.41.13.21 requestClientApplication=[null] cs2Label=DataDestination cs2=[ platform\=[Windows NT], browser\=[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36], browser_version\=[null], device_type\=[null], terminal_id\=[10.41.14.61], destination_attributes\=[{ key\=[client_ip], value\=[10.41.13.21], type\=[null] }, { key\=[client_host], value\=[10.41.13.21], type\=[null] }] ] cs3Label=DataOrigin cs3=[ source_type\=[PLM], system_name\=[windchill123], client_type\=[WINDCHILL], plm_info\=[{ key\=[product_name], value\=[New Product], type\=[null] }, { key\=[system_context], value\=[New Product], type\=[null] }, { key\=[organization_name], value\=[SECUDE], type\=[null] }, { key\=[lifecycle_template], value\=[Basic], type\=[null] }, { key\=[lifecycle_state], value\=[In Work], type\=[null] }]] cs4Label=ClassifyProtectionData cs4=[ policy_id\=[d7e95033-e7f1-4218-8941-7d60d8e9cf69], policy_name\=[CADSecured], policy_type\=[company_policy], error\=[false], author\=[HaloENGINE Service] ]

CEF sample

Why LEEF Standard?

The Log Event Extended Format (LEEF) is a customized event format for IBM Security QRadar that contains readable and easily processed events for QRadar. 

Syslog and LEEF Header

The LEEF format consists of a Syslog header, a LEEF header, and event attributes. The Syslog header is an optional field. The Syslog header contains the timestamp and IPv4 address or hostname of the system that sends the event. The LEEF header is a required field for LEEF events. The LEEF header is a pipe delimited (|) set of values that identifies your software or appliance to QRadar. Event attributes identify the payload information of the event that is produced by your appliance or software. Every event attribute is a key-value pair with a tab that separates individual payload events.

Syslog Header │ LEEF Header │[Event Attributes]

LEEF format

10:45:30.771 LEEF:2.0|Secude|HaloCAD|6.7.0.3|100|^|exportTime=Oct 15 2024 05:07:26 UTC^eventName=user download^externalId=B47B422F50864D38AC54E637447C8118^logTime=Oct 15 2024 05:15:30 UTC^act=unblocked;labeled;protected^fname=importList.txt^filePath=New Product^ftype=txt^fsize=22^fdwnsize=34895^shost=windchill123^usrName=sakthi,type:WINDCHILL^dst=10.41.13.21^usrAgent=[null]^dataDestination=[ platform=[Windows NT], browser=[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36], browser_version=[null], device_type=[null], terminal_id=[10.41.14.61], destination_attributes=[ {key=[client_ip], value=[10.41.13.21], type=[null]}, {key=[client_host], value=[10.41.13.21], type=[null]} ] ]^dataOrigin=[ source_type=[PLM], system_name=[windchill123], client_type=[WINDCHILL], plm_info=[ {key=[product_name], value=[New Product], type=[null]}, {key=[system_context], value=[New Product], type=[null]}, {key=[organization_name], value=[SECUDE], type=[null]}, {key=[lifecycle_template], value=[Basic], type=[null]}, {key=[lifecycle_state], value=[In Work], type=[null]} ] ]^classifyProtectionData=[ policy_id=[d7e95033-e7f1-4218-8941-7d60d8e9cf69], policy_name=[CADSecured], policy_type=[company_policy], error=[false], author=[HaloENGINE Service] ]

LEEF sample

Format

Description

Example

Syslog Header

The Syslog header contains the timestamp.

03:44:14.061

LEEF Header

LEEF:version

An integer value that identifies the major and minor version of the LEEF format that is used for the event, for example,

LEEF:2.0|Vendor|Product|Version|EventID|

Product name

A text string that identifies the product that sends the event log to QRadar, for example, LEEF:2.0|Secude|HaloCAD|6.7.0.0|100|

Product version

A string that identifies the version of the software or appliance that sends the event log, for example,

LEEF:2.0|Secude|HaloCAD|6.7.0.0|100|

EventID

A unique identifier for an event.

Delimiter Character

Pipe Specifies an alternative delimiter to the attributes. You can use a single character or the hex value for that character. The hex value can be represented by the prefix 0x or x, followed by a series of 1-4 characters (0-9A-Fa-f).

Event Attributes

Predefined Key Entries

A set of key-value pairs that provide detailed information about the security event. Each event attribute must be separated by a tab or the delimiter character, but the order of attributes is not enforced.

LEEF Header details

Why JSON Standard?

The JSON format is a lightweight text-based interchange format used for serializing and transmitting structured data over the network connection. Furthermore, it supports Security Information and Event Management solutions (e.g., Microsoft Azure Sentinel, Splunk, etc.,) seamlessly.

JSON syntax is considered as a subset of JavaScript syntax; it includes the following: 

  1. Data is represented in name/value pairs.

  2. Curly braces hold objects and each name is followed by ':'(colon), the name/value pairs are separated by ','(comma).

  3. Square brackets hold arrays and values are separated by ','(comma).  

10:47:05.456 {"log_id":"BBB683F2EE114198B083196381598524","product":"HaloCAD","source_host":{"shost":"windchill123"},"protection":{"policy_id":"d7e95033-e7f1-4218-8941-7d60d8e9cf69","extended_tags":[],"policy_name":"CADSecured","error":false},"destination_info":{"hostname":"10.41.14.61","destination_attributes":[{"value":"10.41.13.21","key":"client_ip"},{"value":"10.41.13.21","key":"client_host"}],"destination_ip":"10.41.13.21","os":"Windows NT","recipients":[],"browser":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36","device_type":"null","browser_version":"null","user_agent":"null"},"classification":{"classification_by_system":[],"classification_by_user":[]},"version":"6.7.0.3","log_time":"Oct 15 2024 05:17:05 UTC","event_id":100,"data_origin":{"generic_info":"null","sap_info":"null","system_name":"windchill123","pre_process_info":[],"source_type":"PLM","client_type":"WINDCHILL","plm_info":[{"value":"New Product","key":"product_name"},{"value":"New Product","key":"system_context"},{"value":"SECUDE","key":"organization_name"},{"value":"Basic","key":"lifecycle_template"},{"value":"In Work","key":"lifecycle_state"}],"bi_info":"null"},"user_info":{"user_email":"HaloENGINE Service","user_type":"WINDCHILL","user_name":"sakthi"},"file_info":{"file_path":"New Product","file_name":"importList.txt","file_type":"txt","download_file_size":34895,"original_file_size":22},"action":["unblocked","labeled","protected"],"export_time":"Oct 15 2024 05:08:59 UTC","event":"user download"}

JSON sample

Uninstalling the HaloCAD Component from Windows

Once you stop using the HaloCAD component, you can uninstall it. Uninstall removes all files and registry settings that were added to your computer at the time of initial installation.

Prerequisite: Make sure to stop the Windchill Server before performing uninstallation. Otherwise, an error message will appear such as "Windchill Server instance is running. So please stop the server and retry unistallation."

  1. Click Start menu > go to Control Panel > Programs > Programs and Features Uninstall a Program > select HaloCAD for Windchill application from the list > right-click and select Uninstall option or double-click on the installer HaloCAD_Windchill_Setup.exe file.

  2. Depending on your Windows security settings, you may get a security warning as "Do you want to allow the following program to make changes to this computer?". If you get this security warning, click the Yes button to confirm that you want to uninstall the HaloCAD component.

  3. The following confirmation message will appear.

    Uninstall Message #1

  4. Click Yes to confirm that you want to remove it from the computer.

    Uninstall Message #2

    Results:

    1. The HaloCAD component has been successfully uninstalled.

    2. Click OK to close the dialog.

    3. The uninstalling process is complete.

  5. Alternate option: Remove the configuration files with the Config tool, then run the following command.

    HaloCAD_Windchill_Setup.exe -uninstall

Uninstalling the HaloCAD Component from Linux

Prerequisite: Make sure to stop the Windchill Server prior to performing uninstallation. Otherwise, an error message will appear such as "Windchill Server instance is running. So please stop the server and retry uninstallation."

  1. Run the HaloCAD Configuration Tool as mentioned in step 2.

  2. Click the More… tab, then click on the Uninstall button in the configuration tool UI.

  3. Click Apply.

  4. Results:

    1. A confirmation message dialog is displayed if the configuration is successful. Click OK on the confirmation dialog box.

    2. The HaloCAD Configuration tool UI and Terminal will automatically close.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.