php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.09.2004, 13:24  
Gast
 
Beiträge: n/a
Standard Windows Passwort überprüfen

HI,

Ich habe folgendes Problem. Ich habe ein Windows 2000 Netzwerk mit Domäne Controller. Nun möchte ich das ein beliebiger Domäne benutzer sein Passwort sowie seinen login Name in ein PHP Script einträgt. Nun möchte ich überprüfen ob das Passwort korrekt ist. Kennt da jemand eine möglichkeit vieleicht ja mit ldap.

Mit Freundlichen Grüssen
Manuel Fuchs
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.09.2004, 10:33  
Gast
 
Beiträge: n/a
Standard

willst du den Zugriff auf ein Verzeichnis damit kontrollieren oder was? Wenn ja dann benutz einfacht die Windows integrierte Authentifizierung. Andernfalls versteh ich den Sinn der Action nicht.
mfg
  Mit Zitat antworten
Alt 03.09.2004, 15:31  
Gast
 
Beiträge: n/a
Standard

Nein ich will den zugriff auf die seite damit steuern nur bestimmte benutzer sollen bestimmten zugriff haben, dies möchte ich über die Gruppenstriktur von Windows machen. Es funktioiert schon das ich anhand des names die AD auslese und die gruppen bestimmen in denen der user mitglied ist. Nun ist es aber noch wichtig zu testen ob das Passwort stimmt sonst könnte man sich ja einfach mit dem Name allein einlogen.

MFG
Manuel Fuchs
  Mit Zitat antworten
Alt 07.09.2004, 12:53  
Gast
 
Beiträge: n/a
Standard

Hat denn niemand so etwas schon mal gemacht. es geht einfach nur darum das Windows Passwort zu überprüfen.

MFG
Manuel Fuchs
  Mit Zitat antworten
Alt 09.09.2004, 11:34  
Neuer Benutzer
 
Registriert seit: 06.08.2003
Beiträge: 27
Logimann
Standard

hallo,
mich würde gern wissen wie du an die daten vom AD gekommen bist. ich such schon seit ner zeit ne möglichkeit, hab aber noch nix gefunden.

gruß logimann
Logimann ist offline   Mit Zitat antworten
Alt 09.09.2004, 12:51  
Gast
 
Beiträge: n/a
Standard

Das geht doch relativ einfach über LDAP. Nur das Problem ist das ich es so nicht schaffe das Passwort zu überprüfen da es nur ein Anonymus Zugang ist.
  Mit Zitat antworten
Alt 09.09.2004, 16:37  
Erfahrener Benutzer
 
Registriert seit: 17.08.2004
Beiträge: 213
carrib befindet sich auf einem aufstrebenden Ast
Standard

Hi,

ich glaub' Dein Problem zu kennen. Du kannst das Kennwort aus dem LDAP Eintrag des Benutzers nicht auslesen, allerdings kannst Du die Kombination Benutzername und Kennwort prüfen, indem Du ein ldap_bind() mit den Zugangsdaten des Benutzers durchführst. Ich habe es bereits mehrfach in Webapplications eingesetzt und es funktioniert. Du musst aber vorher sicherstellen, dass ein ldap_bind() mit Benutzernamen UND Kennwort durchgeführt wird, da, wie in meinem Fall, ein ldap_bind() nur mit dem Benutzernamen, ohne ein Kennwort auch erfolgreich verlief.

bye
José
carrib ist offline   Mit Zitat antworten
Alt 09.09.2004, 16:52  
Erfahrener Benutzer
 
Registriert seit: 17.08.2004
Beiträge: 213
carrib befindet sich auf einem aufstrebenden Ast
Standard

Ich habe das unten beschrieben Verfahren als nuSOAP Webservices realisiert. Vielleicht nützt Dir das folgende Script etwas ..
PHP-Code:
<?php

// include nuSOAP
require_once("nusoap.php");


// define LDAP settings
define("AUTH_WS_LDAP_SERVER",        "ldapserverdummy");
define("AUTH_WS_LDAP_PORT",          false);
define("AUTH_WS_LDAP_BASEDN",        "ou=People,dc=zv,dc=mmo,dc=de,o=internet");


/**
 *    authLDAPCNByUID()
 *
 *    This function will return the cn for the user
 *    identified by the UID
 *
 */
