这确实有点混乱。将用户分配给应用程序的行为导致应用程序图标(带有徽标)出现在用户的访问面板(myapps.microsoft.com)中,他们可以从中轻松登录到应用程序。对于一些预集成的应用程序(如salesforce和box),用户的配置文件也会在应用程序中创建。
但是,对于传统的单租户和多租户应用程序,分配用户的行为尚未阻止未分配的用户无法获得应用程序的令牌。这是我们计划在未来版本(作为配置选项)中向应用程序管理员提供的内容。但是,要解决当前的需求,您可以(代表用户)查询在应用程序目录中分配给应用程序的所有用户和组,也可以查询(代表用户)所有应用程序分配给用户,使用下列API:分配给应用程序
查询所有用户和组:
HTTP GET https://graph.windows.net/7fe877e6-a150-4992-bbfe-f517e304dfa0/servicePrincipals/7758ff7a-9c65-4779-af33-f2c2f35aec2 0/appRoleAssignedTo?api-version=1.5
凡7fe877e6-a150-4992-bbfe-f517e304dfa0是对的tenantId目录(这可能是域na我也是这个目录),7758ff7a-9c65-4779-af33-f2c2f35aec2是服务主体的objectId,代表该目录中的应用程序。
查询所有应用对于用户被分配:
HTTP GET https://graph.windows.net/7fe877e6-a150-4992-bbfe-f517e304dfa0/users/3a477f6a-6739-4b93-84aa-3be3f8c8e7c2/appRoleAssignments?api-version=1.5
凡7fe877e6-a150-4992-bbfe-f517e304dfa0是目录的tenantId(这可能是该域名目录),3a477f6a-6739-4b93-84aa-3be3f8c8e7c2是用户对象的objectId。
我使用AADGraphPowerShell查询我的目录 - 在这里”的结果针对上述查询:
希望这有助于。
感谢您的信息,非常有用...快问, 我一直在使用HTTP GET https://graph.windows.net/.../users/.../appRoleAssignments尝试?api-version = 1.5为我的用户和应用程序提供了正确的值,并且还有一个有效的访问令牌,但是我回来的却是Authorization_RequestDenied错误。 但是,如果我然后运行Add-MsolRoleMember -RoleMemberType ServicePrincipal -RoleName'用户帐户管理员'-RoleMemberObjectId ...它的工作原理。 我已经为用户提供了我可以找到的每个权限,并且我不希望为应用程序提供完整的用户管理员角色,因为这可能会带来安全风险。 有什么想法? – Wilko 2015-02-12 01:15:04
您似乎在使用OAuth客户端凭证流查询Graph(导致仅应用程序访问令牌)。您需要在用户的上下文中查询Graph(所有用户,除了guest用户都可以枚举用户) - 为此使用授权代码授权流程。在我们的Guthub repo(AzureAD)中搜索Web应用程序图形API示例。希望有所帮助 – 2015-02-12 04:49:32