Udostępnij przez


Instrukcje: nawiązywanie połączenia przy użyciu uwierzytelniania systemu Windows

Pobieranie sterownika PHP

Domyślnie sterowniki firmy Microsoft dla języka PHP dla programu SQL Server używają uwierzytelniania systemu Windows do nawiązywania połączenia z programem SQL Server. Należy pamiętać, że w większości scenariuszy oznacza to, że tożsamość procesu lub tożsamość wątku serwera sieci Web (jeśli serwer sieci Web używa personifikacji) jest używana do łączenia się z serwerem, a nie tożsamości użytkownika końcowego.

Podczas używania uwierzytelniania systemu Windows do nawiązywania połączenia z programem SQL Server należy wziąć pod uwagę następujące kwestie:

  • Poświadczenia, w ramach których działa proces (lub wątek) serwera sieci Web, muszą odpowiadać prawidłowemu logowaniu do SQL Server, aby nawiązać połączenie.

  • Jeśli program SQL Server i serwer sieci Web znajdują się na różnych komputerach, należy skonfigurować program SQL Server w celu włączenia połączeń zdalnych.

Uwaga / Notatka

Atrybuty połączenia, takie jak Baza danych i Bufor połączeń , można ustawić podczas nawiązywania połączenia. Aby uzyskać pełną listę obsługiwanych atrybutów połączenia, zobacz Opcje połączenia.

Uwierzytelnianie systemu Windows powinno być używane do nawiązywania połączenia z programem SQL Server, jeśli jest to możliwe z następujących powodów:

  • Podczas uwierzytelniania żadne poświadczenia nie są przekazywane przez sieć; nazwy użytkowników i hasła nie są osadzone w parametrach połączenia bazy danych. Oznacza to, że złośliwi użytkownicy lub osoby atakujące nie mogą uzyskać poświadczeń przez monitorowanie sieci lub wyświetlanie parametrów połączenia wewnątrz plików konfiguracji.

  • Użytkownicy podlegają scentralizowanym zarządzaniu kontami; zasady zabezpieczeń, takie jak okresy wygasania haseł, minimalna długość hasła i blokada konta po wymuszaniu wielu nieprawidłowych żądań logowania.

Jeśli uwierzytelnianie systemu Windows nie jest praktycznym rozwiązaniem, zobacz Instrukcje: nawiązywanie połączenia przy użyciu uwierzytelniania programu SQL Server.

Przykład usługi SQLSRV

Za pomocą sterownika SQLSRV wchodzącego w skład Microsoft Drivers for PHP for SQL Server, w poniższym przykładzie użyto uwierzytelniania systemu Windows do połączenia się z lokalnym wystąpieniem SQL Server. Po nawiązaniu połączenia serwer jest odpytywany pod kątem logowania użytkownika, który uzyskuje dostęp do bazy danych.

W tym przykładzie przyjęto założenie, że na komputerze lokalnym zainstalowano program SQL Server i bazę danych AdventureWorks . Wszystkie dane wyjściowe są zapisywane w przeglądarce po uruchomieniu przykładu z przeglądarki.

<?php  
/* Specify the server and connection string attributes. */  
$serverName = "(local)";  
$connectionInfo = array( "Database"=>"AdventureWorks");  
  
/* Connect using Windows Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  
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);  
?>  

przykład PDO_SQLSRV

W poniższym przykładzie użyto sterownika PDO_SQLSRV do wykonania tego samego zadania co poprzedni przykład.

<?php  
try {  
   $conn = new PDO( "sqlsrv:Server=(local);Database=AdventureWorks", NULL, NULL);   
   $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
}  
  
catch( PDOException $e ) {  
   die( "Error connecting to SQL Server" );   
}  
  
echo "Connected to SQL Server\n";  
  
$query = 'select * from Person.ContactType';   
$stmt = $conn->query( $query );   
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){   
   print_r( $row );   
}  
?>  

Zobacz też

Instrukcje: nawiązywanie połączenia przy użyciu uwierzytelniania programu SQL Server

Przewodnik programowania dla sterowników firmy Microsoft dla języka PHP dla programu SQL Server

Informacje o przykładach kodu w dokumentacji

Jak: Utworzyć login do programu SQL Server

Instrukcje: tworzenie użytkownika bazy danych

Zarządzanie użytkownikami, rolami i identyfikatorami logowania

Oddzielenie schematu użytkownika

Udziel uprawnień obiektu (Transact-SQL)