DEV Community

Ko Takagi
Ko Takagi

Posted on

2

Setup PHP development environment width LDAP

I have created a system to authenticate LDAP from PHP before.

At that time, I created a development environment with Docker, so I'll make a note of how to set it up.

The environment I used is as follows.

How to setup

open a terminal and clone LAMP+OpenLDAP Dev Docker repository.

git clone https://github.com/ko31/lamp-dev-docker.git <your-project-name>
Enter fullscreen mode Exit fullscreen mode

Create and start containers.

cd <my-project-name>
docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

Then, you can access your local website at http://localhost:8000
(The document root is the <your-project-name>/www/html directory.)

Try connecting to LDAP from PHP

To begin, make sure you have users connecting to your LDAP server.

Open phpLDAPadmin at http://localhost:8888 and click login.

Alt Text

In this container, the Login DN is cn=admin,dc=example,dc=com and the Password is password by default. Input it and click authenticate.

Alt Text

You can see that you were able to logged as an admin user.

Alt Text

Create <your-project-name>/www/html/connect.php and put the following:

<?php
// LDAP settings
const LDAP_HOST = "ldap-host";
const LDAP_PORT = 389;
const LDAP_DC = "dc=example,dc=com";
const LDAP_CN = "admin";
const LDAP_PASS = "password";

// Connect LDAP server.
$ldap_conn = ldap_connect(LDAP_HOST, LDAP_PORT);
if (!$ldap_conn) {
    exit('Could not connect to LDAP server.');
}

// Switch protocol to LDAPv3.
ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0);

// Bind to LDAP directory.
$ldap_dn = 'cn=' . LDAP_CN . ',' . LDAP_DC;
$ldap_bind = ldap_bind($ldap_conn, $ldap_dn ,LDAP_PASS);
if ($ldap_bind) {
    exit('LDAP bind successful..');
} else {
    exit('LDAP bind failed.');
}
Enter fullscreen mode Exit fullscreen mode

You can confirm a successful connection at http://localhost:8000/connect.php

Alt Text

Have fun!👍

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (4)

Collapse
 
sandeep_yadav profile image
Sandeep Yadav

Light weight Active Directory allow to connect your account using PHP. Please follow these steps to access this library. theknowledgeadda.com/how-to-connec...

Collapse
 
ko31 profile image
Ko Takagi

Thank you for sharing!

Collapse
 
saboorhamedi profile image
saboor

Great, this is my first time, I join this community.

Collapse
 
ko31 profile image
Ko Takagi

Thanks!

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay