使用另一个访问令牌获取msgraph访问令牌

时间:2020-06-21 14:04:42

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

我创建了一个Azure应用,并通过“暴露API”屏幕为其创建了自定义范围。我有一个单页应用程序,该应用程序使用代码流登录到请求这些自定义范围的应用程序。在我的ASP.NET Core Web应用程序上,我添加了身份验证层以将JWT用作承载。效果很好,我可以按预期保护我的Web API。

现在,我还为msgraph添加了API权限,因为我希望能够使用它创建在线会议。流程为:

  • 用户使用我的自定义范围受众群体登录
  • 他向安全的网络api发送呼叫以创建内容
  • 已将某些内容添加到数据库
  • 代表用户创建了一个在线会议

“问题”是我的Web API收到的访问令牌对msgraph无效,我需要代表与access_token相关的用户获取一个。但是,我不知道如何使用另一个access_token获取msgraph令牌。我什至不知道那是不可能的。

但是,如果不可能,我应该如何从应用程序的.NET Core部分创建在线会议?

1 个答案:

答案 0 :(得分:1)

看看On Behalf Flow,特别是示例“ First case: Access token request with a shared secret”。您可以将现有的访问令牌用作assertion参数。

以下HTTP POST请求访问令牌并使用https://graph.microsoft.com Web API的user.read范围刷新令牌。

//line breaks for legibility only

POST /oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&client_id=2846f71b-a7a4-4987-bab3-760035b2f389
&client_secret=BYyVnAt56JpLwUcyo47XODd
&assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.eyJhdWQiOiIyODQ2ZjcxYi1hN2E0LTQ5ODctYmFiMy03NjAwMzViMmYzODkiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE0OTM5MjA5MTYsIm5iZiI6MTQ5MzkyMDkxNiwiZXhwIjoxNDkzOTI0ODE2LCJhaW8iOiJBU1FBMi84REFBQUFnZm8vNk9CR0NaaFV2NjJ6MFFYSEZKR0VVYUIwRUlIV3NhcGducndMMnVrPSIsIm5hbWUiOiJOYXZ5YSBDYW51bWFsbGEiLCJvaWQiOiJkNWU5NzljNy0zZDJkLTQyYWYtOGYzMC03MjdkZDRjMmQzODMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJuYWNhbnVtYUBtaWNyb3NvZnQuY29tIiwic3ViIjoiZ1Q5a1FMN2hXRUpUUGg1OWJlX1l5dVZNRDFOTEdiREJFWFRhbEQzU3FZYyIsInRpZCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsInV0aSI6IjN5U3F4UHJweUVPd0ZsTWFFMU1PQUEiLCJ2ZXIiOiIyLjAifQ.TPPJSvpNCSCyUeIiKQoLMixN1-M-Y5U0QxtxVkpepjyoWNG0i49YFAJC6ADdCs5nJXr6f-ozIRuaiPzy29yRUOdSz_8KqG42luCyC1c951HyeDgqUJSz91Ku150D9kP5B9-2R-jgCerD_VVuxXUdkuPFEl3VEADC_1qkGBiIg0AyLLbz7DTMp5DvmbC09DhrQQiouHQGFSk2TPmksqHm3-b3RgeNM1rJmpLThis2ZWBEIPx662pjxL6NJDmV08cPVIcGX4KkFo54Z3rfwiYg4YssiUc4w-w3NJUBQhnzfTl4_Mtq2d7cVlul9uDzras091vFy32tWkrpa970UvdVfQ
&scope=https://graph.microsoft.com/user.read+offline_access
&requested_token_use=on_behalf_of