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 zur späteren Verwendung.
Legen Sie das aktuelle Abonnement fest. Dieser Schritt muss in einer Umgebung mit mehreren Abonnements durchgeführt werden:
Set-AzureRmContext -SubscriptionId <subscription ID>
Zeigen Sie das neu erstellte Anwendungsobjekt an. Das Attribut ApplicationId wird später zum Erstellen von Dienstanmeldeinformationen, Rolleneinstellungen und Zugriffstoken verwendet.
$azureAdApplication = New-AzureRmADApplication -DisplayName "exampleapp" -HomePage "https://www.contoso.org" -IdentifierUris "https://www.contoso.org/example" -Password "<Your_Password>"
Azure AD-App Dienstberechtigungsnachweis erstellen:
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
Nachdem das Dienstzertifikat erstellt wurde, verfügt es zunächst über keine Berechtigungen. Wir müssen den Berechtigungsbereich dafür festlegen.
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 Befolgen Sie die folgenden drei Informationen, um das Authentifizierungstoken abzurufen.
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 fest auf:
Token vor dem Hinzufügen von Bearer .
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 vonSo erhalten Sie ein Azure Active Directory-Token mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!