使用 azure-cli 访问 Azure Active Directory 的令牌

Posted

技术标签:

【中文标题】使用 azure-cli 访问 Azure Active Directory 的令牌【英文标题】:Access token for Azure Active Directory using azure-cli 【发布时间】:2018-03-24 10:00:02 【问题描述】:

我在 Azure 应用服务上有一个需要 Azure Active Directory 身份验证的 Web 应用。我可以使用OAuth 2.0 flow for service-to-service communication 或Managed Service Identity (MSI) 从其他应用程序中连接接收受保护应用程序的访问令牌。

对于 MSI,Microsoft 提供了一个库 Microsoft.Azure.Services.AppAuthentication 用于身份验证,该库还支持使用来自 azure-cli 工具的凭据。

但是,该库目前处于预览状态,它无法在我的系统上运行,但我设法找到了它的 source code on github。

relevant part好像在打电话

$ az account get-access-token <resource>

但是,当我尝试使用我尝试访问的应用程序的资源名称时,我收到以下错误:

Get Token request returned http error: 400 and server response: "error":"invalid_grant","error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID <application id> named <application name>.

对于资源名称,我尝试了 App ID URI 和 Client ID。

有没有人设法在类似情况下使用azure-cli 获取访问令牌?

【问题讨论】:

也许这可以帮助你:docs.microsoft.com/bs-latn-ba/azure/healthcare-apis/…. 【参考方案1】:

该错误表明您需要同意该应用程序(CLI)访问该 API(范围/资源)。

执行此操作的最快方法是为 CLI 构建一个 URL 以供您同意 CLI 访问您的应用程序。 cli 应用程序 ID 为 04b07795-8ddb-461a-bbee-02f9e1bf7b46

类似的东西。

https://login.microsoftonline.com/<your-tenant-name-or-id>/oauth2/v2.0/authorize?response_type=code&client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&scope=<the scope of the target app/api>

【讨论】:

以上是关于使用 azure-cli 访问 Azure Active Directory 的令牌的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 用户访问筛选

Azure CLI + 使用 oAuth 令牌

Azure webapp 日志尾部解析失败

静默安装Azure CLI

登录 Azure 容器注册表时 SSL 证书验证失败

如何使用 azure powershell 命令获取给定存储帐户名称和资源组的存储帐户 ID?