function authLDAPCNByUID($ldapUID) {
    
// initialize
    
$ldapReturn false;

    
// check if LDAP is supported by the PHP installation
    
if(function_exists("ldap_connect") &&
       
function_exists("ldap_bind") &&
       
function_exists("ldap_unbind") &&
       
function_exists("ldap_close"))
    {
        
// trim credentials
        
$ldapUID trim($ldapUID);
        
// check credentials
        
if(strlen($ldapUID)) {
            
// try to connect to LDAP
            
if(AUTH_WS_LDAP_PORT !== false) {
                
// connect with port
                
$ldapConn ldap_connect(AUTH_WS_LDAP_SERVERAUTH_WS_LDAP_PORT);
            } else {
                
// connect without port
                
$ldapConn ldap_connect(AUTH_WS_LDAP_SERVER);
            }
            if(
$ldapConn) {
                
// simple bind
                
$ldapBind ldap_bind($ldapConn);
                if(
$ldapBind) {
                    
// set list of attributes to return
                    
$ldapAttributesOnly = array("cn");
                    
// search user information
                    
$ldapSearch ldap_search($ldapConnAUTH_WS_LDAP_BASEDN"(uid={$ldapUID})"$ldapAttributesOnly);
                    
// if search was successfull
                    
if($ldapSearch !== false) {
                        
// get entries returned by search
                        
$ldapEntries ldap_get_entries($ldapConn$ldapSearch);
                        
// check if the entry for the user was found
                        
if($ldapEntries['count']) {
                            
// get attribute
                            
if($ldapEntries[0]['cn']['count'] >= 1) {
                                
$ldapReturn $ldapEntries[0]['cn'][0];
                            } else {
                                
// no cn defined
                                
$ldapReturn false;
                            }
                        } else {
                            
// no matching entry found
                            
$ldapReturn false;
                        }
                    } else {
                        
// unable to connect to LDAP server
                        
$ldapReturn = new soap_fault(5"authLDAPCNByUID""Error while processing search (uid={$ldapUID}*) - ".ldap_error().": ".ldap_err2str(ldap_error()));
                    }
                } else {
                    
// unable to connect to LDAP server
                    
$ldapReturn  = new soap_fault(4"authLDAPCNByUID""Unable to bind to LDAP Server without security credentials".ldap_error().": ".ldap_err2str(ldap_error()));
                }            
                
// bind successfully done, unbind
                
ldap_unbind($ldapConn);
                
// close connection
                // deprecated: ldap_close($ldapConn);
            
} else {
                
// unable to connect to LDAP server
                
$ldapReturn = new soap_fault(1"authLDAPCNByUID""Unable to connect to LDAP Server ".AUTH_WS_LDAP_SERVER.":".AUTH_WS_LDAP_PORT);
            }
        } else {
            
// missing credentials
            
$ldapReturn = new soap_fault(2"authLDAPCNByUID""Invalid credentials. Username and password must be givven");
        }
    } else {
        
// missing credentials
        
$ldapReturn = new soap_fault(3"authLDAPCNByUID""The server does not support access to LDAP");
    }
    
    
// return
    
return($ldapReturn);
}    



/**
 *    authLDAPUserDetailsByUID()
 *
 *    This function will return the user details for the user
 *    identified by the UID
 */
