是否有一种方法来搜索联合团队用户在微软图?



在Teams客户端中,您可以使用顶部搜索框搜索任何开放的联邦用户。它将提供一个从外部搜索的选项,如果地址匹配,将返回一个联邦用户。我正在尝试在应用程序中复制此功能,但还没有找到实现此功能的方法。以下是我到目前为止所做的尝试:

  • 人员搜索(例如https://graph.microsoft.com/v1.0/me/people?$search="user@domain.com")没有返回任何内容。
  • 用户搜索(例如https://graph.microsoft.com/v1.0/users)只返回相同AAD中的用户(如预期)

我真正感兴趣的是AzureAD guid(用户的唯一ID),如果没有应用程序来查询用户的特定租户,我找不到一种方法来获取它。这是可以通过图形来实现的吗,还是需要特定于租户?如果Teams客户端可以为开放联合用户做到这一点,那么应用程序不应该访问相同的数据吗?

所以我在创建多租户图形应用程序中找到了这个问题的答案。我从来没有真正理解它们是如何工作的,但它最终实现了。要设置一个,在您的家庭租户中像往常一样创建一个AAD应用程序,将其设置为多租户,并为其分配所需的API权限(User.Read。All, User.ReadBasic.All等)。它会显示在应用注册中,你可以使用secrets/certs等进行认证。然后在目标租户中,让某人点击这个URL: https://login.microsoftonline.com/TENANTID/adminconsent?client_id=APPID,其中TENANTID是目标租户的ID, APPID是来自您的AAD的APPID。一旦获得同意(用户/管理员取决于权限),应用程序将显示在"企业应用程序"中。部分。

一旦有了这个,您就可以搜索目标租户上的用户。这里的挑战在于,您需要知道正在搜索的租户ID,并让用户专门授予执行该操作的权限,而不是将其作为联邦搜索。不理想,但这是你能用graph做的所有事情。

在这里有用的是拥有与Teams客户端相同的功能,以便作为任何租户中的应用程序获取联合用户信息。由于客户端可以交互地执行此操作,因此任何开放的联邦组织都应该可以被图形应用程序搜索(可能使用"include"外部"include")。搜索中的标志)。除了用户GUID和存在之外,我不会期望其他任何东西,但对于我的情况(ACS/Teams互操作),这就足够了。

最新更新