You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Kiran Ayyagari <ka...@apache.org> on 2015/06/15 04:55:06 UTC

Re: directory-kerby git commit: [DIRKRB-290]-Setup Ldap service. Contributed by Yaning.

On Mon, Jun 15, 2015 at 10:41 AM, <pl...@apache.org> wrote:

> Repository: directory-kerby
> Updated Branches:
>   refs/heads/master 9d91e2a83 -> 74afb52ae
>
>
> [DIRKRB-290]-Setup Ldap service. Contributed by Yaning.
>
>
> Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/74afb52a
> Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/74afb52a
> Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/74afb52a
>
> Branch: refs/heads/master
> Commit: 74afb52ae99f66da365f6e08089bf3f3a9717667
> Parents: 9d91e2a
> Author: plusplusjiajia <ji...@intel.com>
> Authored: Mon Jun 15 10:45:52 2015 +0800
> Committer: plusplusjiajia <ji...@intel.com>
> Committed: Mon Jun 15 10:45:52 2015 +0800
>
> ----------------------------------------------------------------------
>  kerby-backend/ldap-backend/pom.xml              | 22 +++++-
>  .../identitybackend/LdapIdentityBackend.java    | 47 +++++++++---
>  .../AbstractLdapIdentityBackendTest.java        | 55 ++++++++++++++
>  .../kerb/identity/backend/LdapBackendTest.java  | 43 -----------
>  .../backend/LdapIdentityBackendTest.java        | 79 ++++++++++++++++++++
>  5 files changed, 192 insertions(+), 54 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/74afb52a/kerby-backend/ldap-backend/pom.xml
> ----------------------------------------------------------------------
> diff --git a/kerby-backend/ldap-backend/pom.xml
> b/kerby-backend/ldap-backend/pom.xml
> index 1d0aaab..110cc0b 100644
> --- a/kerby-backend/ldap-backend/pom.xml
> +++ b/kerby-backend/ldap-backend/pom.xml
> @@ -27,7 +27,7 @@
>    <description>Ldap identity backend</description>
>
>    <properties>
> -    <ldap.api.version>1.0.0-M28</ldap.api.version>
> +    <ldap.api.version>1.0.0-M30</ldap.api.version>
>    </properties>
>
>    <dependencies>
> @@ -47,6 +47,26 @@
>        <version>${ldap.api.version}</version>
>      </dependency>
>
Kerby should only depend on api-ldap-client-api module,
rest of all LDAP modules if at all used should be under test scope.

>      <dependency>
> +      <groupId>org.apache.directory.server</groupId>
> +      <artifactId>apacheds-core-api</artifactId>
> +      <version>2.0.0-M20</version>
> +    </dependency>

