Ankündigung

Einklappen
Keine Ankündigung bisher.

Angemeldeten User aus dem Active Directory über LDAP auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Angemeldeten User aus dem Active Directory über LDAP auslesen

    Hallo an alle,
    ich möchte ein Seite erstellen, die mir den gerade angemeldeteten User aus dem Active Directory ausliest.

    Ich habe bereits ein Skript, das eine Überprüfung aus einem Anmeldeformular mit dem gerade angemeldeten User macht, das wäre hier:

    ( Das HTML Formular login.php habe ich jetzt nicht mit angehangen)

    PHP-Code:
    <?php
    $ldap_server 
    "ldap://192.168.1.3";
    $login login_complete ($ldap_server);
    $login_complete $login["login_complete"];
    $username $login["username"];
    $passwort $login["passwort"];
    $login_check $login["login_check"];
    $connect $login["connect"];
    echo 
    $login_complete;

    if(
    $login_check==true) {

    echo 
    "Du bist: $username";

    } else {

    echo 
    "Kein Zugang";

    }



    function 
    login_complete ($ldap_server)
    {
          if((isset(
    $_COOKIE['cookie_username']) AND ($_COOKIE['cookie_passwort']))) {
                    
    $username $_COOKIE['cookie_username'];
                    
    $passwort $_COOKIE['cookie_passwort'];
                    
    $check_positive 1;
          } else {
                   if((isset(
    $_POST['username']) OR ($_POST['passwort']))) {
                             if(empty(
    $_POST['username']) OR empty($_POST['passwort'])) {
                                      
    $array["login_complete"] = "Bitte fuellen Sie alle Felder aus. <a href='login.php'>Login</a><br>";
                             } else {                             
                                      if((isset(
    $_POST['username']) AND ($_POST['passwort']))) {
                                                
    $username $_POST['username'];
                                                
    $passwort $_POST['passwort'];
                                                
    $check_positive 1;
                                      } 
                              }
                    } else {
                              
    $array["login_complete"] = "Sie sind nicht eingeloggt: ";      
                    }
          }


          
                if(
    $check_positive==1) {
          
    //----------------------------------------Login und Bind----------------------------------------      
          
    if (!($connect=@ldap_connect($ldap_server))) {
                
    $array["login_complete"] = "Could not connect to ldap server<br>";
          } else {
          }
          
          
    // Needed for W2003 AD..
          
    ldap_set_option($connectLDAP_OPT_PROTOCOL_VERSION3);
          
    ldap_set_option($connectLDAP_OPT_REFERRALS0);
          
          if (!(
    $bind=@ldap_bind($connect$username$passwort))) {
                
    $array["login_complete"] = "Login oder Passwort falsch. <a href='login.php'>Login</a><br>";
          } else {
                
    setcookie("cookie_passwort"$passworttime()+(60*60));
                
    setcookie("cookie_username"$usernametime()+(60*60));
                
    $array["login_check"] = true;
          }         
    }
                
    $array["username"] = $username;
                
    $array["passwort"] = $passwort;
                
    $array["connect"] = $connect;
                return 
    $array;
    }      

    ?>

    Wie kann ich das umprogrammieren, sodass er einfach nur aus dem Active Directory den User anzeigt, der gerade auf der Seite ist?


    Vielen Dank

    mfg
    Matze

  • #2
    Da ist dann erstmal die Frage, wie Du an die erforderlichen Daten herankommen willst/kannst.
    Der IE kann so eingestellt sein, dass die Benutzerkennung automatisch mitgesendet wird. Den Firefox kann man wohl (soweit ich weiß) auch irgendwie so einstellen.
    Aber wenn Dir diese Daten fehlen, was willst Du dann abfragen?

    Kommentar


    • #3
      Werd ich über den IE machen

      Kommentar


      • #4
        Und welchen Webserver verwendest Du? In der Kombination IIS/IE bekommst Du das sozusagen frei Haus geliefert.

        Kommentar


        • #5
          Ich benutze den XAMPP 1.6, als Webserver

          Das wäre große Klasse, wenn das klappt

          Kommentar


          • #6
            Vielleicht hilft Dir dann Accessing NTLM secured resources with PHP - ThinkPHP /dev/blog weiter.

            Kommentar


            • #7
              wie auch schon im anderen thread gesagt :

              ldap_bind($connect, $username, $passwort

              $username setzt sich zusammen aus :

              username@domainname

              sonst geht der bind auf dem ldap server nicht...

              edit : such mal nach dem ldap bind hier im forum, in dem anderen thread gabs eine ausführliche erklärung

              Kommentar


              • #8
                Hallo,
                danke für dein Tipp.

                Ich hab das mal ausprobiert, dann müsste ja der $username wie folgt ausgegeben werden Administrator@RAWOB

                PHP-Code:
                <?php
                 
                //domain infos
                $server "ldap://192.168.1.3";

                 
                 
                // connect to server
                 
                if (!($connect=@ldap_connect($server)))
                 {
                      die(
                "Keine Verbindung");
                 }
                 

                 
                 
                // bind to server
                 
                if (!($bind=@ldap_bind($connect$username$passwort))) 
                 {
                     die(
                "Fehler: bind");
                 }
                 
                 echo 
                "Hallo: $username";
                 
                 
                 
                ?>
                Klappt so aber nicht, der $username wird nicht ausgegeben.

                P.S. mit der SuFu bin ich nur auf einem anderen gestoßen, der aber auch ein Login Skript vorab hat.

                Kommentar


                • #9
                  Mache ich hier noch was falsch, tüffel schon seit einer Woche dran


                  Ist meine Syntax falsch, er soll mir doch nur meinen Benutzernamen ausgeben



                  Schönen Sonntag an alle


                  Gruß
                  Matze

                  Kommentar


                  • #10
                    Vielleicht sollten wir nochmal klären, was das Problem ist.

                    [] generell das ldap_bind
                    [] allgemein der Test auf authentifizierten Benutzer
                    [] Authentifizierung ohne vorgeschaltetes (manuelles) Login

                    Bitte Zutreffendes ankreuzen.

                    Kommentar


                    • #11
                      Zitat von David Beitrag anzeigen
                      Vielleicht sollten wir nochmal klären, was das Problem ist.

                      [] generell das ldap_bind
                      [] allgemein der Test auf authentifizierten Benutzer
                      [] Authentifizierung ohne vorgeschaltetes (manuelles) Login

                      Bitte Zutreffendes ankreuzen.
                      [] generell das ldap_bind
                      [] allgemein der Test auf authentifizierten Benutzer
                      [X] Authentifizierung ohne vorgeschaltetes (manuelles) Login

                      Er liest mir nicht den derzeitigen Benutzer aus.

                      Kommentar


                      • #12
                        Dann ist die Frage immer noch: Wo kommt diese Information her? $username wird nicht durch Magie gefüllt.
                        In der Regel muss der Browser auf irgendeine Weise verwertbare Daten bei der HTTP-Anfrage mitschicken.
                        Eine Möglichkeit ist wie gesagt beim IE eine NTLM-Authentifizierung anzufordern, auf die der IE - sofern er nicht anders konfiguriert ist- mit den entsprechenden Daten "seines" Nutzers reagieren kann.

                        Kommentar


                        • #13
                          Das heißt ich muss alle Client manuell darauf einstellen.

                          Gibt es auch eine andere Möglichkeit?

                          Kommentar


                          • #14
                            Zitat von matze-pe Beitrag anzeigen
                            Das heißt ich muss alle Client manuell darauf einstellen.
                            Das ist (glaube ich noch immer) die Voreinstellung. Außerdem lässt sich das sicherlich auch über das AD beeinflussen.

                            Eine andere Möglichkeit wären Client-Zertifikate. Die sollten sich auch über das AD verteilen lassen. Aber da musst Du einiges an Einarbeitungszeit einrechnen und/oder Dich an den AD-ADmin wenden.

                            Kommentar


                            • #15
                              Kannst du mir auch sagen, wie ich das im IE einstelle oder wie ich das AD darauf einstelle.

                              Ich danke Euch


                              schönen Sonntag noch


                              Gruß
                              Matze

                              Kommentar

                              Lädt...
                              X