首页 文章

是否可以在未经同意的情况下使用Active Directory Graph Api?

提问于
浏览
0

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

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

我正在研究应该在后台作为Windows服务运行的项目 . 如果它需要一段时间的同意,那么我们可能不能使用Windows服务 .

谢谢

2 回答

  • 0

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

    有关用户和管理员同意的更多详细信息,请单击here .

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

  • 0

    正如@Nan Yu所说,您可以使用目录的管理员帐户来访问 Grant permissions . 此外,还有另一种解决方案 . 它位于您发布的链接的底部 . 我在我的测试实验室试过它并且有效 . 解决方案在这里:

    如果你想在应用程序模式下运行控制台应用程序(这有点人为,因为这真的应该作为本机客户端运行),你需要事先强制手动同意 . 在这里,管理员用户需要同意 . 您可以通过打开浏览器强行同意,并转到以下URL,将 tenantId 替换为 tenantId ,将 app-mode-application-id 替换为您的应用模式应用程序的 Application 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
    

    登录后(如果尚未登录),请单击同意页面中的 Accept . 然后,您可以关闭浏览器 . 既然您已经 pre-consented, ,您可以尝试在应用模式下运行控制台示例 .

相关问题