azure - 如何授权对 Azure 管理 API 的调用?

标签 azure authorization azure-active-directory azure-api-management

我发现调用 Azure 管理 API 的授权流程令人困惑,即不是 Azure API 管理(即 API 网关 SaaS),我希望得到一些澄清。

来自 https://msdn.microsoft.com/en-us/library/azure/dn629581.aspx 的文档:

Although Azure originally allowed access only by Microsoft account users, it now allows access by users from both systems. This was done by having all the Azure properties trust Azure AD for authentication, having Azure AD authenticate organizational users, and by creating a federation relationship where Azure AD trusts the Microsoft account consumer identity system to authenticate consumer users. As a result, Azure AD is able to authenticate “guest” Microsoft accounts as well as “native” Azure AD accounts.

http://blogs.technet.com/b/ad/archive/2014/08/15/prepping-for-new-management-features.aspx :

Your Microsoft Azure subscriptions uses Azure Active Directory to sign users in to the management portal and to secure access to the Azure management API.

文档让我相信与订阅关联的 Azure AD 租户充当 STS,管理 API 分别是 RP,或者使用 OAuth 术语分别是授权服务器和资源服务器。租户还可以选择信任第三方STS,例如另一个租户或 Microsoft 帐户服务,从而允许外部身份提供商的用户访问管理 API。

blog post还写道:

Azure will soon require administrators to be registered in Azure Active Directory to be able to sign in to the Azure portal or use the Azure management API.

在我看来,取消管理员帐户与订阅的 Azure AD 租户的关联,无论它是租户的“ native ”帐户还是联合帐户,都应该撤销他们对管理 API 的访问权限。

我尝试使用我的订阅来验证这一假设,但无法完全理解结果。假设订阅有三个管理员:

  • 使用联合 Microsoft 帐户的服务管理员 SA
  • 共同管理员 CA-AAD 使用订阅信任的租户“ native ”帐户
  • 共同管理员 CA-MSA 再次使用联合 Microsoft 帐户

通过向租户注册所有三个帐户,其中任何一个帐户都可以管理属于订阅的资源,并使用 Web 应用程序来访问 Insights API通过用户模拟。

一旦 Cookie/访问 token 过期,从租户中删除 CA-AAD 就会禁止该帐户管理资源和访问 Insights API。这是预期的行为,但现在不存在的帐户仍保留为订阅的共同管理员。

但是,从租户中删除 CA-MSA 并没有阻止帐户管理资源或访问 API。这种行为甚至在 session 之间持续存在,并且该帐户仍然被列为共同管理员,而不完全是预期的结果。

现在讨论问题:

  • 尽管 CA-MSA 未向租户注册,但为什么仍允许其继续访问管理 API?
  • 访问管理 API 的授权流程是怎样的?
  • 帐户如何映射到列为订阅共同管理员的帐户?

最佳答案

Azure 订阅仅引用两个目录来授权用户访问管理 API。

  1. 与订阅关联的 Azure AD。
  2. Microsoft AD (MSA)。

将具有 Microsoft 帐户的用户添加为订阅共同管理员时,用户将间接注册到当前订阅关联的 Azure AD 中。如果从 Azure AD 中删除用户,它仍然具有订阅访问权限。这是因为该用户仍然存在于 Microsoft 帐户 AD 中。

关于azure - 如何授权对 Azure 管理 API 的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862640/

相关文章:

ssl - 使用 Fiddler 捕获 Azure Active Directory 登录期间的交互

azure - Microsoft 密码重置 - 传递包含重置后重定向 URI 的参数

azure - wcf 和 azure appfabric 服务总线之间的区别?

azure - 从 Terraform 获取数据库 URL `azurerm_postgresql_flexible_server`

azure - 使用什么工具来获取/设置 Azure Blob 缓存控制属性

asp.net-mvc-4 - 覆盖 MVC4 应用程序的 User.IsInRole 和 [Authorize(Roles = "Admin")]

c# - Azure - AD - AcquireTokenSilent 给出错误 failed_to_acquire_token_silently

azure - 为什么在计时器触发时无法在 Azure Functions 中使用输出绑定(bind)?

azure - .Net core应用程序无法从Microsoft Graph API获取用户详细信息?

java - JAX-RS:自定义 SecurityContext 在注入(inject)资源方法时具有意外类型