Basic auth over HTTPS is a functional baseline but leaves significant gaps for enterprise-grade document integrations — no token expiry, no granular revocation, weak audit trails. For sensitive engineering documents, the upgrade path matters.
Authentication Layer
Windchill 11.1’s REST API supports OAuth 2.0 via PTC’s ThingWorx Navigate integration layer and through direct SSO/SAML 2.0 federation configured in Site > Security > SSO. For external system-to-system calls (non-human consumers), target the Client Credentials grant flow — it avoids user-context delegation while still producing auditable, short-lived tokens.
If your external repository is SAML-capable, configuring Windchill as a SAML SP against your IdP (ADFS, Okta, etc.) is cleaner for user-driven access. Machine accounts should use OAuth client credentials, not SAML assertions — verify your IdP supports both patterns in your version.
Key config touchpoints (verify paths in your version):
WT_HOME/codebase/WEB-INF/conf/
wt.properties → wt.federation.* for SSO config
web.xml → enforce auth filters on /servlet/WindchillAuthGW
HTTPS Enforcement
Don’t rely solely on load balancer TLS termination. Enforce at the Windchill application tier:
<!-- web.xml security constraint — add to existing constraints -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Windchill API</web-resource-name>
<url-pattern>/servlet/*</url-pattern>
<url-pattern>/api/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Also enforce HSTS headers at your reverse proxy and disable TLS 1.0/1.1 — Windchill 11.1 M030 should support TLS 1.2+ but validate your JDK configuration.
Granular Access Control
Windchill’s Policy Administration (wt.access framework) is your primary control surface. For external consumers, avoid assigning them to broad Domain policies. Instead:
- Create dedicated pseudo-user service accounts mapped per integration type
- Assign them to a restricted Policy Domain covering only the relevant Cabinet/Folder hierarchy
- Use
WTAccessControlList entries with explicit Permit rules for Read, Download — deny everything else by default
For API-level filtering, the Windchill REST Services (verify availability in 11.1 M030 vs. later updates) expose /api/v1/documents with queryable accessControlled parameters. Supplement with server-side ACL checks — never trust client-supplied document OIDs without a server-side permission validation.
Audit every API call via Windchill’s Audit Manager (wt.audit) — configure it to capture Read events, not just mutations, for documents tagged as controlled/sensitive.
Operational note from the field: the most common near-miss pattern is service accounts with Full Control on root cabinets provisioned during initial integration setup and never scoped down. Lock those accounts to minimum-necessary domain scope before go-live, and rotate credentials through your PAM solution — not static passwords in config files.
This draft is based on general Windchill knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.