function authLDAPUserDetailsByUID($ldapUID) {
    
// initialize
    
$ldapReturn false;

    
// check if LDAP is supported by the PHP installation
    
if(function_exists("ldap_connect") &&
       
function_exists("ldap_bind") &&
       
function_exists("ldap_unbind") &&
       
function_exists("ldap_close"))
    {
        
// trim credentials
        
$ldapUID trim($ldapUID);
        
// check credentials
        
if(strlen($ldapUID)) {
            
// try to connect to LDAP
            
if(AUTH_WS_LDAP_PORT !== false) {
                
// connect with port
                
$ldapConn ldap_connect(AUTH_WS_LDAP_SERVERAUTH_WS_LDAP_PORT);
            } else {
                
// connect without port
                
$ldapConn ldap_connect(AUTH_WS_LDAP_SERVER);
            }
            if(
$ldapConn) {
                
// simple bind
                
$ldapBind ldap_bind($ldapConn);
                if(
$ldapBind) {
                    
// set list of attributes to return
                    
$ldapAttributesOnly = array("cn","mail","ou","l","userrole","firma""orgkey""corporatenetworknumber""telephonenumber""roomnumber""givenname""sn");
                    
// search user information
                    
$ldapSearch ldap_search($ldapConnAUTH_WS_LDAP_BASEDN"(uid={$ldapUID})"$ldapAttributesOnly);
                    
// if search was successfull
                    
if($ldapSearch !== false) {
                        
// get entries returned by search
                        
$ldapEntries ldap_get_entries($ldapConn$ldapSearch);
                        
//return($ldapEntries);
                        // initialize return struct
                        
$ldapReturn = array();
                        
// get all information
                        
for($attr 0$attr count($ldapAttributesOnly); $attr++) {
                            
// initialize field with empty string
                            
$ldapReturn[$ldapAttributesOnly[$attr]] = "";
                            
// get attribute
                            
if($ldapEntries[0][$ldapAttributesOnly[$attr]]['count'] >= 1) {
                                
$ldapReturn[$ldapAttributesOnly[$attr]] = $ldapEntries[0][$ldapAttributesOnly[$attr]][0];
                            }
                        }
                    } else {
                        
// unable to connect to LDAP server
                        
$ldapReturn = new soap_fault(5"authLDAPUserDetailsByUID""Error while processing search (uid={$ldapUID}*) - ".ldap_error().": ".ldap_err2str(ldap_error()));
                    }
                } else {
                    
// unable to connect to LDAP server
                    
$ldapReturn  = new soap_fault(4"authLDAPUserDetailsByUID""Unable to bind to LDAP Server without security credentials".ldap_error().": ".ldap_err2str(ldap_error()));
                }            
                
// bind successfully done, unbind
                
ldap_unbind($ldapConn);
                
// close connection
                // deprecated: ldap_close($ldapConn);
            
} else {
                
// unable to connect to LDAP server
                
$ldapReturn = new soap_fault(1"authLDAPUserDetailsByUID""Unable to connect to LDAP Server ".AUTH_WS_LDAP_SERVER.":".AUTH_WS_LDAP_PORT);
            }
        } else {
            
// missing credentials
            
$ldapReturn = new soap_fault(2"authLDAPUserDetailsByUID""Invalid credentials. Username and password must be givven");
        }
    } else {
        
// missing credentials
        
$ldapReturn = new soap_fault(3"authLDAPUserDetailsByUID""The server does not support access to LDAP");
    }
    
    
// return
    
return($ldapReturn);
}    



/**
 *    authLDAPBindCNPassword()
 *
 *    This function will check the login credentials based
 *    on cn and password of user
 *
 */
function authLDAPBindCNPassword($ldapCN$ldapPassword) {
    
// initialize
    
$ldapReturn false;

    
// check if LDAP is supported by the PHP installation
    
if(function_exists("ldap_connect") &&
       
function_exists("ldap_bind") &&
       
function_exists("ldap_unbind"))
    {
        
// trim credentials
        
$ldapCN trim($ldapCN);
        
$ldapPassword trim($ldapPassword);
        
// check credentials
        
if(strlen($ldapCN) && strlen($ldapPassword)) {
            
// try to connect to LDAP
            
if(AUTH_WS_LDAP_PORT !== false) {
                
// connect with port
                
$ldapConn ldap_connect(AUTH_WS_LDAP_SERVERAUTH_WS_LDAP_PORT);
            } else {
                
// connect without port
                
$ldapConn ldap_connect(AUTH_WS_LDAP_SERVER);
            }
            if(
$ldapConn) {
                
// create rdn
                
$ldapRdn "cn={$ldapCN},".AUTH_WS_LDAP_BASEDN;
                
// try to bind
                
$ldapBind ldap_bind($ldapConn$ldapRdn$ldapPassword);
                if(
$ldapBind) {
                    
// bind successfully done, unbind
                    
ldap_unbind($ldapConn);
                    
$ldapReturn true;
                } else {
                    
// unable to bind with givven credentials
                    
$ldapReturn false;
                }            
            } else {
                
// unable to connect to LDAP server
                
$ldapReturn = new soap_fault(1"authLDAPBindCNPassword""Unable to connect to LDAP Server ".AUTH_WS_LDAP_SERVER.":".AUTH_WS_LDAP_PORT);
            }
        } else {
            
// missing credentials
            
$ldapReturn = new soap_fault(2"authLDAPBindCNPassword""Invalid credentials. Username and password must be givven");
        }
    } else {
        
// missing credentials
        
$ldapReturn = new soap_fault(3"authLDAPBindCNPassword""The server does not support access to LDAP");
    }
    
    
// return
    
return($ldapReturn);
}    



/**
 *    authLDAPAuthUser()
 *
 *    This function will check the login credentials
 *    based on uid and password of user
 *
 */
function authLDAPAuthUser($ldapUID$ldapPassword) {
    
// initialize
    
$ldapReturn false;

    
// trim credentials
    
$ldapUID trim($ldapUID);
    
$ldapPassword trim($ldapPassword);
    
// check credentials
    
if(strlen($ldapUID) && strlen($ldapPassword)) {
        
// determin CN of user
        
$ldapCN authLDAPCNByUID($ldapUID);
        if(
is_string($ldapCN)) {
            
// try to bind with user credentials
            
$ldapReturn authLDAPBindCNPassword($ldapCN$ldapPassword);
        } else {
            
// no CN for user found
            
$ldapReturn false;
        }
    } else {
        
// missing credentials
        
$ldapReturn = new soap_fault(3"authLDAPAuthUser""Invalid credentials. UID and password must be givven");
    }
    
    
// return
    
return($ldapReturn);
}    


