Megosztás:


Csatlakozás Microsoft Entra-hitelesítéssel

PHP-illesztőprogram letöltése

A Microsoft Entra ID egy központi felhasználói azonosítókezelési technológia, amely az SQL Server-hitelesítés alternatívaként működik. A Microsoft Entra ID lehetővé teszi az Azure SQL Database-hez, a felügyelt Azure SQL-példányhoz és az Azure Synapse Analyticshez való kapcsolódást összevont identitásokkal a Microsoft Entra ID-ban felhasználónév és jelszó, Integrált Windows-hitelesítés vagy Microsoft Entra hozzáférési jogkivonat használatával. Az SQL Server PHP-illesztőprogramjai részleges támogatást nyújtanak ezekhez a funkciókhoz.

A Microsoft Entra-hitelesítés használatához konfigurálnia és kezelnie kell a Microsoft Entra-hitelesítést az Azure SQL-vel.

A Microsoft Entra-azonosító használatához használja a hitelesítés vagy az AccessToken kulcsszavakat (ezek kölcsönösen kizárják egymást), ahogyan az az alábbi táblázatban látható. További technikai részletekért tekintse meg a Microsoft Entra ID és az ODBC-illesztőprogram használatát.

Keyword Értékek Description
AccessToken Nincs beállítva (alapértelmezett) Más kulcsszavak által meghatározott hitelesítési mód. További információ: Kapcsolati beállítások.
Bytesorozat OAuth JSON-válaszból kinyert Microsoft Entra hozzáférési jogkivonat. A kapcsolati sztring nem tartalmazhat felhasználói azonosítót, jelszót vagy kulcsszót Authentication (linuxos vagy macOS rendszeren az ODBC-illesztőprogram 17-es vagy újabb verzióját igényli).
Authentication Nincs beállítva (alapértelmezett) Más kulcsszavak által meghatározott hitelesítési mód. További információ: Kapcsolati beállítások.
SqlPassword Közvetlenül hitelesíthet egy SQL Server-példányt (amely lehet Azure-példány) felhasználónévvel és jelszóval. A felhasználónevet és a jelszót a UID és a PWD kulcsszavak használatával kell továbbítani a kapcsolati sztringbe.
ActiveDirectoryPassword Hitelesítés Microsoft Entra-identitással felhasználónévvel és jelszóval. A felhasználónevet és a jelszót a UID és a PWD kulcsszavak használatával kell továbbítani a kapcsolati sztringbe.
ActiveDirectoryMsi A Microsoft Entra rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitás használatával történő hitelesítés (az ODBC-illesztőprogram 17.3.1.1-es vagy újabb verziójára van szükség). Az áttekintést és az oktatóanyagokat az Azure-erőforrások felügyelt identitásai című témakörben tekintheti meg.
ActiveDirectoryServicePrincipal Hitelesítés szolgáltatásnév-objektumokkal (az ODBC-illesztőprogram 17.7-es vagy újabb verzióját igényli). További részletekért és példákért tekintse meg a Microsoft Entra ID alkalmazás- és szolgáltatásnév-objektumait.

A hitelesítési kulcsszó hatással van a kapcsolat biztonsági beállításaira. Ha a kapcsolati sztringben van beállítva, akkor alapértelmezés szerint a Titkosítás kulcsszó igaz értékre van állítva, ami azt jelenti, hogy az ügyfél titkosítást kér. Ezenkívül a kiszolgálótanúsítványt a titkosítási beállítástól függetlenül érvényesítjük, kivéve, ha az TrustServerCertificate értéke igaz (alapértelmezés szerint hamis ). Ez a funkció különbözik a régi, kevésbé biztonságos bejelentkezési módszertől, amelyben a kiszolgálótanúsítvány csak akkor lesz érvényesítve, ha a kapcsolati sztringben kifejezetten titkosítást kérnek.

Korlátozások

Windows rendszeren a mögöttes ODBC-illesztő még egy értéket támogat az ActiveDirectoryIntegratedhitelesítési kulcsszóhoz, de a PHP-illesztőprogramok semmilyen platformon nem támogatják ezt az értéket.

Példa – csatlakozás sqlPassword és ActiveDirectoryPassword használatával

<?php
// First connect to a local SQL Server instance by setting Authentication to SqlPassword
$serverName = "myserver.mydomain";

$connectionInfo = array("UID"=>$myusername, "PWD"=>$mypassword, "Authentication"=>'SqlPassword');

$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
    echo "Could not connect with Authentication=SqlPassword.\n";
    print_r(sqlsrv_errors());
} else {
    echo "Connected successfully with Authentication=SqlPassword.\n";
    sqlsrv_close($conn);
}

// Now connect to an Azure SQL database by setting Authentication to ActiveDirectoryPassword
$azureServer = "myazureserver.database.windows.net";
$azureDatabase = "myazuredatabase";
$azureUsername = "myuid";
$azurePassword = "<password>";
$connectionInfo = array("Database"=>$azureDatabase,
                        "UID"=>$azureUsername,
                        "PWD"=>$azurePassword,
                        "Authentication"=>'ActiveDirectoryPassword');

$conn = sqlsrv_connect($azureServer, $connectionInfo);
if ($conn === false) {
    echo "Could not connect with Authentication=ActiveDirectoryPassword.\n";
    print_r(sqlsrv_errors());
} else {
    echo "Connected successfully with Authentication=ActiveDirectoryPassword.\n";
    sqlsrv_close($conn);
}

?>

Példa – csatlakozás az PDO_SQLSRV illesztőprogram használatával

<?php
// First connect to a local SQL Server instance by setting Authentication to SqlPassword
$serverName = "myserver.mydomain";

