使用 WindowsAzureActiveDirectoryBearerAuthentication 和应用程序级凭据

UseWindowsAzureActiveDirectoryBearerAuthentication and application-level credentials

我有一个 SPA(反应),它使用 ADAL 从 AAD 获取令牌,并将该令牌发送到 REST 服务器,该服务器使用

授权该令牌
UseWindowsAzureActiveDirectoryBearerAuthentication

一切都很棒。但现在我需要我的 REST 服务器对图形进行各种调用 API。我的理解是,通常这是通过代表流程完成的,这是有道理的 - 它允许您代表令牌用户查询图形。

但是,我需要我的应用程序在其自己的一组权限下查询图形 API。我需要这个,因为我的应用程序可能需要访问此令牌用户无权访问的资源。我很难找到这样做的例子,这些例子不会回退到代表流程。

我是否需要在我的应用程序和 AAD 之间实施完全独立的身份验证流程?例如,我是否需要在应用程序启动时点击 /authorize 和 /token 端点?我怀疑有一个示例可以说明如何以 "correct" 方式执行此操作,或者也许是某个地方的助手 class,但我找不到。

谢谢

您的 REST 服务器(或后端 API)可以使用客户端凭证流调用 Graph API,就像守护进程一样并使用适当的 Application Permissions.

当您说 "normally this is done through the on-behalf-of flow" 时,这适用于您尝试代表用户调用下一个 API 或使用委派权限的情况。在你的情况下,因为你想调用图形 API 作为应用程序本身,你需要使用客户端凭证流。

您可以阅读有关客户端凭据授予 here or here 的信息,具体取决于您使用的是 V1 还是 V2 端点。

代码示例:

V1 Code Sample

V2 Code Sample