cuba版本:7.1.1
ldap 版本:1.4.0
配置是:
app.properties
ldap.contextSourceUrl = ldap://XX.XX.XX.XXX:XXX
ldap.contextSourceBase = dc=XXX,dc=XXXX
ldap.contextSourceUserName = XXXX
ldap.contextSourcePassword = XXXXX
ldap.referral = follow
ldap.sessionExpiringPeriodSec = 120
ldap.userSynchronizationBatchSize = 100
ldap.userSynchronizationOnlyActiveProperty = true
ldap.cubaGroupForSynchronization = Company
ldap.cubaGroupForSynchronizationInverse = false
ldap.synchronizeCommonInfoFromLdap = true
cuba.web.standardAuthenticationUsers = admin,anonymous
web-app.properties
cuba.web.standardAuthenticationUsers = admin,anonymous
ldap.expiringSessionNotificationCron = */10 * * * * *
ldap.addonEnabled = true
ldap.expiringSessionsEnable = true
cuba.rest.standardAuthenticationEnabled = false
cuba.rest.ldap.enabled = true
cuba.rest.ldap.urls = ldap://XX.XX.XX.XXX:XXX
cuba.rest.ldap.base = dc=XXX,dc=XXXX
cuba.rest.ldap.user = XXX
cuba.rest.ldap.password = XXXX
现象:
1.先使用web页面进行ldap用户登录,可以正常登录,ldap用户正常同步到本地数据库。
再使用restpai登录用户,登录成功。
2.不使用web页面进行ldap用户登录,直接使用restpai登录用户,登录失败,提示本地没有此用户。
分析:
通过查看代码,发现两边实现方式不一致。
web侧在ldap用户登录时,会先进行ldap用户是否正确的check,然后执行dap_UserSynchronizationSchedulerService.synchronizeUsersFromLdap()方法,将ldap用户复制到本地数据库。
restapi在检查ldap用户是否正确后,不进行用户的同步,直接查找本地用户,导致登录失败。