目录
选择当前订阅 ID
创建 AD 应用
创建服务凭证
授权
调用 Oauth2 API 获取 Token
首页 后端开发 php教程 使用PHP 获取 Azure Active Directory 令牌 的方法

使用PHP 获取 Azure Active Directory 令牌 的方法

Sep 08, 2017 am 09:55 AM
active azure directory

在调用 Azure Rest API 时,如果是属于 Azure Resource Manager 的 API,则需要使用 Azure Active Directory (Azure AD)认证获取令牌(Token),然后才能够进行访问。

 以下是创建 Azure AD 应用,并授权其可以访问管理 Azure 的资源的步骤:

获取更好的阅读体验也可以点击此处。

 Note

以下认证方式,只适用于 Azure Resource Manager 的 API。 即 endpoint 为 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 有三种权限设置:

  1. Reader 对Azure资源有读取权限。

  2. Contributor 对Azure资源有管理权限,但无法授权他人。

  3. Owner 对Azure资源拥有管理权限,也可以授权他人管理。

  

调用 Oauth2 API 获取 Token

这样 Azure AD Application 就创建完成了,我们可以使用以下三个信息,来获取认证的 Token。

  1. telent-id 对应订阅信息上使用的 telentID。

  2. application-id 创建应用返回的 ApplicationID。

  3. app password 创建应用时填写的密码。

获取 Token 的方式,使用 Azure login oauth2 的认证接口,如果想了解更多,请参考此文档:Using the Azure Resource Manager REST API。

请参考以下代码:

$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 数据, access_token 即为访问 Token。

{
"token_type": "Bearer",
"expires_in": "3600",
"expires_on": "1455680701",
"not_before": "1455676801",
"resource": "https://management.azure.com/",
"access_token": "eyJ0eXAiOi…"
}
登录后复制

然后将您要访问的 API 请求头上加上 Authorization 的 Header 设置,并将其值设置为:

Token 之前要加上 Bearer。

调用示例:

$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";
登录后复制

以上是使用PHP 获取 Azure Active Directory 令牌 的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

错误代码 801c03ed:如何在 Windows 11 上修复它 错误代码 801c03ed:如何在 Windows 11 上修复它 Oct 04, 2023 pm 06:05 PM

错误代码 801c03ed:如何在 Windows 11 上修复它

Active Directory 用户和计算机丢失 [以 3 种方式修复] Active Directory 用户和计算机丢失 [以 3 种方式修复] Apr 20, 2023 pm 01:25 PM

Active Directory 用户和计算机丢失 [以 3 种方式修复]

利用Azure语义搜索与OpenAI,打造认知搜索系统 利用Azure语义搜索与OpenAI,打造认知搜索系统 Oct 12, 2023 am 10:18 AM

利用Azure语义搜索与OpenAI,打造认知搜索系统

Amazfit 更新推出 GTR 4、GTS 4 等智能手表 Amazfit 更新推出 GTR 4、GTS 4 等智能手表 Aug 17, 2024 pm 09:33 PM

Amazfit 更新推出 GTR 4、GTS 4 等智能手表

微软 Azure OpenAI 服务现已支持 GPT-4 Turbo with Vision 微软 Azure OpenAI 服务现已支持 GPT-4 Turbo with Vision Dec 18, 2023 am 08:18 AM

微软 Azure OpenAI 服务现已支持 GPT-4 Turbo with Vision

微软 Azure 将从 10 月开始推行强制性多因素身份验证功能 微软 Azure 将从 10 月开始推行强制性多因素身份验证功能 Aug 17, 2024 am 07:40 AM

微软 Azure 将从 10 月开始推行强制性多因素身份验证功能

Microsoft Security 通过多云功能升级用户防护能力 Microsoft Security 通过多云功能升级用户防护能力 Apr 24, 2023 pm 09:07 PM

Microsoft Security 通过多云功能升级用户防护能力

如何利用React和Microsoft Azure构建可靠的云端应用 如何利用React和Microsoft Azure构建可靠的云端应用 Sep 26, 2023 am 11:01 AM

如何利用React和Microsoft Azure构建可靠的云端应用

See all articles