>  기사  >  백엔드 개발  >  PHP가 Azure Active Directory 토큰을 얻는 방법에 대한 자세한 예

PHP가 Azure Active Directory 토큰을 얻는 방법에 대한 자세한 예

黄舟
黄舟원래의
2017-09-08 09:10:002275검색

Azure Rest API를 호출할 때 Azure Resource Manager에 속한 API인 경우 Azure AD(Azure Active Directory) 인증을 사용하여 토큰(Token)을 얻어야 액세스할 수 있습니다.

다음은 Azure AD 애플리케이션을 생성하고 Azure를 관리하는 리소스에 액세스하도록 권한을 부여하는 단계입니다.

더 나은 읽기 환경을 위해 여기를 클릭할 수도 있습니다.

참고

다음 인증 방법은 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 以供后续程序使用。

 

选择当前订阅 ID

设置当前订阅,多订阅环境下需要执行该步骤 :


Set-AzureRmContext -SubscriptionId <subscription ID>

 

创建 AD 应用

查看新创建的应用对象,属性 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

Azure 계정(PowerShell)에 로그인
  1. 기록 후속 사용을 위해 TenantID를 얻었습니다.

  2. 현재 구독 ID 선택

    현재 구독 설정 이 단계는 다중 구독 환경에서 수행되어야 합니다.

$tenlent_id = &#39;Your Sub Tenlent ID&#39;;
$client_id = &#39;Application ID&#39;;
$client_secret = &#39;Application Password&#39;;

$auth_url = &#39;https://login.chinacloudapi.cn/&#39;.$tenlent_id.&#39;/oauth2/token?api-version=1.0&#39;;
$auth = curl_init($auth_url);
$post_data= &#39;grant_type=client_credentials&resource=https://management.chinacloudapi.cn/&client_id=&#39;.$client_id.&#39;&client_secret=&#39;.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(
&#39;Content-Type: application/x-www-form-urlencoded&#39;
)
));
curl_exec($atuh);
echo "\n";

AD 애플리케이션 생성

새로 생성된 애플리케이션 객체 보기 나중에 서비스 자격 증명, 역할 설정 및 액세스 토큰을 생성하는 데 사용되는 ApplicationId 속성입니다.

  1. {
    "token_type": "Bearer",
    "expires_in": "3600",
    "expires_on": "1455680701",
    "not_before": "1455676801",
    "resource": "https://management.azure.com/",
    "access_token": "eyJ0eXAiOi…"
    }

  2. 서비스 자격 증명 만들기

  3. Azure AD 애플리케이션 생성 서비스 자격 증명:
  4. $token = &#39;eyJ0eXA…&#39;;
    $host = &#39;management.chinacloudapi.cn&#39;;
    $version = &#39;2015-09-01&#39;;
    $url = &#39;https://&#39;.$host.&#39;/subscriptions/5bbf0cbb-647d-4bd8-b4e6-26629f109bd7/resourceGroups/Default-MySql-ChinaNorth/providers/Microsoft.MySql/servers/poddbtest/databases/kevintest?api-version=&#39;.$version;
    $ch = curl_init($url);
    $data = array(
    &#39;properties&#39; => array(
    &#39;charset&#39; => &#39;utf8&#39;,
    &#39;collation&#39; => &#39;utf8_general_ci&#39;
    ),
    );
    $json = json_encode($data);
    
    curl_setopt_array($ch, array(
    CURLOPT_VERBOSE => 1,
    CURLOPT_CUSTOMREQUEST => &#39;PUT&#39;,
    CURLOPT_POSTFIELDS => $json,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_HTTPHEADER => array(
    &#39;Content-type:application/json&#39;,
    &#39;Authorization:Bearer &#39;.$token
    )
    ));
    
    $ret =curl_exec($ch);
    if (empty($ret)) {
        // some kind of an error happened
        echo &#39;Curl error: &#39; . curl_error($ch);
    } else {
        $info = curl_getinfo($ch);
    }
    echo "\n";

서비스 인증서가 생성된 후에는 처음에는 권한이 없습니다. 권한 범위를 설정해야 합니다.


Authorization

서비스 자격 증명에 대한 역할 설정을 추가합니다. 이 예에서는 구독에 속한 모든 리소스에 액세스할 수 있도록 서비스 자격 증명에 대한 읽기 권한을 설정합니다. 자세한 내용은 Azure 역할 기반 액세스 제어를 참조하세요.


rrreee

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.