azure - Azure - 授予对外部应用程序的资源访问权限
问题描述
我在 Azure 门户中注册了一个应用程序,它需要访问 Azure 服务管理 API 的权限。为了使其与 Azure 资源一起使用,我需要为我的应用程序的订阅添加角色分配,以便能够进行如下 API 调用:
https://management.azure.com/subscriptions/xxxx-xxxx-xxxx-xxxx/resourcegroups?api-version=2017-05-10
我想让我的应用程序与不同的 Azure 门户一起工作。我的问题是 - 如何在另一个未注册我的应用但已同意的 Azure AD 上为我的应用添加角色分配?我接近这个错误吗?
解决方案
如何在另一个尚未注册我的应用但已同意的 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");
顺便说一句,我仍然建议您使用订阅中存在的服务主体来获取访问令牌,以便您可以使用之前使用的流程。
希望它可以帮助你。