我在Azure App Service上有一个需要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
在类似的情况下获取访问令牌?
答案 0 :(得分:0)
该错误表示您需要同意该应用程序(CLI)访问该API(范围/资源)。
最快的方法是为URL建立一个同意的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>