Microsoft graph api 通过Microsoft graph API访问用户信息

Microsoft graph api 通过Microsoft graph API访问用户信息,microsoft-graph-api,microsoft-graph-sdks,Microsoft Graph Api,Microsoft Graph Sdks,场景-前端将登录到microsoft,并将访问令牌授予后端,使用该令牌我无法创建microsoft graph api实例 我试图使用microsoft graph api访问用户数据,但收到此错误 Status Code: Unauthorized Microsoft.Graph.ServiceException: Code: InvalidAuthenticationToken Message: Access token validation failure. Invalid audienc

场景-前端将登录到microsoft,并将访问令牌授予后端,使用该令牌我无法创建microsoft graph api实例

我试图使用microsoft graph api访问用户数据,但收到此错误

Status Code: Unauthorized
Microsoft.Graph.ServiceException: Code: InvalidAuthenticationToken
Message: Access token validation failure. Invalid audience.
Inner error:
    AdditionalData:
    date: 2020-09-30T11:00:43
    request-id: -8561--aebc-ff72e69942c4
    client-request-id: -8561-4fb2-aebc-
ClientRequestId: c4f169bb-8561-4fb2-aebc-

   at Microsoft.Graph.HttpProvider.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at Microsoft.Graph.BaseRequest.SendRequestAsync(Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Microsoft.Graph.BaseRequest.SendAsync[T](Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Microsoft.Graph.UserRequest.GetAsync(CancellationToken cancellationToken)
   at OptimusPortal.Controllers.WeatherForecastController.GetAsync() in C:\Users\bippan.kumar\Documents\GitHub\OIC\OptimusPortal\OptimusPortal\Controllers\WeatherForecastController.cs:line 52
   at lambda_method(Closure , Object )
   at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
状态代码:未授权
Microsoft.Graph.ServiceException:代码:InvalidAuthenticationToken
消息:访问令牌验证失败。无效观众。
内部错误:
其他数据:
日期:2020-09-30T11:00:43
请求id:-8561--aebc-ff72e69942c4
客户请求id:-8561-4fb2-aebc-
客户编号:c4f169bb-8561-4fb2-aebc-
位于Microsoft.Graph.HttpProvider.SendAsync(HttpRequestMessage请求、HttpCompletionOption completionOption、CancellationToken CancellationToken)
位于Microsoft.Graph.BaseRequest.SendRequestAsync(对象serializableObject、CancellationToken CancellationToken、HttpCompletionOption completionOption)
在Microsoft.Graph.BaseRequest.SendAsync[T](对象serializableObject,CancellationToken CancellationToken,HttpCompletionOption completionOption)
位于Microsoft.Graph.UserRequest.GetAsync(CancellationToken CancellationToken)
在C:\Users\bippan.kumar\Documents\GitHub\OIC\OptimusPortal\OptimusPortal\Controllers\WeatherForecastController.GetAsync()中
在lambda_方法(闭包,对象)
在Microsoft.Extensions.Internal.ObjectMethodExecutorWaitiable.Waitier.GetResult()中
位于Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper映射器、ObjectMethodExecutor执行器、对象控制器、对象[]参数)
在Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g|u等待| 12_0(ControllerActionInvoker invoker,ValueTask`1 actionResultValueTask)
在Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g_u等待| 10_0(ControllerActionInvoker invoker,Task lastTask,State next,Scope Scope,Object State,Boolean isCompleted)
位于Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed上下文)
位于Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(状态和下一步、范围和范围、对象和状态、布尔值和isCompleted)
在Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g_u等待| 13_0(ControllerActionInvoker invoker,Task lastTask,State next,Scope Scope,Object State,Boolean isCompleted)
在Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g_|19_0(ResourceInvoker invoker、Task lastTask、State next、Scope Scope、Object State、Boolean isCompleted)
在Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g|u waiting | 17|0(ResourceInvoker invoker,Task Task,IDisposable作用域)
位于Microsoft.AspNetCore.Routing.EndpointMiddleware.g_uwaitRequestTask | 6_0(端点、任务请求任务、ILogger记录器)
位于Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext上下文)
在Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext上下文)中
位于Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext上下文)
Startup.cs中的My ConfigureServices功能

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
                .AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
            string token;
            services.Configure<JwtBearerOptions>(AzureADDefaults.JwtBearerAuthenticationScheme, options =>
            {
                options.SaveToken = true;
                options.Events = new JwtBearerEvents
                {
                    OnTokenValidated = OnTokenValidated
                };

                options.Authority += "/v2.0";
                options.Audience = "api://xyz";
                options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                {
                    //I have kept these settings in place to provide easy support for docker.
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });

            services.AddControllers();
        }
public void配置服务(IServiceCollection服务)
{
services.AddAuthentication(AzureADDefaults.BeareAuthenticationScheme)
.AddAzureADBearer(options=>Configuration.Bind(“AzureAd”,options));
字符串标记;
Configure(AzureADDefaults.JwtBearerAuthenticationScheme,选项=>
{
options.SaveToken=true;
options.Events=newjwtbearerevents
{
OnTokenValidated=OnTokenValidated
};
选项。权限+=“/v2.0”;
选项。观众=”api://xyz";
options.TokenValidationParameters=新的Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
//我保留了这些设置,以便为docker提供方便的支持。
validateisuer=false,
ValidateAudience=false
};
});
services.AddControllers();
}
创建GraphServiceClient实例的函数。在该函数的最后一行代码处引发错误

        [HttpGet]
        public async Task<IEnumerable<WeatherForecast>> GetAsync()
        {
            var token = await HttpContext.GetTokenAsync("access_token");
            GraphServiceClient graphServiceClient =
            new GraphServiceClient(new DelegateAuthenticationProvider(async (requestMessage) =>
            {
                requestMessage.Headers.Authorization =
                    new AuthenticationHeaderValue("Bearer", token);
            })
            );

            // Make a Microsoft Graph API query
            // Error is thrown at this line of code
            var users = await graphServiceClient.Me.Request().GetAsync();
        }
[HttpGet]
公共异步任务GetAsync()
{
var token=await HttpContext.GetTokenAsync(“访问令牌”);
GraphService客户端GraphService客户端=
新的GraphServiceClient(新的DelegateAuthenticationProvider(异步(请求消息)=>
{
requestMessage.Headers.Authorization=
新的AuthenticationHeaderValue(“承载者”,令牌);
})
);
//进行Microsoft Graph API查询
//在这行代码中抛出错误
var users=await-graphServiceClient.Me.Request().GetAsync();
}

请提供完整的相关id和时间戳。您是否仍在寻求有关此问题的帮助?