在基于 VMWare vSphere 5.5 Windows 的环境中,任何身份验证尝试都会失败(需要一些时间)。
日志中提到如下行:
ERROR [IdentityManager] Failed to find solution user
by subject DN [1.2.840.113549.1.9.1=#1612737570706f727440766d776172652e636f6d,CN=localdomain.local,OU=VMware\, Inc.,O=VMware\, Inc.] in tenant [vsphere.local]
ERROR [ServerUtils] Exception 'java.lang.IllegalStateException: More than one solution user found'
可能是什么原因?
答案1
发生了什么
不确定发生了什么,但也许完整的描述对某些人有帮助。
通常在端口 11711 上运行的 vSphere 内部 LDAP 目录最终出现了损坏的条目。这导致了奇怪的观察结果 - 可以对例如 webclient 进行身份验证,但无法在那里执行更多操作,因为它充斥着诸如“客户端未通过 VMware Inventory Service 身份验证 -https://我的服务器FQDN:10443“
解决方案
使用 LDAP 客户端(例如 LDAPAdmin)根据以下连接条件登录到服务器:
host: localhost
port: 11711
version: 3
Base: dc=vsphere,dc=local
Username: cn=Administrator,cn=Users,dc=vsphere,dc=local
Password: the one for [email protected]
导航到cn=ServicePrincipals
并检查它们vmwSTSSubjectDN
以确保它们是唯一的。不确定哪些是正确的。在其他一些安装中,我发现:
InventoryService 1.2.840.113549.1.9.1=#1612737570706f727440766d776172652e636f6d,CN=VMware default certificate,OU=InventoryService_2013.07.31_145941,O=VMware\, Inc.
vCenterServer 1.2.840.113549.1.9.1=#1612737570706f727440766d776172652e636f6d,CN=VMware default certificate,OU=vCenterServer_2013.07.31_150056,O=VMware\, Inc.
但最后部分(OU=,O=)可能由于某种原因而不同
类似问题的提示
我发现有用的是反编译 vSphere 安装中某个 JAR 中的类com.vmware.identity.idm.server.provider.vmwdirectory.VMwareDirectoryProvider
。结果发现它包含一些硬编码的 LDAP 查询,这些查询可能对 VMWare 内部 LDAP 服务器的其他故障排除有用。(出于许可原因,我最好不要将其粘贴在这里)。对于反编译第三方 Java 类,我学会了使用http://www.javadecompilers.com。CFR 的效果确实很好。