2015-02-06 37 views
2

我已按照https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet上的指南,将Azure身份验证添加到了我的ASP MVC应用程序中。它的工作原理只限于只访问域中拥有帐户的用户。非用户被拒绝。已忽略Azure活动目录分配的用户

但是,Azure管理站点中有一个设置允许您将用户分配给应用程序。此设置似乎没有做任何事情。即使没有分配给应用程序,该域中的所有用户都可以访问站点。

我正在寻找一种方法来选择哪些用户被允许访问可在Azure域级别管理的网站。

任何帮助将不胜感激...

回答

2

这确实有点混乱。将用户分配给应用程序的行为导致应用程序图标(带有徽标)出现在用户的访问面板(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查询我的目录 - 在这里”的结果针对上述查询:

希望这有助于。

enter image description here

+0

感谢您的信息,非常有用...快问, 我一直在使用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

+0

您似乎在使用OAuth客户端凭证流查询Graph(导致仅应用程序访问令牌)。您需要在用户的上下文中查询Graph(所有用户,除了guest用户都可以枚举用户) - 为此使用授权代码授权流程。在我们的Guthub repo(AzureAD)中搜索Web应用程序图形API示例。希望有所帮助 – 2015-02-12 04:49:32