Keresés

Új hozzászólás Aktív témák

  • creation

    senior tag

    válasz Sk8erPeter #8682 üzenetére

    <?php

    ///////////////////////////////////////////////////////// BEJELENTKEZETT USER LEKÉRÉSE ////////////////////////////////////////////////////////////////////

    $headers = apache_request_headers();
    if (!isset($headers['Authorization']))
    {
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: NTLM');
    exit;
    }

    $auth = $headers['Authorization'];

    if (substr($auth,0,5) == 'NTLM ')
    {
    $msg = base64_decode(substr($auth, 5));
    if (substr($msg, 0, 8) != "NTLMSSP\x00")die('error header not recognised');
    if ($msg[8] == "\x01")
    {
    $msg2 = "NTLMSSP\x00\x02\x00\x00\x00".
    "\x00\x00\x00\x00". // target name len/alloc
    "\x00\x00\x00\x00". // target name offset
    "\x01\x02\x81\x00". // flags
    "\x00\x00\x00\x00\x00\x00\x00\x00". // challenge
    "\x00\x00\x00\x00\x00\x00\x00\x00". // context
    "\x00\x00\x00\x00\x00\x00\x00\x00"; // target info len/alloc/offset
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: NTLM '.trim(base64_encode($msg2)));
    exit;
    }
    elseif ($msg[8] == "\x03")
    {
    function get_msg_str($msg, $start, $unicode = true)
    {
    $len = (ord($msg[$start+1]) * 256) + ord($msg[$start]);
    $off = (ord($msg[$start+5]) * 256) + ord($msg[$start+4]);
    if ($unicode)return str_replace("\0", '', substr($msg, $off, $len));
    else return substr($msg, $off, $len);
    }
    $user = get_msg_str($msg, 36);
    $domain = get_msg_str($msg, 28);
    $workstation = get_msg_str($msg, 44);
    $greetingmsg = "Üdvözlöm $user, ($domain/$workstation) <br>";

    }
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    if(($_SESSION['user'] != "") and (($_SESSION['engedely_olvas'] == "") or ($_SESSION['engedely_ir'] == "")))
    {

    /////////////////////////////////////////////////////////////// LDAP CSOPORT LEKÉRDEZÉSE //////////////////////////////////////////////////////////////////

    $ldap_server = "ldap_server_neve.domain";
    $auth_user = "Vedelem@ldap_server_neve.domain";
    $auth_pass = "Vedelem_jelszava";
    $base_dn = "OU=Accounts,OU=csoport1,OU=csoport2,OU=csoport3,OU=csoport4,DC=szervezet,DC=domain";
    $filter1 = "(&(objectCategory=user)(memberOf=cn=GG-server-Security,OU=csoport1,OU=csoport2,OU=csoport3,OU=csoport4,DC=szervezet,DC=domain))";
    $filter2 = "(&(objectCategory=user)(memberOf=cn=GG-server-SecurityServiceVedelem,OU=Groups,OU=csoport1,OU=csoport2,OU=csoport3,OU=csoport4,DC=szervezet,DC=domain))";
    // Csatlakozás az LDAP serverhez
    if (!($connect=@ldap_connect($ldap_server))) {
    die("Nem lehet csatlakozni a serverhez!");
    }
    // Bejelentkezés
    if (!($bind = ldap_bind($connect, $auth_user, $auth_pass))) {
    die("<CENTER><img src=\"img/under_construction.png\" width=\"800\"><br>Project: 001</CENTER>"); // Hibás felhasználónév
    }
    // search1 active directory
    if (!($search1 = ldap_search($connect, $base_dn, $filter1))) {
    die("Unable to search ldap server");
    }
    // search2 active directory
    if (!($search2 = ldap_search($connect, $base_dn, $filter2))) {
    die("Unable to search ldap server");
    }


    ////////////////////////////////// ADMIN CSOPORT JOGOK ÉS VIZSGÁLAT ///////////////////////////////////////////

    $info = ldap_get_entries($connect, $search1);
    //echo("GG-server-Security")."<br>";
    for ($i=0; $i<$info["count"]; $i++) {
    //echo "". $info[$i]["samaccountname"][0]."<br>";
    if($user == $info[$i]['samaccountname'][0])
    {
    $_SESSION['engedely_olvas'] = "1";
    $_SESSION['engedely_ir'] = "1";
    }
    }


    echo("<p>");


    ////////////////////////////////// VÉDELEM CSOPORT JOGOK ÉS VIZSGÁLAT ///////////////////////////////////////////

    $info = ldap_get_entries($connect, $search2);
    //echo("GG-server-SecurityServiceVedelem")."<br>";
    for ($i=0; $i<$info["count"]; $i++) {
    //echo "". $info[$i]["samaccountname"][0]."<br>";
    if($user == $info[$i]['samaccountname'][0])
    {
    $_SESSION['engedely_olvas'] = "1";
    $_SESSION['engedely_ir'] = "0";
    }
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    }

    $_SESSION['user'] = $user;


    ?>

Új hozzászólás Aktív témák