【发布时间】:2015-10-30 00:11:12
【问题描述】:
我发现调用 Azure 的管理 API 的授权流程令人困惑,即不是作为 API 网关 SaaS 的 Azure API 管理,我希望得到一些澄清。
来自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。
blog post 还写道:
Azure 很快将要求管理员在 Azure Active Directory 中注册才能登录 Azure 门户或使用 Azure 管理 API。
在我看来,取消管理员帐户与订阅的 Azure AD 租户的关联,无论它是租户的“本机”帐户还是联合帐户,都应该撤销他们对管理 API 的访问权限。
我尝试使用我的订阅来验证假设,但无法完全理解结果。假设订阅有三个管理员:
- 服务管理员
SA使用联合 Microsoft 帐户 - 联合管理员
CA-AAD使用订阅信任的租户的“本地”帐户 - 共同管理员
CA-MSA再次使用联合 Microsoft 帐户
通过向租户注册的所有三个帐户,他们中的任何一个都可以管理属于订阅的资源以及使用网络应用程序,该应用程序反过来通过用户模拟访问Insights API。
从租户中删除 CA-AAD 会禁止该帐户在 cookie/访问令牌过期后管理资源和访问 Insights API。这是预期的行为,但现在非退出帐户仍列为订阅的共同管理员。
但是,从租户中删除 CA-MSA 并不会阻止帐户管理资源或访问 API。这种行为甚至在会话之间持续存在,并且该帐户仍被列为共同管理员,而不是预期的结果。
现在进入问题:
- 为什么
CA-MSA尽管未向租户注册,但仍允许继续访问管理 API? - 访问管理 API 的授权流程是什么?
- 帐户如何映射到订阅的共同管理员帐户?
【问题讨论】:
标签: azure authorization azure-active-directory azure-api-management