在Alfresco 5.1

时间:2018-10-10 11:37:56

标签: alfresco alfresco-enterprise

我们执行从企业版本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不能一起使用)。

Authentication chain screenshot

例如,如果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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

ldap.authentication.userNameFormat=

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

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

  

ldap.authentication.userNameFormat

     

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

     

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