从 Powershell 获取 Azure Active Directory 访问令牌

Posted

技术标签:

【中文标题】从 Powershell 获取 Azure Active Directory 访问令牌【英文标题】:Get Azure Active Directory Access Token from Powershell 【发布时间】:2018-02-17 20:56:50 【问题描述】:

注册 Azure Active Directory 应用程序后,我在 Azure 门户中生成了一个应用程序 ID 和一个密钥。

通过这对和我的 Powershell 脚本,我想生成一个访问令牌,我将在 HTTP 请求的脚本中使用它。

我可以使用 C# 获取访问令牌(参见下面的代码),但我不确定如何在 Powershell 中执行类似操作。 Powershell中是否已经内置了任何东西?如果没有,有人可以指出我的解决方案吗?我很确定我不是唯一一个有这个问题的人。

public static async Task<string> GetAccessTokenAsync(string clientId, string appKey, string resourceId)

     string aadInstance = "https://login.microsoftonline.com/0";
     string tenant = "<TENANT>.onmicrosoft.com";
     string authority = string.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
     AuthenticationContext authContext = new AuthenticationContext(authority);
     ClientCredential clientCredential = new ClientCredential(clientId, appKey);

     AuthenticationResult authenticationResult = null;       
     authenticationResult = await authContext.AcquireTokenAsync(resourceId, clientCredential);

     return authenticationResult.AccessToken;

【问题讨论】:

【参考方案1】:

我写了一篇我认为很棒的教程:

Azure AD Authentication with PowerShell and ADAL

使用这些脚本,您可以完成身份验证和 REST API 调用 只需 13 行 PowerShell。运行代码是即时的, 并修改 REST 调用甚至身份验证参数 需要几秒钟而不是几分钟。

你可以在 GitHub here 上找到我所有的脚本。

诀窍在于,您实际上可以使用 PowerShell 的 Add-Type 函数加载 ADAL 的 .NET 程序集:

# Load ADAL
Add-Type -Path ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"\

从那里调用所有 ADAL 函数就像在标准 C# 应用程序中一样简单。

话虽如此,您可能还想查看官方 AAD PowerShell 模块:

Azure Active Directory PowerShell Version 2

您可以将 Azure Active Directory PowerShell 模块版本 2 用于 Azure AD 管理任务,例如用户管理、域 管理和配置单点登录。

根据您在此处的确切需求,这两个选项之一应该适合您。让我知道这是否有帮助!

【讨论】:

谢谢!将此标记为有效问题,因为它帮助我找到了与您提供的类似的其他文档。 gallery.technet.microsoft.com/scriptcenter/…

以上是关于从 Powershell 获取 Azure Active Directory 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

从 Azure 自动化获取自定义模块详细信息

powershell Powershell获取帐户信息并在Azure中设置凭证

powershell 获取最新的Azure VM

在 Azure Devops 中使用从一个 PowerShell 任务到另一个任务的变量值

Powershell:将所有具有“NetworkRuleSet”属性的 Azure 存储帐户列出/导出到 CSV

powershell 获取Azure AD中的所有来宾帐户