Lors de l'appel de l'API Azure Rest, s'il s'agit d'une API appartenant à Azure Resource Manager, vous devez utiliser l'authentification Azure Active Directory (Azure AD) pour obtenir un jeton (Token) avant de pouvoir y accéder.
Voici les étapes pour créer une application Azure AD et l'autoriser à accéder aux ressources qui gèrent Azure :
Pour une meilleure expérience de lecture, vous pouvez également cliquer ici.
Remarque
Les méthodes d'authentification suivantes s'appliquent uniquement à l'API Azure Resource Manager. Autrement dit, les API avec un point de terminaison de management.chinacloudapi.cn
ne sont pas applicables aux API Azure Service Manager (API avec un point de terminaison de management.core.chinacloudapi.cn
).
Connectez-vous à votre compte Azure (PowerShell)
Enregistrez le TenantID obtenu pour une utilisation ultérieure.
Définissez l'abonnement actuel. Cette étape doit être effectuée dans un environnement multi-abonnement :
Set-AzureRmContext -SubscriptionId <subscription ID>
Affichez l'objet d'application nouvellement créé. L'attribut ApplicationId sera utilisé pour créer ultérieurement les informations d'identification du service, les paramètres de rôle et le jeton d'accès.
$azureAdApplication = New-AzureRmADApplication -DisplayName "exampleapp" -HomePage "https://www.contoso.org" -IdentifierUris "https://www.contoso.org/example" -Password "<Your_Password>"
Application Azure AD Créer des informations d'identification de service :
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
Une fois le certificat de service créé, il ne dispose initialement d'aucune autorisation. Nous devons définir la portée des autorisations pour celui-ci.
Ajouter des paramètres de rôle pour vos informations d'identification de service Dans cet exemple, définissez des autorisations de lecture pour vos informations d'identification de service afin d'accéder à toutes les ressources de votre abonnement. Si vous souhaitez en savoir plus, veuillez vous référer à : Contrôle d'accès basé sur le rôle Azure.
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $azureAdApplication.ApplicationId
Parmi eux, RoleDefinitionName
dispose de trois paramètres d'autorisation :
Reader dispose d'autorisations de lecture pour les ressources Azure.
Le contributeur dispose de droits d'administration sur les ressources Azure, mais ne peut pas en autoriser d'autres.
Le propriétaire dispose de droits de gestion sur les ressources Azure et peut également autoriser d'autres personnes à les gérer.
De cette façon, l'application Azure AD est créée. Nous pouvons utiliser le. suivez les trois informations pour obtenir le jeton d'authentification.
telent-id correspond au telentID utilisé dans les informations d'abonnement.
application-id ApplicationID renvoyé lors de la création de l'application.
mot de passe de l'application Le mot de passe renseigné lors de la création de l'application.
Pour obtenir le Token, utilisez l'interface d'authentification de Azure login oauth2. Si vous souhaitez en savoir plus, veuillez vous référer à ce document : Utilisation de l'API REST Azure Resource Manager.
Veuillez vous référer au code suivant :
$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";
Après avoir exécuté la requête, vous obtiendrez les données du jeton, et access_token est le jeton d'accès.
{ "token_type": "Bearer", "expires_in": "3600", "expires_on": "1455680701", "not_before": "1455676801", "resource": "https://management.azure.com/", "access_token": "eyJ0eXAiOi…" }
Ajoutez ensuite le paramètre Authorization Header à la requête API à laquelle vous souhaitez accéder, et définissez sa valeur sur :
Jeton avant d'ajouter Bearer .
Exemple d'appel :
$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";
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!