> 백엔드 개발 > PHP 튜토리얼 > PHP를 통해 Azure Active Directory 토큰 기능을 얻는 방법

PHP를 통해 Azure Active Directory 토큰 기능을 얻는 방법

一个新手
풀어 주다: 2023-03-16 13:02:01
원래의
1334명이 탐색했습니다.

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 以供后续程序使用。

选择当前订阅 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. 얻은 내용을 기록합니다. 후속 사용을 위한 테넌트ID입니다.
  2. 현재 구독 ID를 선택하세요.

    현재 구독을 설정하세요. 이 단계는 다중 구독 환경에서 수행되어야 합니다.
  3. $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";
    로그인 후 복사
  4. AD 애플리케이션 만들기

    새로 생성된 애플리케이션 개체인 ApplicationId 속성을 확인하세요. 나중에 서비스 자격 증명 및 역할 설정을 생성합니다.
  5. {
    "token_type": "Bearer",
    "expires_in": "3600",
    "expires_on": "1455680701",
    "not_before": "1455676801",
    "resource": "https://management.azure.com/",
    "access_token": "eyJ0eXAiOi…"
    }
    로그인 후 복사

서비스 자격 증명 만들기

Azure AD 애플리케이션 서비스 자격 증명 만들기:

$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";
로그인 후 복사

    서비스가 다음과 같은 경우 생성된 자격 증명 이후에는 처음에 권한 범위를 설정해야 합니다.
  1. Authorization

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

    RoleDefinitionName에 대한 세 가지 권한 설정이 있습니다.

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