如何验证 Web API 以使用客户端应用程序获取的令牌调用 Graph API

How to authenticate a Web API to call Graph API with a token acquired by a client App

我正在开发客户端(React、typescript)应用程序和服务器(.Net Core)应用程序。 api 应该对 Microsoft 图 api 进行一些调用。

我已经在 Azure Active Directory 中注册了这两个应用程序并公开了 api 权限。所以在客户端,我得到一个 access_token 使用 msal.js 给定范围:

scopes = ["api://clientId/Test"]

所以我可以在 api.

中授权
  1. 我应该如何获得 api 端的访问权限以使用图 api? 我应该在客户端中使用 scopes = ["User.Read", "api://clientId/Test"] 请求令牌吗?
  2. 在 Azure 中注册服务器应用程序是否正确?最后,我能否拥有一个仅具有 Graph 范围的令牌,例如 scopes = ["User.Read", "Email.Read"] 将其传递给 Api 并在 api 端使用此令牌来访问图表?

经过研究,我发现解决方案是使用 on-behalf-of flow

所以基本上是从客户端应用程序检索访问令牌,其范围授予对服务器应用程序的授权。然后服务器应用程序使用此访问令牌创建访问令牌以获得 Graph API.

的授权

这里是我用的sample