0

我们执行从企业版 Alfresco 4.2 到 5.1 的迁移。公司中有两个 Active Directory 域(主域和子域),因此我们在 Alfresco 5.1 中配置了两个 LDAP(AD) 子系统。

属性结构: /opt/tomcat7/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/ldap2 /opt/tomcat7/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/ldap1

问题是身份验证和同步仅适用于一个 ldap-ad 子系统(ldap1 或 ldap2),它们在身份验证链列表中排名第一(ldap1 和 ldap2 不能一起工作)。

认证链截图

例如,如果 ldap1 在列表中排名第一,则该用户从 ldap2 登录失败(反之亦然!)。在这种情况下,我在 alfresco.log 中查看错误:

Caused by: net.sf.acegisecurity.AuthenticationCredentialsNotFoundException: A valid SecureContext was not provided in the RequestContext 

我的属性:

/opt/tomcat7/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/ldap1/ldap-ad-authentication.properties

ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=%s@fake.local
ldap.authentication.java.naming.provider.url=ldap://fake.local:***
ldap.authentication.defaultAdministratorUserNames=fake_user
ldap.authentication.java.naming.referral=follow

ldap.synchronization.java.naming.security.principal=fake_user@fake.local
ldap.synchronization.java.naming.security.credentials=somepassword
ldap.synchronization.groupSearchBase=ou=Archiv,ou=FileServerGroups,ou=Groups,dc=fake,dc=local
ldap.synchronization.userSearchBase=dc=fake,dc=local
ldap.synchronization.groupDisplayNameAttributeName=description
ldap.synchronization.userOrganizationalIdAttributeNameCustom=distinguishedName
ldap.synchronization.com.sun.jndi.ldap.connect.pool=true

/opt/tomcat7/shared/classes/alfresco/extension/subsystems/Authentication/ldap-ad/ldap2/ldap-ad-authentication.properties

ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=%s@gss.fake.local
ldap.authentication.java.naming.provider.url=ldap://gss.fake.local:***
ldap.authentication.defaultAdministratorUserNames=fake_user
ldap.authentication.java.naming.referral=follow

ldap.synchronization.java.naming.security.principal=fake_user@fake.local
ldap.synchronization.java.naming.security.credentials=somepassword%
ldap.synchronization.groupSearchBase=ou=Archiv,ou=FileServerGroups,ou=Groups,dc=gss,dc=fake,dc=local
ldap.synchronization.userSearchBase=dc=gss,dc=fake,dc=local
ldap.synchronization.groupDisplayNameAttributeName=description
ldap.synchronization.userOrganizationalIdAttributeNameCustom=distinguishedName
ldap.synchronization.com.sun.jndi.ldap.connect.pool=true

alfresco-global.properties

### Authentication ###
#authentication.chain=ldap1:ldap-ad,ldap2:ldap-ad,alfrescoNtlm1:alfrescoNtlm
authentication.chain=alfinst:alfrescoNtlm,ldap1:ldap-ad,ldap2:ldap-ad

提前致谢!

4

1 回答 1

2

最后,我解决了与身份验证用户相关的问题。我放了空的参数字符串:

ldap.authentication.userNameFormat=

对于文件ldap-ad-authentication.properties中的每个 LDAP 子系统。

之后,来自两个 ldap 的用户可以成功登录。

ldap.authentication.userNameFormat

指定如何将用户输入的用户标识符映射到传递给 LDAP 的标识符。如果设置为空字符串(ldap 子系统的默认值),将执行涉及 ldap.synchronization.personQuery 和 ldap.synchronization.userIdAttributeName 的 LDAP 查询以动态解析来自用户 ID 的 DN。这允许对目录进行结构化,并且不需要用户 ID 出现在 DN 中。

如果设置为非空值,则此值中的子字符串 %s 将替换为输入的用户 ID,以生成传递给 LDAP 的 ID。这会将 LDAP 用户名限制为固定格式。此值的推荐格式取决于您的 LDAP 服务器。

于 2018-11-21T13:18:19.937 回答