Ik hoop dat er hier wat mensen zitten die ons kunnen helpen 
We hebben een ldap server draaien (onder linux) en daarop ook apache. Nu willen wij een php script schrijven die het wachtwoord kan controleren uit de database (waarvoor wij een ldif bestand gebruiken). We hebben veel gezocht op internet, maar de juiste oplossing zit er niet tussen. Ik wil dus een inlogapplicatie maken in php.
Het ldif bestand heeft de volgende indeling (ingekort):
We hebben nu een gedeelte wat waarschijnlijk niet klopt, maar tis een opzet iig.
Nu moet daarin dus een simpel formulier komen waar je gebruikersnaam en wachtwoord kunt invullen. Vervolgens moet hij dit controleren met gegevens uit de database.
Ik hoop dat jullie ons verder kunnen helpen want we zitten behoorlijk vast hierop.
edit: code tags door php tags vervangen
We hebben een ldap server draaien (onder linux) en daarop ook apache. Nu willen wij een php script schrijven die het wachtwoord kan controleren uit de database (waarvoor wij een ldif bestand gebruiken). We hebben veel gezocht op internet, maar de juiste oplossing zit er niet tussen. Ik wil dus een inlogapplicatie maken in php.
Het ldif bestand heeft de volgende indeling (ingekort):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
| dn: dc=ictbeheer,dc=nl objectClass: top objectclass: dcObject objectclass: organization dc: ictbeheer o: ictbeheer description: ICT beheers domein Saxion dn: o=ictbeheer, c=nl objectClass: top objectClass: organization o: ictbeheer description: Afdeling ICT beheer dn: cn=ictadmin,o=ictbeheer,c=nl objectClass: organizationalRole cn: ictadmin description: LDAP Directory Administrator dn: ou=TI,o=ictbeheer,c=nl ou: TI #o: ictbeheer objectClass: top objectClass: organizationalUnit description: Members of Technische Informatica dn: ou=group,o=ictbeheer,c=nl ou: group #o: ictbeheer objectClass: top objectClass: organizationalUnit description: Authorisation groups dn:ou=IT2B2,ou=TI,o=ictbeheer,c=nl ou: IT2B2 #associateddomain: IT2B2.TI.ictbeheer.nl objectClass: top objectClass: organizationalUnit description: PGO groep TI #objectClass: domainRelatedObject dn: cn=Kai xxx,ou=IT2B2,ou=TI,o=ictbeheer,c=nl ou: IT2B2 cn: Kai xxx objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson mail: kai@hotmail.com givenname: Kai xxx sn: xxx homePostalAddress: xxx l: xxx st: xxx postalcode: 3456 telephoneNumber: (800)555-1214 title: Problem manager ICT Beheerder userPassword: {SSHA}FxX5R3U/WmeKApvjxxp/3eXQKtfY2UTp uid: kai dn: cn=Mathijn xxx,ou=IT2B2,ou=TI,o=ictbeheer,c=nl ou: IT2B2 cn: Mathijn xxx objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson mail: mat@hotmail.com givenname: Mathijn sn: xxx homePostalAddress: xxx l: xxx st: xxx postalcode: xxx telephoneNumber: xxx title: CMBD manager ICT Beheerder userPassword: {SSHA}hfB0BLhEy0/zwsZucOCmtxQ2zwtPFrTJ uid: mathijn dn: cn=IT2B2-pgo,ou=group,o=ictbeheer,c=nl cn: IT2B2-pgo objectclass: groupOfNames member: cn=Kai xxx,ou=IT2B2,ou=TI,o=ictbeheer,c=nl member: cn=Mathijn xxx,ou=IT2B2,ou=TI,o=ictbeheer,c=nl |
We hebben nu een gedeelte wat waarschijnlijk niet klopt, maar tis een opzet iig.
Nu moet daarin dus een simpel formulier komen waar je gebruikersnaam en wachtwoord kunt invullen. Vervolgens moet hij dit controleren met gegevens uit de database.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| // connect to LDAP server $ldap = ldap_connect("localhost") or die("Cannot connect to the ldap server :/"); $oudc = "cn=IT2B2-pgo, dc=ictbeheer,dc=nl"; $searchdc = "dc=ictbeheer,dc=nl"; $dn2 = ""; $password = "userPassword"; $auth = false; //look up OU if (!($res = ldap_bind($ldap,$dn2,$password))) { print(ldap_error($ldap) . "<br>"); die("Could not bind to $dn"); } else { // set search critia for OU $filter = "samaccountname=".$_POST['username']; // search OU $sr = ldap_search($ldap,$searchdc,$filter); if (!$sr) { die("search failed\n"); } else { // get fields from search $info = ldap_get_entries($ldap,$sr); if ($info["count"] == 0) { $auth = false; } else { $auth = true; $user_cn = $info[0]["cn"][0]; } // disconnect from LDAP server ldap_unbind($ldap); } } if ($auth == false) { die("Could not authenticate you to the Server."); } $ldap = ldap_connect("localhost") or die("Cannot connect to AD server :/"); $oudc = "cn=IT2B2-pgo, dc=ictbeheer,dc=nl"; $dn2 = "cn=".$user_cn.", ".$oudc; $password = $_POST['password']; //look up OU if (!($res = ldap_bind($ldap,$dn2,$password))) { $login = 0; $message = "Invalid Password."; } else { $sr = ldap_search($ldap,"dc=ictbeheer,dc=nl","cn=".$user_cn); $info = ldap_get_entries($ldap,$sr); $login = 1; $message = "You have successfully logged in.<br> } |
Ik hoop dat jullie ons verder kunnen helpen want we zitten behoorlijk vast hierop.
edit: code tags door php tags vervangen
[ Voor 10% gewijzigd door matel op 22-04-2004 21:21 ]