【问题标题】:Is it possible to use Active Directory Graph Api without consent?是否可以在未经同意的情况下使用 Active Directory Graph Api?
【发布时间】:2018-02-27 13:25:25
【问题描述】:

我正在查看示例代码 https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console

似乎无论我们为应用程序或用户获取AD客户端,都需要用户的同意。考虑到用户可以提供客户端 ID 或任何其他密码/密码,我们是否可以在未经用户同意的情况下使用图形 api?

我正在处理应该在后台作为 Windows 服务运行的项目。如果它需要一次同意,那么我们可能无法为此使用 Windows 服务。

谢谢

【问题讨论】:

    标签: azure azure-active-directory adal azure-ad-graph-api


    【解决方案1】:

    不,向应用程序添加委派权限不会自动向租户内的用户授予同意。用户仍必须在运行时手动同意添加的委派权限,除非管理员单击 Azure 门户中应用程序页面的 Required Permissions 部分中的 Grant Permissions 按钮以进行管理员同意。在该代码示例中,如果您选择在应用模式下运行控制台应用,则需要管理员用户同意应用权限。

    请点击here了解有关用户和管理员同意的更多详细信息。

    在您的场景中,您可以使用Client Credentials Grant Flow,它允许 Web 服务(机密客户端)使用自己的凭据而不是模拟用户。添加 Azure AD Graph api 的权限后,单击管理员帐户 Azure 门户中应用程序页面的Required Permissions 部分的Grant Permissions 按钮。管理员同意后,您可以使用应用程序的身份获取 Graph API 的令牌,并且在运行时不会要求您同意。 Code samples使用客户端凭证流供您参考。

    【讨论】:

      【解决方案2】:

      正如@Nan Yu 所说,您可以使用您目录的管理员帐户来获得授予权限。此外,您的情况还有另一种解决方案。它位于您发布的链接的底部。我在我的测试实验室里试过了,它奏效了。解决方法在这里:

      如果您想在应用程序模式下运行控制台应用程序(这有点做作,因为这确实应该作为本机客户端运行),您需要事先手动强制同意。在这里,管理员用户需要同意。您可以通过打开浏览器并转到以下 URL 来强制同意,将 tenantId 替换为您的 tenantId,将 app-mode-application-id 替换为您的 应用程序 ID 用于您的应用模式应用:

      https://login.microsoftonline.com/<tenantId>/oauth2/authorize?client_id=app-mode-application-id>&response_type=code &redirect_uri=http%3A%2F%2Flocalhost%2F&response_mode=query   &resource=https%3A%2F%2Fgraph.windows.net%2F&state=12345
      

      登录后(如果尚未登录),点击同意页面中的接受。然后,您可以关闭浏览器。现在您已预先同意,您可以尝试在应用模式下运行控制台示例。

      【讨论】:

      • 嗨,@urlreader,如果这个答案对你有帮助,请标记为帮助更多人的答案。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多