Azure Rest API를 호출할 때 Azure Resource Manager에 속한 API인 경우 Azure AD(Azure Active Directory) 인증을 사용하여 토큰(Token)을 얻어야 액세스할 수 있습니다.
다음은 Azure AD 애플리케이션을 생성하고 Azure를 관리하는 리소스에 액세스하도록 권한을 부여하는 단계입니다.
더 나은 읽기 환경을 위해 여기를 클릭할 수도 있습니다.
Note
다음 인증 방법은 Azure Resource Manager의 API에만 적용 가능합니다. 즉, 엔드포인트가 management.chinacloudapi.cn
인 API는 Azure Service Manager의 API(엔드포인트가 management.core.chinacloudapi.cn
인 API)에 적용되지 않습니다. ). management.chinacloudapi.cn
的 API,不适用于 Azure Service Manager 的 API(endpoint 为 management.core.chinacloudapi.cn
的 API)。
登录 Azure 账户(PowerShell)
记录获取到的 TenantID 以供后续程序使用。
设置当前订阅,多订阅环境下需要执行该步骤 :
Set-AzureRmContext -SubscriptionId <subscription ID>
查看新创建的应用对象,属性 ApplicationId,在后续会用来创建服务凭证,角色设置和 Access Token。
$azureAdApplication = New-AzureRmADApplication -DisplayName "exampleapp" -HomePage "https://www.contoso.org" -IdentifierUris "https://www.contoso.org/example" -Password "<Your_Password>"
创建服务凭证
Azure AD 应用创建服务凭证:
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
当创建完成服务凭证后,初始是没有任何权限的,我们需要为其设置权限范围。
授权
为您的服务凭证添加角色设置,在该例中,为您的服务凭证设置访问您订阅下所有资源的读权限。 如果想了解更多内容,请参考:Azure Role-based Access Control。
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $azureAdApplication.ApplicationId
其中 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";
{ "token_type": "Bearer", "expires_in": "3600", "expires_on": "1455680701", "not_before": "1455676801", "resource": "https://management.azure.com/", "access_token": "eyJ0eXAiOi…" }
서비스 자격 증명 만들기
$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";
Authorization
RoleDefinitionName
에 대한 세 가지 권한 설정이 있습니다.
Reader에는 Azure 리소스에 대한 읽기 권한이 있습니다.
기여자는 Azure 리소스에 대한 관리 권한이 있지만 다른 사람에게 권한을 부여할 수는 없습니다.
소유자는 Azure 리소스에 대한 관리 권한을 가지며 다른 사람이 이를 관리하도록 권한을 부여할 수도 있습니다.
Oauth2 API를 호출하여 토큰을 얻습니다.
이제 다음 세 가지 정보를 사용하여 인증 토큰을 얻을 수 있습니다.
🎜🎜🎜telent-id는 구독 정보에 사용되는 telentID에 해당합니다. 🎜🎜🎜🎜application-id 애플리케이션 생성 시 반환되는 ApplicationID입니다. 🎜🎜🎜🎜app 비밀번호 애플리케이션을 만들 때 입력한 비밀번호입니다. 🎜🎜🎜🎜토큰을 얻으려면 Azure 로그인 oauth2의 인증 인터페이스를 사용하세요. 자세한 내용은 Azure Resource Manager REST API 사용 문서를 참조하세요. 🎜🎜다음 코드를 참고하세요: 🎜rrreee🎜쿼리를 실행하면 토큰 데이터를 얻을 수 있으며, access_token은 액세스 토큰입니다. 🎜rrreee🎜그런 다음 액세스하려는 API 요청에 Authorization Header 설정을 추가하고 값을 🎜🎜🎜🎜🎜Token 앞에 Bearer를 추가하세요. 🎜🎜통화 예: 🎜rrreee위 내용은 PHP를 통해 Azure Active Directory 토큰 기능을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!