Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP LDAP Anbindung

Einklappen

Neue Werbung 2019

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

  • PHP LDAP Anbindung

    Hallo zusammen habe folgendes Problem wenn ich mich mit den AD login daten anmelden will sagt er
    Unable to login: Strong(er) authentication required
    kann jemand helfen ?

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    ini_set('display_errors''On');

    define('DOMAIN_FQDN''jannik.site');
    define('LDAP_SERVER''192.168.0.64');

    if (isset(
    $_POST['submit']))
    {
        
    $user strip_tags($_POST['username']) .'@'DOMAIN_FQDN;
        
    $pass stripslashes($_POST['password']);

        
    $conn ldap_connect("ldap://"LDAP_SERVER ."/");

        if (!
    $conn)
            
    $err 'Could not connect to LDAP server';

        else
        {
            
    define('LDAP_OPT_DIAGNOSTIC_MESSAGE'0x0032);

            
    ldap_set_option($connLDAP_OPT_PROTOCOL_VERSION3);
            
    ldap_set_option($connLDAP_OPT_REFERRALS0);

            
    $bind = @ldap_bind($conn$user$pass);

            
    ldap_get_option($connLDAP_OPT_DIAGNOSTIC_MESSAGE$extended_error);

            if (!empty(
    $extended_error))
            {
                
    $errno explode(','$extended_error);
                
    $errno $errno[2];
                
    $errno explode(' '$errno);
                
    $errno $errno[2];
                
    $errno intval($errno);

                if (
    $errno == 532)
                    
    $err 'Unable to login: Password expired';
            }

            elseif (
    $bind)
            {
                
    $base_dn = array("CN=Users,DC="join(',DC='explode('.'DOMAIN_FQDN)),
                    
    "OU=Users,OU=People,DC="join(',DC='explode('.'DOMAIN_FQDN)));

                
    $result ldap_search(array($conn,$conn), $base_dn"(cn=*)");

                if (!
    count($result))
                    
    $err 'Unable to login: 'ldap_error($conn);

                else
                {
                    foreach (
    $result as $res)
                    {
                        
    $info ldap_get_entries($conn$res);

                        for (
    $i 0$i $info['count']; $i++)
                        {
                            if (isset(
    $info[$i]['userprincipalname']) AND strtolower($info[$i]['userprincipalname'][0]) == strtolower($user))
                            {
                                
    session_start();

                                
    $username explode('@'$user);
                                
    $_SESSION['foo'] = 'bar';

                                
    // set session variables...

                                
    break;
                            }
                        }
                    }
                }
            }
        }

        
    // session OK, redirect to home page
        
    if (isset($_SESSION['foo']))
        {
            
    header('Location: /');
            exit();
        }

        elseif (!isset(
    $err)) $err 'Unable to login: 'ldap_error($conn);

        
    ldap_close($conn);
    }
    ?>
    <!DOCTYPE html><head><title>Login</title></head>
    <style>
    * { font-family: Calibri, Tahoma, Arial, sans-serif; }
    .errmsg { color: red; }
    #loginbox { font-size: 12px; }
    </style>
    <body>
    <div align="center"><img id="imghdr" src="/img/logo.png" height="100" /><br><br><h2>Login</h2><br><br>

    <div style="margin:10px 0;"></div>
    <div title="Login" style="width:400px" id="loginbox">
        <div style="padding:10px 0 10px 60px">
        <form action="/ldap-test4.php" id="login" method="post">
            <table><?php if (isset($err)) echo '<tr><td colspan="2" class="errmsg">'$err .'</td></tr>'?>
                <tr>
                    <td>Login:</td>
                    <td><input type="text" name="username" style="border: 1px solid #ccc;" autocomplete="off"/></td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td><input type="password" name="password" style="border: 1px solid #ccc;" autocomplete="off"/></td>
                </tr>
            </table>
            <input class="button" type="submit" name="submit" value="Login" />
        </form>
        </div>
    </div>
    </div>
    </body></html>


  • #2
    Hach, warum googeln die Leute einfach nicht?

    Erster Google-Treffer nach "Unable to login: Strong(er) authentication required" ist:

    https://support.forcepoint.com/KBArt...ation-required

    Aha, siehe da, man braucht SASL.

    Google nach php ldap sasl:

    https://www.php.net/manual/de/functi...-sasl-bind.php

    Na da schau an, so schnell geht das.


    Warum verstümmelst du eigentlich Passwörter mit stripslashes()?

    Kommentar


    • #3
      ERROR: Module ldap_sasl_bind does not exist!

      wie bekomme ich das drauf ?

      Kommentar


      • #4
        https://www.php.net/manual/de/ldap.installation.php

        Kommentar


        • #5
          Vorab prüfen was installiert ist. Auf PHP-Seite kann dies mit

          PHP-Code:
          $ldap function_exists("ldap_bind");
          $sasl function_exists("ldap_sasl_bind");
          var_dump($ldap$sasl); 
          geprüft werden. Kommt da

          bool(false) bool(false)

          ist ldap gar nicht installiert. Aber auch diese Variante finde ich auf einigen meiner Plattformen

          bool(true) bool(false)

          LDAP ist ohne SASL Unterstützung installiert. Vermute das ist auch hier der Fall.
          PHP-Klassen auf github

          Kommentar


          • #6
            ja LDAP so ist installiert nur die SASL Unterstützung nicht
            wo finde ich das LDAP Installationsverzeichnis welches ich bei --with-ldap-sasl[=DIR] angeben muss nach dieser Anleitung
            Bei mir steht beides auf true siehe
            https://prnt.sc/rk53nu

            Kommentar


            • #7
              Schau dir den ersten Kommentar im Handbuch an: Eigentlich musst du nur die php_ldap.dll aktivieren in der php.ini
              In älteren PHP Versionen noch libsasl.dll einbinden
              Eine Mannschaft aus Granit! So wie einst Real Madrid!
              Und so zogen wir in die Bundesliga ein und wir werden wieder Deutscher Meister sein!

              Kommentar


              • #8
                Das passt was nicht:
                Das hier
                Zitat von Jannik2020 Beitrag anzeigen
                ERROR: Module ldap_sasl_bind does not exist!
                Zitat von Jannik2020 Beitrag anzeigen
                ja LDAP so ist installiert nur die SASL Unterstützung nicht
                im Gegensatz zu

                Zitat von Jannik2020 Beitrag anzeigen
                Bei mir steht beides auf true siehe [/B]https://prnt.sc/rk53nu
                Wenn der Code #5 2x true liefert dann existiert die Funktion ldap_sasl_bind und die Fehlermeldung "Module ldap_sasl_bind does not exist!" sollte dann nicht mehr kommen.

                PHP-Klassen auf github

                Kommentar


                • #9
                  ok dann muss der ursprüngliche Fehler woanders liegen nicht an dem Modul

                  Kommentar


                  • #10
                    die meldung
                    ERROR: Module ldap_sasl_bind does not exist!
                    kommt auch nicht von php
                    sondern wenn ich per a2enmod das module aktivieren möchte

                    Kommentar

                    Lädt...
                    X