Problem Statement
When authenticating against a UMC ring server that imports groups from Microsoft Active Directory, operators on a SIMATIC HMI Unified Comfort Panel (WinCC Unified runtime) must enter the user principal as domain\\\\username (two backslashes) at the runtime login screen. A single backslash is rejected with HMI message Error 4 - Incorrect user name or password, even when the password is correct, the account is active in AD, and the user is visible in the UMC user list.
This behaviour conflicts with the convention shown throughout the WinCC Unified documentation, which only ever shows a single backslash. Because \ is the LDAP/Windows convention for separating the NetBIOS domain from the sAMAccountName (the so-called down-level logon name), almost every operator will type a single backslash by reflex and be locked out of the panel.
The same AD group, the same AD user, the same password, and the same UMC configuration authenticate without error when the user types two backslashes. The defect is therefore isolated to the UMC input field on the HMI runtime - not the UMC server, not the AD domain controller, and not the network path between them.
domain\username) will fail to log in. The card must show domain\\\\username (two backslashes) until the V19 image is deployed, otherwise the plant floor will experience a wave of access denials on the day of cutover.
Affected Hardware, Firmware, and Software
The defect sits in the WinCC Unified runtime login widget, which is generated from a JavaScript/HTML5-based runtime engine. JavaScript treats \ as an escape character in string literals; the UMC login widget is double-escaping user input on its way to the UMC REST endpoint. The table below summarises the components involved.
| Component | Model / Version | Status |
|---|---|---|
| HMI panels | SIMATIC HMI Unified Comfort series (MTP700 through MTP2200, all widescreen and 4:3 variants) | Affected |
| Engineering | TIA Portal V18 with WinCC Unified V18 add-on | Affected |
| Runtime image | WinCC Unified V18 image on the panel firmware | Affected |
| Runtime image | WinCC Unified V19 image (V19 base or V19 HSP) | Improved (verify in your cell) |
| UMC ring role | UMC ring server (master panel or RT Unified) | Not affected (server is fine) |
| Directory service | Microsoft Active Directory on Windows Server 2016 / 2019 / 2022 | Not affected (directory is fine) |
| Authentication | Kerberos + LDAP / LDAPS (port 636 recommended) | Not affected (auth path is fine) |
| Web-style runtime | HTML5 / JavaScript login widget on the HMI | Affected (this is the buggy component) |
WinCC Unified shipped with TIA Portal V16 introduced the UMC ring concept. V17 refined the AD import wizard and added the 'Automatically add users from imported groups' option. V18 is the first release in which the double-escape defect has been reported against the runtime login widget, after Siemens moved the login screen to a web-based widget in preparation for cross-platform panels. V19 (released alongside TIA Portal V19) consolidates the runtime fixes and replaces the buggy widget. Engineering and runtime versions can differ: a V18 project runs on a V19 image with a compile-time warning, but a V19 project does not run on a V18 image.
UMC and Active Directory Architecture
UMC (User Management Component) is the central user database that ships with every WinCC Unified runtime. On a Unified Comfort Panel, the UMC server runs as a system service inside the runtime operating system. When multiple panels are deployed, a UMC ring is created by nominating one panel as the UMC master; the remaining panels act as UMC clients that replicate the user database over HTTPS (port 443) and synchronise user, group, and role changes.
The ring uses a simple election protocol: each client opens an HTTPS keep-alive to the master; if the master does not respond within the heartbeat timeout (default 30 seconds), the clients run a leader election based on the lowest panel IP among the surviving ring members. The new master advertises itself on the ring, and the remaining clients reconnect. The whole handover typically completes in 60-90 seconds and the user database is preserved because every ring member maintains a local replica.
Active Directory integration in TIA Portal is configured under Runtime settings > User management > Active Directory. Three import modes are supported:
-
Import groups only (recommended): The UMC pulls an AD group (for example,
CONTOSO\Plant-Operators) and, depending on the option Automatically add users from imported groups, every user that is a member of that AD group is mirrored into the UMC user database. The UMC entry shows the down-level nameCONTOSO\jsmith(one backslash). Group-based role assignment is then done in TIA Portal: drag the imported group onto a HMI role (Operator, Administrator, etc.). - Import individual users: Single accounts are added; used for service accounts that do not belong to a group.
- Map AD groups to UMC groups: Useful when you have an existing UMC group structure to maintain. The mapping preserves AD as the source of truth for membership while UMC controls role assignment.
When an operator logs in on the HMI, the runtime flow is:
- The runtime login widget POSTs
usernameandpasswordto the local UMC REST endpoint over HTTPS (typicallyhttps://<panel>/umc/api/v1/auth/login). - UMC looks up the user in its local database to determine the source (local or AD); for AD users it then forwards the bind to the configured AD via LDAP simple bind (with LDAPS on port 636) or Kerberos/NTLM via SPNEGO (HTTP Negotiate).
- On success, UMC returns the role set; the runtime grants or denies access to the screens controlled by that role and writes an entry to the security log.
- On failure, UMC returns one of its internal error codes; the runtime maps that to an HMI-visible message (Error 4, 5, 6, etc.).
AD-imported users always carry the down-level name DOMAIN\user in the UMC database, regardless of the source principal used to bind at the Windows client. The UMC always sends the down-level form to the directory controller; if you want to support UPN logins ([email protected]), the login widget must be extended with a custom screen because the stock widget only accepts the down-level format.
Root Cause Analysis of the Double Backslash Behaviour
The WinCC Unified runtime UI is implemented in HTML5, CSS, and JavaScript. JavaScript string literals use \ as the escape character. When the login widget reads the typed username from the DOM input, it composes a JSON payload for the UMC REST endpoint, conceptually similar to:
{"username": "CONTOSO\\jsmith", "password": "********"}
The bug is that the runtime appears to interpret the user's first \ as the start of an escape sequence and then 'escapes' it again before sending the JSON to the UMC. The literal text the user types (CONTOSO\jsmith, one backslash) is therefore sent over the wire as CONTOSO\\jsmith (two backslashes after JSON string decoding), and the bind to AD fails with invalidCredentials (LDAP error 49). The UMC then maps that to its internal HMI error number Error 4 - Incorrect user name or password.
Typing two backslashes produces CONTOSO\\jsmith in the user-typed string; the runtime's over-zealous escape reduces it to CONTOSO\jsmith (one backslash), which is what AD expects. In other words, the runtime is performing one extra unescape that does not exist in the documented behaviour and does not match the user expectation of 'what I typed is what is sent.' This is consistent with a long-standing class of escape-character bugs in web-based HMIs that have to bridge plain-text operator input with a JSON/REST backend.
The defect is therefore isolated to the JavaScript login widget; the UMC server, the UMC REST API, the LDAP/LDAPS layer, and the AD domain controller all behave correctly when given a single backslash. A Wireshark capture on the engineering station filtered to tcp.port == 443 && http.request.uri contains "/umc/" will show the buggy widget sending two backslashes to /umc/api/v1/auth/login when the operator typed one, confirming the source of the problem.
domain\username (one backslash) because that is what AD ultimately receives. The double-backslash on the HMI input is purely a workaround for the runtime's over-escape; the wire format and the AD directory both expect one backslash.
Reproduction Procedure and Error Code Reference
Use the following sequence to reproduce the defect in a controlled cell. Replace CONTOSO with your NetBIOS domain name and jsmith with a real test account.
- In TIA Portal V18, open your Unified Comfort Panel project.
- Navigate to Runtime settings > User management > Active Directory.
- Configure the UMC ring server (or single panel) and import the test group
CONTOSO\Plant-Operators. - Enable Automatically add users from imported groups, compile, and download to the panel.
- Wait for the UMC sync to complete. In the runtime, the user list should show
CONTOSO\jsmith(one backslash, as expected). - On the HMI, tap the login button, type
CONTOSO\jsmith(one backslash) and the correct password. - Observe the HMI alarm line: Error 4 - Incorrect user name or password (Logon error: 180001).
- Tap login again with
CONTOSO\\jsmith(two backslashes) and the same password. The panel logs on successfully.
Cross-check the UMC diagnostic log at Control Panel > System > UMC > Diagnostic on the panel (or via the TIA Portal Online > User management view). On a clean working login you will see a single LDAP bind attempt; on the failing case you will see two bind attempts or a single bind followed by an invalidCredentials error from the AD side.
UMC Error Code Map (WinCC Unified Runtime)
| HMI Message | Internal Code | Meaning | Typical Cause |
|---|---|---|---|
| Error 4 | 180001 | Invalid user name or password | Wrong password, locked account, or the double-escape defect |
| Error 5 | 180002 | Logon not possible at this time | UMC server not reachable, ring master down |
| Error 6 | 180003 | User is locked | Too many failed attempts (default 3) |
| Error 100 | 180100 | UMC database error | Corrupt UMC database, full disk, permission issue on the ring |
| Error 200 | 180200 | Active Directory connection error | DNS, time skew, LDAPS certificate, KDC unreachable |
The Error 4 path is the one triggered by the double-escape defect. Errors 5 and 200 are network or service issues unrelated to the input field; if the panel also reports them, fix the underlying connectivity before investigating the backslash issue further.
Workaround A - Apply the Double Backslash Login Convention
The fastest operator-side workaround is to standardise on the double backslash. Because the runtime un-escapes one level, the user is effectively typing what will arrive at the AD controller. Apply these steps in order:
- Update the operator-facing quick reference card to show
domain\\\\username(two backslashes) for the runtime login. - Add a 'Login help' screen on the HMI itself (a text view with a '?' button) that shows the expected format. Include a note that operators paste or type two backslashes.
- In WinCC Unified, you can pre-fill the username field with the domain prefix using a small script in the login screen:
// WinCC Unified JavaScript (login screen, 'OnOpen' event)
var sUser = Tags('System.UserName').Read();
var sDomain = Tags('System.UMCDefaultDomain').Read();
if (sUser.length > 0 && sDomain.length > 0) {
// The runtime un-escapes one level, so pre-fill the field with two
// backslashes. The JavaScript literal for two backslashes is four.
Screen.Items('tfUser').Text = sDomain + '\\\\' + sUser;
}
Note the four backslashes in the displayed JavaScript source: the string literal '\\\\' (four backslashes between the quotes) is the string \\ (two backslash characters). The runtime then un-escapes one level during JSON composition, leaving the operator with two backslashes in the field and the wire payload with one. If you write the pre-fill script in a different style (for example with a literal double backslash inserted by a string-concatenation helper), always verify the result by reading the field's Text property back at runtime.
- Train operators to use a keyboard with a single backslash key but to press it twice. On touch panels, copy the username from the operator ID badge (which you can pre-print with two backslashes).
- If you maintain an AD-linked operator roster, print operator IDs as
domain\\\\usernamedirectly on the badge so the convention is enforced visually.
This is a workaround, not a fix. It works around the input widget defect without modifying the panel image. It is acceptable for an existing V18 deployment that cannot be re-imaged in the short term and is the recommended path during the gap between engineering freeze and V19 image rollout.
Workaround B - Update to the WinCC Unified V19 Image
Siemens regularly consolidates UMC and runtime fixes into new firmware images. A corrected login widget is reported in the WinCC Unified V19 image (TIA Portal V19 release, UMC build distributed with that image). You can deploy a V19 image on a panel that was engineered in TIA V18 - the engineering/runtime split is independent.
- Confirm the panel's current image version. On the panel, open Settings > System > About and record the image version. Typical V18 images report as 'WinCC Unified V18.0.0.x.'
-
Download the V19 image from Siemens support. The image file is a
.fwffirmware file located under the panel's product support page on the Siemens Industry Online Support portal at https://support.industry.siemens.com/. -
Place the
.fwfon a USB stick formatted as FAT32. - On the panel, open Control Panel > Service & Commissioning > Firmware Loader and select the new image.
- After the firmware update, restart the panel. The V19 image activates the new UMC build and the corrected login widget.
- Re-download your V18 project. Engineering and runtime versions do not have to match; a project built in TIA V18 will run on a V19 image, with a warning during compile ('Runtime version newer than engineering version') that you can acknowledge.
-
Test the login flow with a single backslash. If the panel now accepts
domain\usernamewithout prompting for a second backslash, the fix is active. - Roll the V19 image to all panels in the ring by repeating steps 3-5 for each one. The UMC ring will re-elect a master and replicate the existing user database.
If the issue persists on the V19 image, do not re-apply the double-backslash workaround on a V19 image; instead proceed to Workaround C and open a Siemens support request. Mixing workarounds is the most common reason a V19 image appears not to have fixed the problem.
Workaround C - Engage Siemens Technical Support
For deployments where you cannot deploy a V19 image (regulatory freeze, validation re-run, locked-down production cell), open a service request with Siemens. To get a fast resolution:
- Go to the Siemens Industry Online Support portal at https://support.industry.siemens.com/ and sign in with your Siemens customer account.
- Click My Support > Service Requests > New request (the exact label may vary by region).
- Fill in the following fields:
- Product: SIMATIC HMI Unified Comfort Panel (select the exact order number from the label on the back of the device).
- Engineering version: TIA Portal V18 Update X.
- Runtime version: WinCC Unified V18.x.y.z.
- UMC version: visible at Control Panel > System > UMC > About.
- Severity: high if operators cannot log in to the cell, medium if there is a workaround in place.
- Description: include the exact error string ('Error 4 - Incorrect user name or password'), the panel image version, the UMC ring configuration (which panel is master), the AD group name, and a description of the double-backslash behaviour.
- Attach the following artefacts:
- The compiled project archive.
- The UMC diagnostic export (UMC > Diagnostic > Export).
- A network capture of the LDAP bind attempt if you can take one with Wireshark on the engineering station.
- Submit. Siemens will assign an SR number in the format
SR-nnnnnnnnand route it to the UMC product team.
Typical resolution time is 2-4 weeks for a confirmed software bug; the fix is usually delivered as a service pack to the runtime image or as a TIA Portal HSP (Hotfix Service Pack). Make sure you are subscribed to the panel's product RSS feed on the Siemens support page so you are notified when the fix is released.
Verification and Functional Testing
After applying a workaround, run the following verification set on each panel in the ring. The sequence is intentionally non-destructive: it does not change the UMC database or the AD group, but it does exercise every code path that the bug touches.
-
Single backslash login (V19 image path): log in with
domain\usernameand confirm no error 4. If the error persists, the image update did not take; re-flash. -
Double backslash login (Workaround A path): log in with
domain\\\\usernameand confirm success. - Group-based role enforcement: log in as an operator who is a member of the imported AD group, navigate to a screen that requires the 'Operator' role, confirm access. Navigate to a screen that requires 'Administrator' and confirm the access denied dialog appears.
- User lockout: trigger three failed login attempts and confirm the account is locked (Error 6). This validates the lockout policy in UMC is not bypassed by the workaround.
- Password change: change the AD password from a Windows client, then log in on the HMI with the new password. UMC re-binds on every login, so cached credentials are not an issue, but this test confirms the bind is using fresh AD data.
- Group membership change: remove a user from the AD group, wait for the UMC sync interval (default 15 minutes; configurable under UMC > AD connection), then log in. The user should no longer be able to authenticate even with valid credentials because UMC has revoked their entry.
- UMC ring failover: shut down the UMC master panel. A client panel should take over the master role. Operators must still be able to log in. This tests that the workaround is consistent across the ring, not just on the master.
- Audit log review: on each panel, export the security log and confirm each login attempt is recorded with the operator name, timestamp, and source IP. This is required for IEC 62443 compliance audits.
If any of these fail, do not re-attempt login from the engineering station; instead open a remote desktop session (if available) into the panel and inspect the UMC log. The UMC REST API exposes the bind attempts at https://<panel>/umc/api/diagnostics, and the JSON output includes the LDAP error code that AD returned (49 = invalid credentials, 52 = insufficient rights, etc.).
Troubleshooting Matrix
| Symptom | Likely Cause | Action |
|---|---|---|
| Error 4 with single backslash, success with two | UMC login widget double-escape | Apply Workaround A or deploy V19 image (Workaround B) |
| Error 4 with both single and double backslash | Wrong password, locked account, or AD bind failing for a different reason | Check UMC > Diagnostic, confirm account not locked, verify AD password |
| Error 5 (UMC server unreachable) | UMC master down, network path broken, ring replication failing | Restart UMC service on master, check IP route, check ring client list |
| Error 200 (AD connection error) | DNS, time skew, LDAPS cert expired, KDC unreachable | Verify NTP, verify DNS, check LDAPS root CA in panel cert store, test with ldp.exe from a domain client |
| Login succeeds but role not enforced | UMC role mapping missing or wrong group assigned in TIA Portal | Check Runtime settings > User management > Roles in TIA Portal, ensure imported AD group is assigned to a HMI role |
| Login succeeds on master but fails on clients | Ring replication lagging or broken | Check ring status, force re-sync from master, check HTTPS port 443 between panels |
| UMC users not auto-populated from AD group | 'Automatically add users from imported groups' disabled, or AD bind account lacks read rights | Enable option, verify bind account has read access to user objects in the imported OU |
| HMI shows domain\\username correctly in user list but login still fails | UMC cache stale, group membership changed in AD but not yet synced | Wait one UMC sync interval (default 15 min), or force sync from TIA Portal Online > User management |
Diagnostic Procedure with the UMC REST API
For deeper investigation, the UMC exposes a REST API on the panel. From the engineering station or any host on the same network, you can query the diagnostic endpoint to confirm the exact LDAP error code returned by AD.
- Open a browser session and navigate to
https://<panel>/umc/api/diagnostics. Accept the self-signed certificate warning (or install the panel certificate into your local trust store). - Authenticate with a local administrator account on the panel.
- Look at the JSON output. Key fields are:
-
lastBindResult: the LDAP error code from the most recent bind attempt. 0 = success, 49 = invalidCredentials, 52 = insufficientAccessRights, 81 = serverDown. -
lastBindUser: the username string the panel sent to AD. If this contains two backslashes when the operator typed one, you have confirmed the double-escape defect. -
ringStatus: the replication health of the UMC ring.
-
- To get a real-time trace, enable UMC debug logging at Control Panel > System > UMC > Logging and set the log level to 'verbose'. The log file is at
/var/log/umc.logon the panel's Linux file system and can be pulled with SFTP.
For ad-hoc testing from a Windows host, the ldp.exe tool (part of the AD DS Tools) lets you bind against the same LDAP path the UMC uses. If ldp.exe binds with CONTOSO\jsmith (one backslash) and the UMC does not, the problem is definitively in the UMC login widget, not the AD. Microsoft's documentation on managing user accounts in AD is a useful cross-reference: Manage User Accounts in Active Directory Users and Computers. For background on the directory model itself, see Active Directory on Wikipedia and the Default User Accounts reference.
Hardening and Best Practices
Use the following checklist to harden a UMC + AD deployment on SIMATIC Unified Comfort Panels. These are field-proven recommendations; the order is intentional because each item depends on the previous one being in place.
- Use LDAPS, not LDAP. The UMC AD connection supports LDAP over TLS (port 636). Import the root CA of your domain into the panel's certificate store under Control Panel > Security > Certificates. Plain LDAP sends the bind password in clear text and is not acceptable for any production deployment.
- Synchronise time with NTP. Kerberos requires the time skew between the panel and the domain controller to be less than 5 minutes. Configure the panel to use the same NTP source as your domain controllers. Failure to do so produces intermittent 'kdc unreachable' errors that are easy to misdiagnose.
-
Use UPN names in scripts, down-level names in the login field. The login widget currently expects down-level names (
CONTOSO\jsmith); if you pre-fill the field from a script that stores UPNs ([email protected]), convert with a simple split on@and\join. This avoids user confusion when their Windows username is their email. - Centralise the UMC ring. Use a Unified PC (or a designated Comfort Panel in a controlled cabinet) as the UMC master. Smaller panels then act as clients and re-elect a new master if the primary goes away. This pattern is documented in the WinCC Unified system manual and reduces the chance of inconsistent user databases across the cell.
- Document the backslash convention in your SOPs. Add a one-page 'UMC login cheat sheet' to the maintenance binder. The double-backslash workaround is harmless if it is consistent; it is dangerous if half the operators type one and half type two.
- Subscribe to Siemens product notifications. The fix for this UMC defect will land in a future WinCC Unified image; the Siemens Industry Online Support portal lets you subscribe to product update notifications for each panel's order number.
- Validate after every TIA Portal upgrade. The same V18 project, compiled in V19, may behave differently because the V19 compiler writes different UMC settings to the panel. Always re-run the verification set above after a TIA version change.
-
Test with a dedicated AD service account. Avoid using a personal account for UMC-AD binding. Create
svc_umc_bindwith 'Replicating Directory Changes' rights (or a least-privilege read-only equivalent) and use it for the panel's AD connection. - Enable audit logging and ship it to a central syslog. The default ring buffers the security log on the panel; for cell-level forensics, configure the panel to forward UMC audit events to a SIEM via the standard WinCC Unified syslog channel.
- Test the failover path. At least quarterly, shut down the UMC master in a maintenance window and confirm that operators can still log in on the client panels. The double-escape workaround is consistent across the ring only if every panel has the same firmware version.
Frequently Asked Questions
Why does UMC require two backslashes in the domain\username field on my SIMATIC Unified Comfort Panel?
The WinCC Unified runtime login widget performs an extra escape on user input before sending it to the UMC REST API, so the AD bind receives domain\username (one backslash) only when the operator types two. This is a runtime defect isolated to the login widget, not the UMC server, the directory, or the network path. A corrected image is shipped with WinCC Unified V19.
Will upgrading to the V19 image fix the double backslash login bug?
In most cases, yes. The V19 image replaces the runtime login widget with a corrected build. The engineering project can stay on TIA Portal V18; only the panel image needs to be updated via the Firmware Loader. Always re-test the single-backslash login after the image update before retraining operators off the double-backslash workaround.
Can I bypass the domain prefix and just enter the username on the HMI?
Not without changing the UMC configuration. The UMC login widget always asks for domain\username when the user source is Active Directory. To drop the domain prefix, switch the UMC user source to 'Local users' and create accounts without a domain prefix. Mixed mode (local users for some accounts, AD for others) is supported but requires careful role assignment in TIA Portal under Runtime settings > User management.
Does the double backslash affect scripts and function calls that log in programmatically?
Yes. In any string literal that the runtime prepares for the login widget, you must double the backslash. In WinCC Unified JavaScript, a literal \ requires \\ in the string source. In WinCC Unified VB-style scripts, the same escaping applies. Test scripts in the runtime simulator (RT Unified) before deploying to the production panel, and remember that the panel image version determines whether the runtime un-escapes once or not at all.
How do I open a Siemens service request for this UMC bug?
Go to https://support.industry.siemens.com/, sign in, click My Support > Service Requests > New request, select the panel by its order number, fill in the TIA Portal version, the WinCC Unified runtime image version, the UMC version, attach the UMC diagnostic export and a short project archive, and submit. Siemens will assign an SR number in the format SR-nnnnnnnn and route the request to the UMC product team.