Heim > Artikel > Backend-Entwicklung > Detailliertes Beispiel dafür, wie PHP das Azure Active Directory-Token erhält
Wenn es sich beim Aufruf der Azure Rest API um eine API handelt, die zu Azure Resource Manager gehört, müssen Sie die Azure Active Directory (Azure AD)-Authentifizierung verwenden, um ein Token (Token) zu erhalten, bevor Sie darauf zugreifen können.
Hier sind die Schritte zum Erstellen einer Azure AD-Anwendung und zum Autorisieren dieser für den Zugriff auf Ressourcen, die Azure verwalten:
Für ein besseres Leseerlebnis können Sie auch hier klicken.
Hinweis
Die folgenden Authentifizierungsmethoden gelten nur für die Azure Resource Manager-API. Das heißt, APIs mit einem Endpunkt von management.chinacloudapi.cn
gelten nicht für Azure Service Manager-APIs (APIs mit einem Endpunkt von management.core.chinacloudapi.cn
).
Melden Sie sich bei Ihrem Azure-Konto (PowerShell) an
Notieren Sie die erhaltene TenantID für die spätere Verwendung.
, um das aktuelle Abonnement festzulegen. Dieser Schritt muss in einer Umgebung mit mehreren Abonnements durchgeführt werden:
Set-AzureRmContext -SubscriptionId <subscription ID>
Zeigen Sie das neu erstellte Anwendungsobjekt und das Attribut ApplicationId an, das zum Erstellen von Dienstanmeldeinformationen, Rolleneinstellungen und Zugriffstoken verwendet wird später.
$azureAdApplication = New-AzureRmADApplication -DisplayName "exampleapp" -HomePage "https://www.contoso.org" -IdentifierUris "https://www.contoso.org/example" -Password "<Your_Password>"
Azure AD-App Dienstanmeldeinformationen erstellen:
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
Wenn die Dienstanmeldeinformationen erstellt werden, verfügen sie zunächst über keine Berechtigungen und wir müssen den Berechtigungsbereich festlegen Es.
Fügen Sie Rolleneinstellungen für Ihre Dienstanmeldeinformationen hinzu. Legen Sie in diesem Beispiel Leseberechtigungen für Ihre Dienstanmeldeinformationen fest, um auf alle Ressourcen unter Ihrem Abonnement zuzugreifen. Wenn Sie mehr erfahren möchten, lesen Sie bitte: Azure Role-based Access Control.
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $azureAdApplication.ApplicationId
Davon hat RoleDefinitionName
drei Berechtigungseinstellungen:
Leser hat Leseberechtigungen für Azure-Ressourcen.
Der Mitwirkende verfügt über Administratorrechte für Azure-Ressourcen, kann jedoch keine anderen autorisieren.
Der Besitzer verfügt über Verwaltungsrechte für Azure-Ressourcen und kann auch andere zur Verwaltung dieser Ressourcen autorisieren.
Auf diese Weise wird die Azure AD-Anwendung erstellt erstellt und wir können es verwenden. Die folgenden drei Informationen werden verwendet, um das Authentifizierungstoken zu erhalten.
telent-id entspricht der telentID, die in den Abonnementinformationen verwendet wird.
application-id ApplicationID, die beim Erstellen der Anwendung zurückgegeben wird.
App-Passwort Das Passwort, das beim Erstellen der Anwendung eingegeben wurde.
Um das Token zu erhalten, verwenden Sie die Authentifizierungsschnittstelle von Azure Login oauth2. Wenn Sie mehr wissen möchten, lesen Sie bitte dieses Dokument: Verwenden der Azure Resource Manager REST API.
Bitte beachten Sie den folgenden Code:
$tenlent_id = 'Your Sub Tenlent ID'; $client_id = 'Application ID'; $client_secret = 'Application Password'; $auth_url = 'https://login.chinacloudapi.cn/'.$tenlent_id.'/oauth2/token?api-version=1.0'; $auth = curl_init($auth_url); $post_data= 'grant_type=client_credentials&resource=https://management.chinacloudapi.cn/&client_id='.$client_id.'&client_secret='.urlencode($client_secret); curl_setopt_array($auth, array( CURLOPT_VERBOSE => 1, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $post_data, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded' ) )); curl_exec($atuh); echo "\n";
Nachdem Sie die Abfrage ausgeführt haben, erhalten Sie die Token-Daten und access_token ist das Zugriffstoken.
{ "token_type": "Bearer", "expires_in": "3600", "expires_on": "1455680701", "not_before": "1455676801", "resource": "https://management.azure.com/", "access_token": "eyJ0eXAiOi…" }
Fügen Sie dann die Einstellung „Autorisierungsheader“ zur API-Anfrage hinzu, auf die Sie zugreifen möchten, und legen Sie ihren Wert auf:
Vor Token muss Inhaber hinzugefügt werden. Anrufbeispiel:$token = 'eyJ0eXA…'; $host = 'management.chinacloudapi.cn'; $version = '2015-09-01'; $url = 'https://'.$host.'/subscriptions/5bbf0cbb-647d-4bd8-b4e6-26629f109bd7/resourceGroups/Default-MySql-ChinaNorth/providers/Microsoft.MySql/servers/poddbtest/databases/kevintest?api-version='.$version; $ch = curl_init($url); $data = array( 'properties' => array( 'charset' => 'utf8', 'collation' => 'utf8_general_ci' ), ); $json = json_encode($data); curl_setopt_array($ch, array( CURLOPT_VERBOSE => 1, CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_POSTFIELDS => $json, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HTTPHEADER => array( 'Content-type:application/json', 'Authorization:Bearer '.$token ) )); $ret =curl_exec($ch); if (empty($ret)) { // some kind of an error happened echo 'Curl error: ' . curl_error($ch); } else { $info = curl_getinfo($ch); } echo "\n";
Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel dafür, wie PHP das Azure Active Directory-Token erhält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!