为什么我需要创建一个多租户应用程序?

问题描述 投票:0回答:1

我一直在使用MicrosoftGraphAPI进行一些研发,以获取我的组织订阅的skus。

我创建了一个应用程序,如in the documentation所述。我执行了上述链接中的所有步骤,除了“将应用程序分配给角色”。

使用postman能够通过使用链接https://login.microsoftonline.com/<mytenantid>/oauth2/token和client_id,client_secret,resource(https://graph.microsoft.com)和grant_type(client_credentials)参数发送post请求来获取oauth2令牌。

获得此令牌后,我可以触发一个get请求https://graph.microsoft.com/v1.0/subscribedSkus,其Authorization标头设置为Bearer {token},它将返回我的组织订阅的SKU。到现在为止还挺好。 :-)

现在要求是我需要通过我的组织中的一个客户端(假设拥有azure ad tenant id'ABCDEFG')来获取订阅的SKU。我可以通过在客户的租户“ABCDEFG”中注册应用程序,并按照与上述相同的步骤成功完成此操作。如果我的组织说1或2个客户,这种方法很好。但是,如果客户端数量超过30,则在每个Azure AD实例中注册应用程序的方法是不可行的。

如果我在我的组织AAD中注册的应用程序是多租户,那么它应该如何帮助我?获取每个租户的访问令牌所需的步骤是什么?有人可以协助一些详细的解释吗?

azure-active-directory microsoft-graph
1个回答
2
投票

由于您需要应用程序级访问权限,因此您将分配文档中列出的应用程序权限之一以获取SKU:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/subscribedsku_list

Directory.Read.All,Directory.ReadWrite.All

在这种情况下,您应该要求读取目录数据(Directory.Read.All)应用程序权限。

然后,您将应用标记为多租户。

现在,为了让另一个组织使用您的应用程序,他们将不得不加入。您需要某种页面,管理员可以单击按钮/链接开始使用您的应用。这应该将管理员重定向到:

https://login.microsoftonline.com/common/oauth2/authorize?client_id=your-client-id&prompt=admin_consent&response_type=code+id_token&redirect_uri=url-where-to-send-user-back

登录后,系统会向他们显示同意屏幕,他们可以在该屏幕上批准您的应用所需的权限。如果他们这样做,他们将被重定向回您的应用程序(指定您指定的URL),您可以使用Id令牌了解哪些Azure AD租户已注册。

在此过程中,将在其租户中创建应用程序的服务主体,并为其授予所需的权限。这意味着您可以从以下位置获取其租户的访问令牌:(使用相同的凭据)

https://login.microsoftonline.com/their-tenant-id/oauth2/token

请记住,访问令牌特定于Azure AD租户,因此您必须为每个租户获取访问令牌。

我想指出的一件事是,如果可能的话,你应该尝试使用委托权限。此处提供的应用程序权限可以为您的应用提供相当大的访问权限,而且某些管理员可能因此无法使用您的服务。委派权限处理起来比较复杂,但允许您的应用代表用户而不是纯粹作为自己。

© www.soinside.com 2019 - 2024. All rights reserved.