【发布时间】:2020-05-11 19:43:32
【问题描述】:
我已经注册了多租户应用程序并使用仅限应用程序的身份,但我们有多个租户,我们想使用不同租户的数据(获取用户等)。我们有 Web 应用程序使用哪个新租户管理员首次登录并授予我们的 Web 应用程序访问其数据的权限。
现在我们想要获取他们的用户,但问题是,在我配置 appsettings.json 的 web api 中,我为一个租户(我注册 web 应用程序的地方)进行了配置,我们需要编写通用代码接受不同的租户 ID 并为该租户创建他们的 graphserviceclient,然后我将使用 graphserviceclient.users 来获取他们的租户用户。
如何在我的 webApi 中概括这一点?
如果我放置另一个租户 ID 并为他们的租户创建 graphServiceClient,我可以获取其他租户的数据,但是我必须对租户 ID 进行硬编码(并确保租户管理员允许权限), 我需要一个通用的解决方案。(而且我们不想使用委托身份)
【问题讨论】:
-
您是否要使用客户端证书流(docs.microsoft.com/en-us/azure/active-directory/develop/…) 在您的 Web API 中调用 Microsoft graph?
-
是的,我正在使用客户端凭据流。但是新租户将通过 Web 应用程序注册,我想在我的 webAPI 中注册该租户实例,即通过提供租户 id 和我的应用程序 cient id 和客户端密码为该租户创建一个 graphServiceClient。我想要一个通用的设计。
-
您能告诉我为什么需要客户端证书流吗?在正常情况下,在多租户应用程序中,我们应该使用 Delegated Identity。
-
因为我们需要自己管理租户数据,这是需求之一。在我的场景中需要它,而委托身份无法满足我需要的场景。
-
manage the tenants data ourself是什么意思?如果你只是使用 Delegated 身份,其他租户用户也无法管理你的租户数据。
标签: azure azure-active-directory microsoft-graph-api microsoft-graph-sdks