我发现调用 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 能够对“来宾”Microsoft 帐户以及“本机”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 术语的授权服务器和资源服务器。租户还可以选择信任第三方 STS,例如另一个租户或 Microsoft 帐户服务,从而允许来自外部身份提供者的用户访问管理 API。
博文还写道:
Azure 很快将要求管理员在 Azure Active Directory 中注册,以便能够登录到 Azure 门户或使用 Azure 管理 API。
在我看来,取消管理员帐户与订阅的 Azure AD 租户的关联,无论它是租户的“本机”帐户还是联合帐户,都应该撤销他们对管理 API 的访问权限。
我尝试使用我的订阅来验证假设,但无法完全理解结果。假设订阅有三个管理员:
SA
使用联合 Microsoft 帐户的服务管理员CA-AAD
使用订阅信任的租户的“本机”帐户的共同管理员CA-MSA
再次使用联合 Microsoft 帐户的共同管理员
通过向租户注册的所有三个帐户,它们中的任何一个都可以管理属于订阅的资源以及使用 Web 应用程序,该应用程序反过来通过用户模拟访问Insights API 。
CA-AAD
一旦 cookie/访问令牌过期,从租户中删除将不允许该帐户管理资源和访问 Insights API。这是预期的行为,但现在不存在的帐户仍列为订阅的共同管理员。
但是,CA-MSA
从租户中移除并不会阻止该帐户管理资源或访问 API。这种行为甚至在会话之间持续存在,并且该帐户仍被列为共同管理员,而不是预期的结果。
现在讨论问题:
- 为什么在
CA-MSA
未向租户注册的情况下仍允许继续访问管理 API? - 访问管理 API 的授权流程是什么?
- 帐户如何映射到列为订阅的共同管理员的帐户?