$connectionInfo = "Database = $databaseName; Authentication = SqlPassword;";

try {
    $conn = new PDO("sqlsrv:server = $serverName ; $connectionInfo", $myusername, $mypassword);
    echo "Connected successfully with Authentication=SqlPassword.\n";
    $conn = null;
} catch (PDOException $e) {
    echo "Could not connect with Authentication=SqlPassword.\n";
    print_r($e->getMessage());
    echo "\n";
}

// Now connect to an Azure SQL database by setting Authentication to ActiveDirectoryPassword
$azureServer = "myazureserver.database.windows.net";
$azureDatabase = "myazuredatabase";
$azureUsername = "myuid";
$azurePassword = "<password>";
$connectionInfo = "Database = $azureDatabase; Authentication = ActiveDirectoryPassword;";

try {
    $conn = new PDO("sqlsrv:server = $azureServer ; $connectionInfo", $azureUsername, $azurePassword);
    echo "Connected successfully with Authentication=ActiveDirectoryPassword.\n";
    unset($conn);
} catch (PDOException $e) {
    echo "Could not connect with Authentication=ActiveDirectoryPassword.\n";
    print_r($e->getMessage());
    echo "\n";
}
?>

Példa – csatlakozás a Microsoft Entra hozzáférési jogkivonatával

SQLSRV-illesztő

<?php
// Using an access token to connect: do not use UID or PWD connection options
// Assume $accToken is the valid byte string extracted from an OAuth JSON response
$connectionInfo = array("Database"=>$azureAdDatabase, "AccessToken"=>$accToken);
$conn = sqlsrv_connect($azureAdServer, $connectionInfo);
if ($conn === false) {
    echo "Could not connect with Azure AD Access Token.\n";
    print_r(sqlsrv_errors());
} else {
    echo "Connected successfully with Azure AD Access Token.\n";
    sqlsrv_close($conn);
}
?>

PDO_SQLSRV illesztőprogram

<?php
try {
    // Using an access token to connect: do not pass in $uid or $pwd
    // Assume $accToken is the valid byte string extracted from an OAuth JSON response
    $connectionInfo = "Database = $azureAdDatabase; AccessToken = $accToken;";
    $conn = new PDO("sqlsrv:server = $azureAdServer; $connectionInfo");
    echo "Connected successfully with Azure AD Access Token\n";
    unset($conn);
} catch (PDOException $e) {
    echo "Could not connect with Azure AD Access Token.\n";
    print_r($e->getMessage());
    echo "\n";
}
?>

Példa – csatlakozás felügyelt identitásokkal azure-erőforrásokhoz

A rendszer által hozzárendelt felügyelt identitás használata SQLSRV-illesztővel

A rendszer által hozzárendelt felügyelt identitással való csatlakozáskor ne használja a UID- vagy PWD-beállításokat.

<?php

$azureServer = 'myazureserver.database.windows.net';
$azureDatabase = 'myazuredatabase';
$connectionInfo = array('Database'=>$azureDatabase,
                        'Authentication'=>'ActiveDirectoryMsi');
$conn = sqlsrv_connect($azureServer, $connectionInfo);

if ($conn === false) {
    echo "Could not connect with Authentication=ActiveDirectoryMsi (system-assigned).\n";
    print_r(sqlsrv_errors());
} else {
    echo "Connected successfully with Authentication=ActiveDirectoryMsi (system-assigned).\n";
    
    $tsql = "SELECT @@Version AS SQL_VERSION";
    $stmt = sqlsrv_query($conn, $tsql);
    if ($stmt === false) {
        echo "Failed to run the simple query (system-assigned).\n";
        print_r(sqlsrv_errors());
    } else {
        while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
            echo $row['SQL_VERSION'] . PHP_EOL;
        }

        sqlsrv_free_stmt($stmt);
    }
    
    sqlsrv_close($conn);
}
?>

Példa – csatlakozás a Microsoft Entra szolgáltatásnévvel

A szolgáltatásnév-objektum használatával történő hitelesítéshez szüksége lesz a megfelelő alkalmazás-ügyfél-azonosítóra és az ügyfél titkos kódjára.

SQLSRV-illesztő

<?php

$adServer = 'myazureserver.database.windows.net';
$adDatabase = 'myazuredatabase';
$adSPClientId = 'myAppClientId';
$adSPClientSecret = 'myClientSecret';

$conn = false;
$connectionInfo = array("Database"=>$adDatabase, 
                        "Authentication"=>"ActiveDirectoryServicePrincipal",
                        "UID"=>$adSPClientId,
                        "PWD"=>$adSPClientSecret);

$conn = sqlsrv_connect($adServer, $connectionInfo);
if ($conn === false) {
    echo "Could not connect using Azure AD Service Principal." . PHP_EOL;
    print_r(sqlsrv_errors());
}

sqlsrv_close($conn);

?>

PDO_SQLSRV illesztőprogram

<?php

$adServer = 'myazureserver.database.windows.net';
$adDatabase = 'myazuredatabase';
$adSPClientId = 'myAppClientId';
$adSPClientSecret = 'myClientSecret';

$conn = false;
try {
    $connectionInfo = "Database = $adDatabase; Authentication = ActiveDirectoryServicePrincipal;";
    $conn = new PDO("sqlsrv:server = $adServer; $connectionInfo", $adSPClientId, $adSPClientSecret);
} catch (PDOException $e) {
    echo "Could not connect using Azure AD Service Principal.\n";
    print_r($e->getMessage());
    echo PHP_EOL;
}

unset($conn);
?>

Lásd még:

A Microsoft Entra ID használata az ODBC-illesztőprogrammal

Mi az Azure-erőforrások felügyelt identitása?