none
Проблема Windows-авторизации на SQL-сервере через php_sqlsrv RRS feed

  • Вопрос

  • Здравствуйте!

    Имеется два сервера

    Srv1 (MSSQL 2008 R2 на Windows 2008 R2, режим аутентификации - смешанный);

    Srv2 (Windows 2008 R2, IIS 7.5, PHP 5.3.9RC2, php_wincache 1.1.630,php_sqlsrv 2.0.1802.200), fastcgi.impersonate = 1; аутентификация на сайте - Windows Authentication, пул приложений для сайта запущен от доменной учетной записи

    Имперсонация работает - заходя из любого места на веб-сервер на страничку с get_current_user(); я получаю правильный логин пользователя, запустившего браузер. Если же я пытаюсь соединиться с sql-сервером вот таким скриптом

     

    <?php
    $host = "************";
    $dbname = "*****";
    $connopt = array("Database"=>$dbname);
    
    $conn = sqlsrv_connect($host,$connopt);
    
    if( $conn === false )
    {
         echo "Unable to connect.</br>";
         die( print_r( sqlsrv_errors(), true));
    }
    /* Query SQL Server for the login of the user accessing the
    database. */
    $tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
    $stmt = sqlsrv_query( $conn, $tsql);
    if( $stmt === false )
    {
         echo "Error in executing query.</br>";
         die( print_r( sqlsrv_errors(), true));
    }
    
    /* Retrieve and display the results of the query. */
    $row = sqlsrv_fetch_array($stmt);
    echo "User login: ".$row[0]."</br>";
    
    /* Free statement and connection resources. */
    sqlsrv_free_stmt( $stmt);
    sqlsrv_close( $conn);
    ?>
    
    

    то я получаю сообщение о том, что логин для пользователя NT AUTHORITY\ANONYMOUS LOGON не прошел...

     

    Если открыть браузер на самом веб-сервере, то аутентификация на sql-сервере проходит и выдается учетная запись пользователя, вошедшего на сервер.

    Как решить эту проблему?

     

     


    Who wants to live forever?
    • Изменено Lumoder 11 ноября 2011 г. 6:32
    11 ноября 2011 г. 6:31

Ответы

Все ответы