我发现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。
- 订阅关联到的Azure AD。 微软广告(MSA)
- 。
当将具有Microsoft帐户的用户添加为订阅共同管理员时,该用户将间接地在与当前订阅相关联的Azure AD中注册。如果用户从Azure AD中删除,它仍然具有订阅访问权限。这是因为用户仍然存在于Microsoft帐户AD中。