Partilhar via


Como: Conectar-se usando a autenticação do Windows

Descarregar o driver PHP

Por defeito, os drivers Microsoft para PHP para SQL Server usam autenticação do Windows para se ligar ao SQL Server. É importante notar que, na maioria dos cenários, isso significa que a identidade do processo ou a identidade da thread do servidor Web (se o servidor Web estiver a usar a personificação) é utilizada para se ligar ao servidor, e não a identidade do utilizador final.

Os seguintes pontos devem ser considerados ao usar a Autenticação Windows para se ligar ao SQL Server:

  • As credenciais sob as quais o processo (ou thread) do servidor Web está a correr têm de corresponder a um login válido do SQL Server para estabelecer uma ligação.

  • Se o SQL Server e o servidor Web estiverem em computadores diferentes, o SQL Server deve ser configurado para permitir ligações remotas.

Observação

Atributos de ligação como Base de Dados e Pooling de Conexão podem ser definidos quando se estabelece uma ligação. Para uma lista completa dos atributos de ligação suportados, consulte Opções de Ligação.

A autenticação do Windows deve ser usada para se ligar ao SQL Server sempre que possível, pelas seguintes razões:

  • Nenhuma credencial é passada pela rede durante a autenticação; Nomes de utilizador e palavras-passe não estão incorporados na cadeia de ligação à base de dados. Isto significa que utilizadores maliciosos ou atacantes não podem obter as credenciais monitorizando a rede ou visualizando cadeias de ligação dentro dos ficheiros de configuração.

  • Os utilizadores estão sujeitos a gestão centralizada de contas; Políticas de segurança, como períodos de expiração das palavras-passe, comprimentos mínimos das palavras-passe e bloqueio da conta após a aplicação de múltiplos pedidos de login inválidos.

Se a Autenticação Windows não for uma opção prática, veja Como: Conectar-se Usando Autenticação SQL Server.

Exemplo de SQLSRV

Usando o driver SQLSRV dos Microsoft Drivers for PHP for SQL Server, o exemplo seguinte utiliza a Autenticação Windows para se ligar a uma instância local do SQL Server. Depois de estabelecida a ligação, o servidor é consultado para o login do utilizador que está a aceder à base de dados.

O exemplo assume que o SQL Server e a base de dados AdventureWorks estão instalados no computador local. Toda a saída é escrita no navegador quando o exemplo é executado a partir do navegador.

<?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);  
?>  

PDO_SQLSRV exemplo

O exemplo seguinte utiliza o driver PDO_SQLSRV para realizar a mesma tarefa do exemplo anterior.

<?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 );   
}  
?>  

Ver também

Como: Conectar-se usando autenticação SQL Server

Guia de Programação para os Microsoft Drivers for PHP para SQL Server

Sobre Exemplos de Código na Documentação

Como: Criar um Login no SQL Server

Como: Criar um Utilizador de Base de Dados

Gerenciando usuários, funções e logons

Separação de Esquema de Utilizador

Conceder permissões de objeto (Transact-SQL)