// create global SOAP server instance
$authSOAPServer = new soap_server();

// register service
$authSOAPServer->register("authLDAPCNByUID");
$authSOAPServer->register("authLDAPBindCNPassword");
$authSOAPServer->register("authLDAPAuthUser");
$authSOAPServer->register("authLDAPUserDetailsByUID");

// serve request
$authSOAPServer->service($HTTP_RAW_POST_DATA);


?>
Die Funktionen kannst Du Dir ja hinbiegen, falls Du nicht via SOAP zugreifen möchtest. Die Prüfung der Zugangsdaten kannst Du dann mittels
PHP-Code:
<?php

if(authLDAPAuthUser("uname""geheim") === true) {
  
// passt ...
}

?>
durchführen.

Unter Umständen ist noch hier und da eine Anpassung notwendig, dürfte aber als Leitfaden reichen.

Viel Erfolg
José
carrib ist offline   Mit Zitat antworten
Alt 10.09.2004, 12:54  
Gast
 
Beiträge: n/a
Standard

Erst mal vielen dank für deine Hilfe carrib. Werde es mal testen. Aber könntest du mir nochh sagen was SOAP ist ?? Danke

MFG
Manuel Fuchs
  Mit Zitat antworten
Alt 10.09.2004, 14:21  
Gast
 
Beiträge: n/a
Standard

So habe das ganze jetzte ein wenig umgeschreiben so das ich es leichter verstehe. Es funktioniert das man anhand des login Namens BSP: fux
die CN bekommt dc= Manuel Fuchs nur schlägt das binden jedesmal fehl mit
Warning: LDAP: Unable to bind to server: Invalid credentials in c:\homepages\institut\bibliotheken\php_libLdap.php on line 86

Hast du eien Idee vo der fehler liegen könnte ???
MFG
Manuel Fuchs
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit IE7 und transparentem Hintergrund oschmidt HTML, Usability und Barrierefreiheit 15 04.05.2007 20:47
bildanzeige bei falschem passwort chrissie PHP Tipps 2006 1 22.08.2006 15:37
Frage zu Windows Server 2003 b++ Off-Topic Diskussionen 1 03.03.2006 09:41
Eingabefenster für Passwort Nevermind PHP Tipps 2007 10 18.12.2005 15:36
[Erledigt] browsererkennung; wie kann man einen firefox von... PHP Tipps 2005-2 17 25.07.2005 22:35
[Erledigt] Passwort und Nutzerverwaltung in Php und Mysql PHP Tipps 2005-2 7 23.06.2005 17:46
3 Seiten durch Passwort schützen mit einmaliger PW-Eingabe? PHP Tipps 2005 12 19.04.2005 22:41
Festplatten-, Windows, PartitionMagic, SuSE-Linux - Problem Quadaptor Off-Topic Diskussionen 14 09.04.2005 19:01
Windows Authentifizierung und Passwort auslesen PHP-Fortgeschrittene 3 15.03.2005 16:42
Passwort geschützte Seite - PHP ohne MySQL PHP Tipps 2004-2 3 29.12.2004 18:26
Mit PHP Windows Passwort aendern? PHP-Fortgeschrittene 4 28.11.2004 00:42
[Erledigt] Passwort vergessen-Script PHP Tipps 2004-2 8 11.11.2004 18:56
Passwort übergeben duerov PHP Tipps 2004 5 27.09.2004 09:41
Passwort verschlüsselung Datenbanken 5 06.09.2004 10:31
benutzername + passwort pruefen PHP Tipps 2004 4 07.07.2004 16:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
while(1);{\errors\: \da stimmt doch was nicht.\, \success\: false}, ldap passwort prÜfen, passwort kontrollieren, passwort überprüfen windows, http://www.php.de/php-fortgeschrittene/8199-windows-passwort-ueberpruefen.html, windows passwort prüfen, kennwort überprüfen, unable to bind to server: invalid credentials, php windows credentials, ldap server invalid credentials php windows, php überprüfen welcher user an windows, windows login passwort prüfen, windows server passwort überprüfen, php passwort prüfen über ldap, php5 ldap_search password, ewas ldap search uid, ad benutzer passwort überprüfen, active directory benutzer kennwort prüfen, passwort prüfen php, ldap prüfen credentials

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.