Wim模型消息的跟踪日志中的Liberty登录错误 - ClassCastException Entity和LoginAccount

时间:2017-10-29 17:02:19

标签: security websphere websphere-liberty open-liberty

我已将Websphere Liberty配置为使用LDAP对用户进行身份验证。我启用了安全跟踪 -

  

com.ibm.ws.security =所有:com.ibm.ws.webcontainer.security =所有:com.ibm.oauth =所有:com.ibm。 wsspi.security.oauth20 =所有:。com.ibm.ws.transport.http =所有:org.apache.http.client =所有

我在WebSphere Liberty v17.0.0.3中启用了以下功能列表, webProfile-7.0javaMail-1.5ldapRegistry-3.0localConnector-1.0

但是,安全内容失败,错误为 HTTP 401(未经身份验证)。 在跟踪文件中,我可以看到LDAP能够返回登录的用户数据。但是WebSphere Liberty失败了,错误 -

  

com.ibm.wsspi.security.wim.model.Entity与com.ibm.wsspi.security.wim.model.LoginAccount不兼容                                    java.lang.ClassCastException:com.ibm.wsspi.security.wim.model.Entity与com.ibm.wsspi.security.wim.model.LoginAccount不兼容       at com.ibm.ws.security.wim.registry.util.SecurityNameBridge.getUserSecurityName(SecurityNameBridge.java:203)       在com.ibm.ws.security.wim.registry.WIMUserRegistry.getUserSecurityName(WIMUserRegistry.java:316)       在com.ibm.ws.security.authentication.internal.jaas.modules.ServerCommonLoginModule.getSecurityName(ServerCommonLoginModule.java:104)

如果此错误是由于任何配置问题引起的,请帮助指导。

1 个答案:

答案 0 :(得分:0)

在更正所使用的注册表配置后问题得以解决。我使用的是LDAP注册表,并将LDAP服务器类型称为Tivoli。这导致从LDAP返回的Subject类中的问题与Liberty中的预期类不匹配。将LDAP服务类型更改为“自定义”后,此错误已得到解决。下面是我在server.xml中使用的LDAP注册表的标记

<ldapRegistry baseDN="ou=xxxxxxxx,o=xxxxxx" host="xxxxxxxxxxxxxxx" id="xxxxxxxxxxx" ldapType="Custom" port="636" realm="xx" recursiveSearch="true" sslEnabled="true" sslRef="sslrepo1">
    <customFilters userFilter="(&amp;(mail=%v)(objectclass=ePerson))" userIdMap="*:mail"/>
</ldapRegistry>