Users receive a "VMware Cloud Foundation, access denied. Access denied, unable to authenticate the user" error immediately after completing Multi-Factor Authentication (MFA) via PingFederate. This occurs in VCF Operations 9.x environments configured with SAML SSO and SCIM provisioning, specifically when utilizing multiple Active Directory domains.
com.vmware.vidm.federation.authenticator.oidc.OidcAuthenticationException: ID Token did not return expected nameld claim sAMAccountNameVMware Cloud Foundation (VCF) Operations 9.x
External Identity Provider: PingFederate
The failure results from a mismatch between the SAML assertion and the SCIM-provisioned user object. Hardcoded OGNL expressions or static parsing rules in the PingFederate configuration often truncate secondary domain suffixes during the SCIM sync. When a user logs in via SAML with a fully qualified identifier, the Identity Broker fails to match the live token against the malformed record in its database.
Follow these steps to standardize identity claims and resolve domain truncation:
1. Standardize Identity Claims to User Principal Name (UPN):
2. Update SCIM Attribute Mapping:
3. Apply Multi-Domain OGNL Expression (If applicable): Update the PingFederate Adapter Contract to handle multiple domain keys dynamically using the following logic:
#groupCnOnly = new java.util.ArrayList(),
#groups = #this.get("ds.domain1.memberOf") != null ? #this.get("ds.domain1.memberOf").getValues() : (#this.get("ds.domain2.memberOf") != null ? #this.get("ds.domain2.memberOf").getValues() : {}),
#groups.{ #group = #this, #group = new javax.naming.ldap.LdapName(#group.toString()), #cn = (#group.size() == 0) ? null : #group.getRdn(#group.size() - 1).getValue().toString(), #groupCnOnly.add(#cn) }, (#this.get("ds.domain1.memberOf") != null || #this.get("ds.domain2.memberOf") != null) ? new org.sourceid.saml20.adapter.attribute.AttributeValue(#groupCnOnly) : null4. Transition to Just-In-Time (JIT) Group Provisioning: To eliminate manual sync issues, enable JIT Provisioning in VCF SSO:
For detailed, guidance on these configuration items, see Configure VCF SSO with modern identity provider for authentication and AD/LDAP for user-group provisioning.
Successful group provisioning via AD/LDAP (syncing) does not guarantee successful Name ID claim mapping for the SSO authentication token. The Identity Provider health status appearing "green" in VCF Operations does not rule out incorrect token content or claim mapping. You may also see InvalidTokenException and Suite Token is not present in the logs when troubleshooting this issue.
Additional error found in the /var/log/vmware/vc-wsla-broker/accesscontrol-service.log:
[ValidationFailure] Header validation failed for host, value: <ENCODED_VALUE>
For this error, use KB - "Could not create indirect identity provider" when trying to configure an Identity Provider for SSO Using PingFederate Type. to check for an incomplete or missing certificate chain for the Identity Provider endpoint.