cancel
Showing results for 
Search instead for 
Did you mean: 

Active directory simple authentication

xalix79
Champ in-the-making
Champ in-the-making
I'm using JBoss 4.2.2 GA, alfresco alfresco-community-war-2.1.0, windows XP.

I'm trying to configure this system to make simple authentication against Active Directory through LDAP, having searching around in this forum and tried lots of suggestion, but with no success..

Here I'm going to describe what I've done, if some one can point me out.

1. Just add the following context.xml (change from the chaining-authentication-context.xml.sample) in the folder WEB-INF\classes\alfresco\


<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   
  
   
    <!– Chaining of both the services and components –>
   
    <bean id="authenticationService" class="org.alfresco.repo.security.authentication.ChainingAuthenticationServiceImpl">
        <property name="authenticationServices">
            <list>
                <ref bean="authenticationServiceImplLDAP"/>
            </list>
        </property>
        <property name="mutableAuthenticationService">
            <ref bean="authenticationServiceImplAlfresco"/>
        </property>
    </bean>
   
    <bean id="authenticationComponent" class="org.alfresco.repo.security.authentication.ChainingAuthenticationComponentImpl">
      <property name="authenticationComponents">
            <list>
                <ref bean="authenticationComponentImplLDAP"/>
            </list>
        </property>
        <property name="mutableAuthenticationComponent">
            <ref bean="authenticationComponentImplAlfresco"/>
        </property>
   </bean>
   
    <!– Alfresco Auth –>
   
    <bean id="authenticationServiceImplAlfresco" class="org.alfresco.repo.security.authentication.AuthenticationServiceImpl">
        <property name="authenticationDao">
            <ref bean="authenticationDaoAlfresco"/>
        </property>
        <property name="ticketComponent">
            <ref bean="ticketComponent"/>
        </property>
        <property name="authenticationComponent">
            <ref bean="authenticationComponentImplAlfresco"/>
        </property>
    </bean>
   
    <bean id="authenticationDaoAlfresco" class="org.alfresco.repo.security.authentication.RepositoryAuthenticationDao">
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
        <property name="dictionaryService">
            <ref bean="dictionaryService"/>
        </property>
        <property name="namespaceService">
            <ref bean="namespaceService"/>
        </property>
        <property name="searchService">
            <ref bean="searchService"/>
        </property>
        <property name="userNamesAreCaseSensitive">
            <value>${user.name.caseSensitive}</value>
        </property>
        <property name="passwordEncoder">
            <ref bean="passwordEncoder"/>
        </property>
    </bean>
   
    <bean id="authenticationComponentImplAlfresco" class="org.alfresco.repo.security.authentication.AuthenticationComponentImpl">
        <property name="authenticationDao">
            <ref bean="authenticationDaoAlfresco"/>
        </property>
        <property name="authenticationManager">
            <ref bean="authenticationManager"/>
        </property>
        <property name="allowGuestLogin">
            <value>true</value>
        </property>
    </bean>
   
    <!– LDAP –>
   
    <bean id="authenticationServiceImplLDAP" class="org.alfresco.repo.security.authentication.AuthenticationServiceImpl">
        <property name="authenticationDao">
            <ref bean="authenticationDaoLDAP"/>
        </property>
        <property name="ticketComponent">
            <ref bean="ticketComponent"/>
        </property>
        <property name="authenticationComponent">
            <ref bean="authenticationComponentImplLDAP"/>
        </property>
    </bean>
   
   <bean id="authenticationComponentImplLDAP" class="org.alfresco.repo.security.authentication.ldap.LDAPAuthenticationComponentImpl">
      <property name="LDAPInitialDirContextFactory">
         <ref bean="ldapInitialDirContextFactory"/>
      </property>
      <property name="userNameFormat">
         <!–
         
         This maps between what the user types in and what is passed through to the underlying LDAP authentication.
         
         "%s" - the user id is passed through without modification.
         Used for LDAP authentication such as DIGEST-MD5, anything that is not "simple".
         
         "cn=%s,ou=London,dc=company,dc=com" - If the user types in "Joe Bloggs" the authentricate as "cn=Joe Bloggs,ou=London,dc=company,dc=com"
         Usually for simple authentication.
         
         –>
         <value>CN=%s,OU=CC Users,DC=company,DC=com</value>
      </property>
   </bean>
   
   <!– DAO that rejects changes - LDAP is read only at the moment. It does allow users to be deleted with out warnings from the UI. –>

   <bean name="authenticationDaoLDAP" class="org.alfresco.repo.security.authentication.DefaultMutableAuthenticationDao" >
      <property name="allowDeleteUser">
         <value>true</value>
      </property>
   </bean>
   
   
   <!–
   
   This bean is used to support general LDAP authentication. It is also used to provide read only access to users and groups
   to pull them out of the LDAP reopsitory
   
   –>
   
   <bean id="ldapInitialDirContextFactory" class="org.alfresco.repo.security.authentication.ldap.LDAPInitialDirContextFactoryImpl">
      <property name="initialDirContextEnvironment">
         <map>
            <!– The LDAP provider –>
            <entry key="java.naming.factory.initial">
               <value>com.sun.jndi.ldap.LdapCtxFactory</value>
            </entry>
            
            <!– The url to the LDAP server –>
            <!– Note you can use space separated urls - they will be tried in turn until one works –>
            <!– This could be used to authenticate against one or more ldap servers (you will not know which one ….) –>
            <entry key="java.naming.provider.url">
               <value>ldap://172.16.0.10</value>
            </entry>
            
            <!– The authentication mechanism to use –>
            <!– Some sasl authentication mechanisms may require a realm to be set –>
            <!– java.naming.security.sasl.realm –>
            <!– The available options will depend on your LDAP provider –>
            <entry key="java.naming.security.authentication">
               <value>simple</value>
            </entry>
            
            <!– The id of a user who can read group and user information –>
            <!– This does not go through the pattern substitution defined above and is used "as is" –>
            <entry key="java.naming.security.principal">
            <value>CN=admin,OU=CC Users,DC=company,DC=com</value>
            </entry>
            
            <!– The password for the user defined above –>
            <entry key="java.naming.security.credentials">
               <value>mypassword</value>
            </entry>
         </map>
      </property>
   </bean>
</beans>

2. add the following code in log4j.properties


#ldap debug
log4j.logger.org.alfresco.repo.security.authentication.ldap=debug


and after deployment, I tried to login with AD user, but never succeed, what have I missed? and how can I know that alfresco did try access to AD?
4 REPLIES 4

xalix79
Champ in-the-making
Champ in-the-making
can someone please point out what did I miss to get functioning this authentication? thank you

xalix79
Champ in-the-making
Champ in-the-making
ok, the community version doesn't support chaining… Smiley Sad

major_king
Champ in-the-making
Champ in-the-making
hi xalix79,

could you fixed the problem? I also try to authenticate the users via LDAP, but atm i can't login in with AD-Account or Alfresco-Accounts Smiley Sad

pachacute
Champ in-the-making
Champ in-the-making
<entry key="java.naming.provider.url">
               <value>ldap://172.16.0.10</value>
            </entry>

i think is
<entry key="java.naming.provider.url">
               <value>ldap://172.16.0.10:389</value>
            </entry>

or
<entry key="java.naming.provider.url">
               <value>ldap://172.16.0.10:636</value>
            </entry>