+    <dependency>
> +      <groupId>org.apache.directory.server</groupId>
> +      <artifactId>apacheds-protocol-ldap</artifactId>
> +      <version>2.0.0-M20</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.apache.directory.server</groupId>
> +      <artifactId>apacheds-test-framework</artifactId>
> +      <version>2.0.0-M20</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.apache.directory.server</groupId>
> +      <artifactId>ldap-client-test</artifactId>
> +      <version>2.0.0-M20</version>
> +    </dependency>
> +    <dependency>
>        <groupId>org.apache.kerby</groupId>
>        <artifactId>kerb-identity-test</artifactId>
>        <version>${project.version}</version>
>
>
> http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/74afb52a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
> ----------------------------------------------------------------------
> diff --git
> a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
> b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
> index ab9c398..e2d3eca 100644
> ---
> a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
> +++
> b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
> @@ -19,12 +19,13 @@
>   */
>  package org.apache.kerby.kerberos.kdc.identitybackend;
>
> -import org.apache.directory.api.ldap.model.name.Dn;
> -import org.apache.directory.ldap.client.api.LdapConnection;
> +import org.apache.directory.api.ldap.model.exception.LdapException;
> +import org.apache.directory.ldap.client.api.LdapNetworkConnection;
>  import org.apache.kerby.config.Config;
>  import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
>  import
> org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
>
> +import java.io.IOException;
>  import java.util.List;
>
>  /**
> @@ -32,12 +33,13 @@ import java.util.List;
>   *
>   */
>  public class LdapIdentityBackend extends AbstractIdentityBackend {
> +    private static final String BASE_DN =
> "ou=users,dc=example,dc=com";//NOPMD
> +    private static final String ADMIN_DN = "uid=admin,ou=system";
> +    private LdapNetworkConnection connection;
>
> -    // the connection to the LDAP server
> -    // in case of ApacheDS this will be an instance of
> LdapCoreSessionConnection
> -    private LdapConnection connection; //NOPMD
> +    public LdapIdentityBackend() {
>
> -    private Dn baseDn; //NOPMD
> +    }
>
>      /**
>       * Constructing an instance using specified config that contains
> anything
> @@ -48,13 +50,39 @@ public class LdapIdentityBackend extends
> AbstractIdentityBackend {
>          setConfig(config);
>      }
>
> -    /*
> +    public void startConnection() throws LdapException {
> +        this.connection = new LdapNetworkConnection( "localhost",
> +                getConfig().getInt("port") );
> +        connection.bind( ADMIN_DN, "secret" );
> +    }
> +
> +    @Override
>      public void initialize() {
>          super.initialize();
> +        try {
> +            startConnection();
> +        } catch (LdapException e) {
> +            e.printStackTrace();
> +        }
> +    }
> +
> +    @Override
> +    public void stop() {
> +        try {
> +            closeConnection();
> +        } catch (LdapException e) {
> +            e.printStackTrace();
> +        } catch (IOException e) {
> +            e.printStackTrace();
> +        }
> +    }
>
> -        // init Ldap connection and baseDn.
> +    public void closeConnection() throws LdapException, IOException {
> +        if (this.connection.connect()) {
> +            this.connection.unBind();
> +            this.connection.close();
> +        }
>      }
> -    */
>
>      @Override
>      protected KrbIdentity doGetIdentity(String principalName) {
> @@ -83,7 +111,6 @@ public class LdapIdentityBackend extends
> AbstractIdentityBackend {
>
>      @Override
>      public List<String> getIdentities() {
> -        //TODO
>          return null;
>      }
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/74afb52a/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractLdapIdentityBackendTest.java
> ----------------------------------------------------------------------
> diff --git
> a/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractLdapIdentityBackendTest.java
> b/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractLdapIdentityBackendTest.java
> new file mode 100644
> index 0000000..924dea2
> --- /dev/null
> +++
> b/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/AbstractLdapIdentityBackendTest.java
> @@ -0,0 +1,55 @@
> +/**
> + *  Licensed to the Apache Software Foundation (ASF) under one
> + *  or more contributor license agreements.  See the NOTICE file
> + *  distributed with this work for additional information
> + *  regarding copyright ownership.  The ASF licenses this file
> + *  to you under the Apache License, Version 2.0 (the
> + *  "License"); you may not use this file except in compliance
> + *  with the License.  You may obtain a copy of the License at
> + *
> + *    http://www.apache.org/licenses/LICENSE-2.0
> + *
> + *  Unless required by applicable law or agreed to in writing,
> + *  software distributed under the License is distributed on an
> + *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + *  KIND, either express or implied.  See the License for the
> + *  specific language governing permissions and limitations
> + *  under the License.
> + *
> + */
> +package org.apache.kerby.kerberos.kerb.identity.backend;
> +
> +import org.apache.directory.server.core.api.DirectoryService;
> +import org.apache.directory.server.ldap.LdapServer;
> +
> +public abstract class AbstractLdapIdentityBackendTest extends  BackendTest
> +{
> +    /** The used DirectoryService instance */
> +    private static DirectoryService service;
> +
> +    /** The used LdapServer instance */
> +    private static LdapServer ldapServer;
> +
> +    public static DirectoryService getService()
> +    {
> +        return service;
> +    }
> +
> +
> +    public static void setService( DirectoryService service )
> +    {
> +        AbstractLdapIdentityBackendTest.service = service;
> +    }
> +
> +
> +    public static LdapServer getLdapServer()
> +    {
> +        return ldapServer;
> +    }
> +
> +    public static void setLdapServer( LdapServer ldapServer )
> +    {
> +        AbstractLdapIdentityBackendTest.ldapServer = ldapServer;
> +    }
> +
> +}
>
>
> http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/74afb52a/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapBackendTest.java
> ----------------------------------------------------------------------
> diff --git
> a/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapBackendTest.java
> b/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapBackendTest.java
> deleted file mode 100644
> index 74ac597..0000000
> ---
> a/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapBackendTest.java
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -/**
> - *  Licensed to the Apache Software Foundation (ASF) under one
> - *  or more contributor license agreements.  See the NOTICE file
> - *  distributed with this work for additional information
> - *  regarding copyright ownership.  The ASF licenses this file
> - *  to you under the Apache License, Version 2.0 (the
> - *  "License"); you may not use this file except in compliance
> - *  with the License.  You may obtain a copy of the License at
> - *
> - *    http://www.apache.org/licenses/LICENSE-2.0
> - *
> - *  Unless required by applicable law or agreed to in writing,
> - *  software distributed under the License is distributed on an
> - *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> - *  KIND, either express or implied.  See the License for the
> - *  specific language governing permissions and limitations
> - *  under the License.
> - *
> - */
> -package org.apache.kerby.kerberos.kerb.identity.backend;
> -
> -import org.apache.kerby.config.Conf;
> -import org.apache.kerby.kerberos.kdc.identitybackend.LdapIdentityBackend;
> -import org.junit.Before;
> -
> -/**
> - * Ldap backend test
> - */
> -public class LdapBackendTest extends BackendTest {
> -    private IdentityBackend backend;
> -
> -    @Before
> -    public void setup() {
> -        Conf config = new Conf();
> -        backend = new LdapIdentityBackend(config);
> -        backend.initialize();
> -    }
> -
> -    //@Test
> -    public void testGet() {
> -        super.testGet(backend);
> -    }
> -}
>
>
> http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/74afb52a/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapIdentityBackendTest.java
> ----------------------------------------------------------------------
> diff --git
> a/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapIdentityBackendTest.java
> b/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapIdentityBackendTest.java
> new file mode 100644
> index 0000000..6d500d3
> --- /dev/null
> +++
> b/kerby-backend/ldap-backend/src/test/java/org/apache/kerby/kerberos/kerb/identity/backend/LdapIdentityBackendTest.java
> @@ -0,0 +1,79 @@
> +/**
> + *  Licensed to the Apache Software Foundation (ASF) under one
> + *  or more contributor license agreements.  See the NOTICE file
> + *  distributed with this work for additional information
> + *  regarding copyright ownership.  The ASF licenses this file
> + *  to you under the Apache License, Version 2.0 (the
> + *  "License"); you may not use this file except in compliance
> + *  with the License.  You may obtain a copy of the License at
> + *
> + *    http://www.apache.org/licenses/LICENSE-2.0
> + *
> + *  Unless required by applicable law or agreed to in writing,
> + *  software distributed under the License is distributed on an
> + *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + *  KIND, either express or implied.  See the License for the
> + *  specific language governing permissions and limitations
> + *  under the License.
> + *
> + */
> +package org.apache.kerby.kerberos.kerb.identity.backend;
> +
> +import org.apache.directory.server.annotations.CreateLdapServer;
> +import org.apache.directory.server.annotations.CreateTransport;
> +import org.apache.directory.server.core.annotations.ApplyLdifs;
> +import org.apache.directory.server.core.annotations.CreateDS;
> +import org.apache.directory.server.core.annotations.CreatePartition;
> +import org.apache.directory.server.core.integ.FrameworkRunner;
> +import org.apache.kerby.config.Conf;
> +import org.apache.kerby.kerberos.kdc.identitybackend.LdapIdentityBackend;
> +import org.junit.After;
> +import org.junit.Test;
> +import org.junit.runner.RunWith;
> +
> +@RunWith(FrameworkRunner.class)
> +@CreateDS(name = "KerberosKRBProtocolTest-class",
> +        partitions =
> +                {
> +                        @CreatePartition(
> +                                name = "example",
> +                                suffix = "dc=example,dc=com")
> +                })
> +@CreateLdapServer(
> +        transports =
> +                {
> +                        @CreateTransport(protocol = "LDAP")
> +                })
> +@ApplyLdifs(
> +        {
> +                "dn: dc=example,dc=com",
> +                "objectClass: top",
> +                "objectClass: domain",
> +                "dc: example",
> +                "dn: ou=users,dc=example,dc=com",
> +                "objectClass: top",
> +                "objectClass: organizationalUnit",
> +                "ou: users"
> +        }
> +)
> +public class LdapIdentityBackendTest extends
> AbstractLdapIdentityBackendTest
> +{
> +    private LdapIdentityBackend backend;
> +
> +    @Test
> +    public void setUp() throws Exception
> +    {
> +        Conf config = new Conf();
> +        config.setInt("port", getLdapServer().getPort());
> +        this.backend = new LdapIdentityBackend(config);
> +        backend.initialize();
> +        backend.start();
> +    }
> +
> +    @After
> +    public void tearDown() throws Exception
> +    {
> +        backend.stop();
> +        backend.release();
> +    }
> +}
> \ No newline at end of file
>
>


-- 
Kiran Ayyagari
http://keydap.com