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



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

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

文档

虽然Azure最初只允许Microsoft帐户用户访问,但现在允许来自两个系统的用户访问。这是通过让所有Azure属性信任Azure AD进行身份验证,让Azure AD对组织用户进行身份验证,以及创建一个联合关系来实现的,其中Azure AD信任Microsoft帐户消费者身份系统来对消费者用户进行身份验证。因此,Azure AD能够验证"访客"微软帐户以及"本地"Azure AD帐户。

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

您的Microsoft Azure订阅使用Azure Active Directory将用户登录到管理门户,并确保对Azure管理API的访问安全。

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

这篇博文还写道:

Azure将很快要求管理员在Azure Active Directory中注册,以便能够登录到Azure门户或使用Azure管理API。

解除管理员帐户与订阅的Azure AD租户的关联,无论它是租户的"本地"帐户还是联合帐户,在我看来应该撤销他们对管理api的访问权限。

我试着用我的订阅来验证这个假设,但结果并不是很有意义。假设订阅有三个管理员:

  • 服务管理员SA使用联邦Microsoft帐户
  • 共同管理员CA-AAD,使用订阅
  • 信任的租户的"本机"帐户
  • co-admin CA-MSA再次使用联邦Microsoft帐户

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

从租户中删除CA-AAD将禁止该帐户在cookie/访问令牌过期后管理资源和访问Insights API。这是预期的行为,只是现在不存在的帐户仍然被列为订阅的共同管理员。

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

现在进入问题:

  • 为什么允许CA-MSA继续访问管理api,尽管它没有向租户注册?
  • 访问管理api的授权流程是什么?
  • 帐户如何映射到那些列为共同管理员的订阅?

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

  1. 订阅关联到的Azure AD。
  2. 微软广告(MSA)

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

最新更新