0

说我有一个App1in Tenant1。这具有对同一租户1 中App1订阅的贡献者访问权限。SUB_1有一个App1_ClientIdApp1_ClientSecretApp1 相关联。

现在,我可以使用这个 id 和 secret 登录到该租户并SUB_1使用 URL 进行操作:

https://login.microsoftonline.com/Tenant1_ID/oauth2/token

现在,如果此应用程序是单租户应用程序或多租户应用程序,它有什么区别?使用此 ID/Secret,我可以从任何地方的任何服务访问此应用程序的登录名。

另外,“将用户添加到此应用程序”是什么意思?假设我将用户添加到此应用程序,是否意味着该用户也可以访问 Tenant1 中的订阅?

4

2 回答 2

0

在您的示例中,如果 App1 是单租户应用程序,则它只能访问 Tenant1 中授予它的资源。虽然您可以在任何地方运行的代码中使用该 app_id 和密码:在该租户、另一个租户甚至另一个云中,该代码只能访问 Tenant1 中的相关资源。

如果您希望您的应用能够跨多个租户访问资源,则需要由相应租户中的管理员将其添加到每个租户。这只有在您将 App1 配置为多租户应用程序时才能实现。

将用户添加到应用程序允许用户访问应用程序本身。用户不会自动获取/继承授予应用程序的任何权限(例如您的订阅中的角色)

于 2021-07-07T16:40:56.797 回答
0

现在,如果此应用程序是单租户应用程序或多租户应用程序,它有什么区别?使用此 ID/Secret,我可以从任何地方的任何服务访问此应用程序的登录名。

如果您希望此应用程序在其他租户中可用,则会出现差异。

对于单租户,服务主体将仅在您的租户中创建。如果您将此应用程序设为多租户,则一旦不同租户中的用户同意该应用程序,将在该租户中创建服务主体。必须在与该其他租户关联的 Azure 订阅中向该服务主体授予适当的 Azure RBAC 权限。只有这样,您的应用程序才能使用客户端 ID/秘密对 Azure 订阅执行操作。

另外,“将用户添加到此应用程序”是什么意思?

创建应用程序时,您可以定义一些特定于该应用程序的角色。当您将用户添加到应用程序时,您可以为用户分配一个或多个角色,然后每当您的用户访问应用程序时,他们将能够执行这些角色允许的操作。

详细地说,假设您的应用程序是一个具有 2 个控制器操作的 Web API -GetPost. 您可以做的是根据应用程序角色限制对这些控制器操作的访问。具有适当角色的用户将能够访问这些控制器操作。

假设我将用户添加到此应用程序,是否意味着该用户也可以访问 Tenant1 中的订阅?

不一定是真的。如果您代表已登录用户调用 Azure 管理 API,则必须为其分配适当的 Azure RBAC 角色才能执行操作。但是,如果您代表应用程序调用 Azure 管理 API,则可以配置应用程序,以便在代码中受应用程序角色保护的适当部分调用这些 API。例如,您可能希望在控制器操作中实现读取操作,并在Get控制器操作中实现创建操作Post

于 2021-07-01T13:54:56.807 回答