首页 > 解决方案 > Azure - 授予对外部应用程序的资源访问权限

问题描述

我在 Azure 门户中注册了一个应用程序,它需要访问 Azure 服务管理 API 的权限。为了使其与 Azure 资源一起使用,我需要为我的应用程序的订阅添加角色分配,以便能够进行如下 API 调用:

https://management.azure.com/subscriptions/xxxx-xxxx-xxxx-xxxx/resourcegroups?api-version=2017-05-10

我想让我的应用程序与不同的 Azure 门户一起工作。我的问题是 - 如何在另一个未注册我的应用但已同意的 Azure AD 上为我的应用添加角色分配?我接近这个错误吗?

标签: azureazure-active-directory

解决方案


如何在另一个尚未注册我的应用但已同意的 Azure AD 上为我的应用添加角色分配?

是的你可以。

当该应用在您的另一个租户中获得同意后,Azure 将在该租户中为您的应用注册创建一个企业应用程序,您可以在Azure Active Directory->中找到Enterprise applications(使用 搜索All Applications)。

要为其添加分配,只需导航到Subscription门户中的 -> Access control (IAM)-> 将您的企业应用程序(服务主体)添加为角色,例如Owner/ Contributor

然后,您可以使用client credentials flow获取服务主体的访问令牌,这client_secret是您的第一个租户中的访问令牌。然后您可以使用令牌在您的问题中调用其余的 api。

更新:

我不建议您使用用户帐户来获取访问令牌。因为当你启用 MFA 时,你无法使用 UserCredential 来获取。如果您使用 Visual Studio,您可以使用AzureServiceTokenProvider来获取访问令牌。

 var azureServiceTokenProvider = new AzureServiceTokenProvider();
 string accessToken =  azureServiceTokenProvider.GetAccessTokenAsync("https://management.azure.com");

顺便说一句,我仍然建议您使用订阅中存在的服务主体来获取访问令牌,以便您可以使用之前使用的流程。

希望它可以帮助你。


推荐阅读