Maison >développement back-end >tutoriel php >Exemple détaillé de la façon dont php obtient le jeton Azure Active Directory
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.
pour définir l'abonnement en cours. Cette étape doit être effectuée dans un environnement multi-abonnement :
Set-AzureRmContext -SubscriptionId <subscription ID>Créer une application AD Afficher l'objet d'application nouvellement créé, l'attribut ApplicationId, qui sera utilisé pour créer les informations d'identification du service, les paramètres de rôle et le jeton d'accès ultérieurement .
$azureAdApplication = New-AzureRmADApplication -DisplayName "exampleapp" -HomePage "https://www.contoso.org" -IdentifierUris "https://www.contoso.org/example" -Password "<Your_Password>"Créer des informations d'identification de serviceApplication Azure AD Créer des informations d'identification de service :
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationIdLorsque l'identifiant de service est créé, il ne dispose initialement d'aucune autorisation et nous devons définir la portée de l'autorisation pour il. AutorisationAjouter 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.ApplicationIdParmi eux,
dispose de trois paramètres d'autorisation : RoleDefinitionName
$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 : Avant le jeton, Bearer doit être ajouté. 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!