代表 Azure AD 多租户应用程序的 Azure 资源管理器
Azure Resource Manager on behalf of Azure AD Multitenant App
我要实现的目标的总体概述
我正在尝试构建一个 Azure AD 多租户 Web 应用程序,它允许我使用 Azure 资源管理器 (ARM) API 管理客户 subscriptions/tenants 中的资源。我对 Azure AD 多租户还很陌生。
理想的控制流程
1. A customer browses the Applications (ideal an admin of the customer tenant)
2. Will be granted with Azure AD authorize flow
3. Accepts everything and grants admin consent for the AD App in their tenant
4. Unclear: The AD App will be granted contributer access on a subscription or resource
5. My Web App will be able to use the AD App credentials to manage the customer resources using the ARM APIs
问题
步骤 1-3、5:很清楚,我知道如何构建它。
第 4 步:我不确定如何构建它以便该步骤自动发生。
我考虑过的解决方案
最坏的情况是客户 AD 管理员必须使用 Azure 门户手动授予 AD 应用访问订阅或资源的权限。
我想到的一个想法是您需要对 Azure 服务管理 API 的 user_impersonation 权限。
用户登录后,您可以列出可用的订阅,允许用户 select 一个。
然后根据需要列出资源组。
一旦用户确认 selection,您的应用程序可以通过管理 API 代表当前登录的用户将自己添加为目标资源的贡献者。
为此,您将需要在目标租户中为您的应用创建的服务主体的对象 ID。
您可以通过获取一个仅限应用程序的令牌来获得它,例如用户登录后来自该租户的令牌端点的 Azure Management API。
令牌将包含一个 oid 声明,它是服务主体的对象 ID。
当然,登录的用户必须能够修改对目标资源的访问权限。
我想说这种方法的缺点是组织必须相信您的应用程序只会做它声称要做的事情。
他们手动授予访问权限的方法允许他们完全控制。
我要实现的目标的总体概述
我正在尝试构建一个 Azure AD 多租户 Web 应用程序,它允许我使用 Azure 资源管理器 (ARM) API 管理客户 subscriptions/tenants 中的资源。我对 Azure AD 多租户还很陌生。
理想的控制流程
1. A customer browses the Applications (ideal an admin of the customer tenant)
2. Will be granted with Azure AD authorize flow
3. Accepts everything and grants admin consent for the AD App in their tenant
4. Unclear: The AD App will be granted contributer access on a subscription or resource
5. My Web App will be able to use the AD App credentials to manage the customer resources using the ARM APIs
问题
步骤 1-3、5:很清楚,我知道如何构建它。
第 4 步:我不确定如何构建它以便该步骤自动发生。
我考虑过的解决方案
最坏的情况是客户 AD 管理员必须使用 Azure 门户手动授予 AD 应用访问订阅或资源的权限。
我想到的一个想法是您需要对 Azure 服务管理 API 的 user_impersonation 权限。 用户登录后,您可以列出可用的订阅,允许用户 select 一个。 然后根据需要列出资源组。
一旦用户确认 selection,您的应用程序可以通过管理 API 代表当前登录的用户将自己添加为目标资源的贡献者。
为此,您将需要在目标租户中为您的应用创建的服务主体的对象 ID。 您可以通过获取一个仅限应用程序的令牌来获得它,例如用户登录后来自该租户的令牌端点的 Azure Management API。 令牌将包含一个 oid 声明,它是服务主体的对象 ID。
当然,登录的用户必须能够修改对目标资源的访问权限。
我想说这种方法的缺点是组织必须相信您的应用程序只会做它声称要做的事情。 他们手动授予访问权限的方法允许他们完全控制。