我在Azure中托管了一个Web API项目,并将其作为启用了托管服务身份的Web应用程序托管(因此我不需要注册应用程序,对吗?):
现在,我需要获取令牌来访问我的API,以便可以在POSTMAN中使用它:
az login
az account get-access-token --resource "https://mytenant.onmicrosoft.com/d3a219e0-bbbf-496b-a4a4-b9ca485c5a52"
这给了我
获取令牌请求返回的HTTP错误:400 和服务器响应: {“错误”:“ invalid_resource”,“错误描述”:“ AADSTS50001: 应用程序名为 https://mytenant.onmicrosoft.com/d3a219e0-bbbf-496b-a4a4-b9ca485c5a52 在名为的租户中找不到 xxxxxxxx-xxxx-xxxx-af31-xxxxxxxxxx。如果 租户的管理员尚未安装该应用程序 或租户中任何用户的同意。您可能已经发送了 身份验证请求发送给错误的租户。
如果我尝试使用对象ID 63d571cf-79bf-405d-8304-a31fb64cb953
而不是应用ID作为资源uri的一部分,则会出现相同的错误。
我在做什么错了?
答案 0 :(得分:1)
我在做什么错了?
az帐户获取访问令牌用于获取令牌来访问Azure resource
。我们可以从此document获取更多信息。
-资源
Azure资源终结点。默认为Azure资源管理器。对其他Azure资源使用“ az cloud show”命令。
资源应位于以下端点中。并且默认资源为https://management.azure.com/
"endpoints": {
"activeDirectory": "https://login.microsoftonline.com",
"activeDirectoryDataLakeResourceId": "https://datalake.azure.net/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"activeDirectoryResourceId": "https://management.core.windows.net/",
"batchResourceId": "https://batch.core.windows.net/",
"gallery": "https://gallery.azure.com/",
"management": "https://management.core.windows.net/",
"resourceManager": "https://management.azure.com/",
"sqlManagement": "https://management.core.windows.net:8443/",
"vmImageAliasDoc": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json"
}
根据我的理解,该命令与您的API访问权限无关。
有关MSI以及如何通过将OAuth 2.0与Azure Active Directory一起使用来保护API的更多信息,请参考此tutorial和此tutorial。
答案 1 :(得分:0)
资源URI不包含您的应用程序ID或对象ID。 您可以在“应用程序注册”的“应用程序ID URI”下的“属性”中找到该标识符。
并且由于这是MSI生成的服务主体,因此没有应用程序。我认为您必须在这种情况下注册一个应用程序。