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>
Neue Erstellung anzeigen Das Anwendungsobjekt, 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>"
Dienstanmeldeinformationen erstellen
Azure AD-App Dienstanmeldeinformationen 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.
Autorisierung
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.
Mitwirkender 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 auf:
Token vor dem Hinzufügen von Bearer fest .
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 die Azure Active Directory-Token-Funktionalität über PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!