c# - 使用 Microsoft Graph token 通过 Jwt Bearer token 保护 ASP.NET Core Web API

标签 c# asp.net-core jwt microsoft-graph-api

我们有一个 ASP.NET Core Web API,我想用 Microsoft Graph 访问 token 保护它。图形 token 有效,我可以进行图形调用,它工作正常。

但是,如果我尝试访问配置了 JWT Bearer 身份验证的 ASP.NET Core Web API,则会出现以下错误。

Bearer error="invalid_token", error_description="The signature key was not found

我是否遗漏了一些需要配置的配置,或者这是图形 token 的问题?以下是身份验证的配置方式。

        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
               .AddJwtBearer(options =>
               {
                   options.TokenValidationParameters = new TokenValidationParameters()
                   {
                       ValidateIssuer = false, // For multi tenant
                       ValidateIssuerSigningKey = false,
                       ValidateAudience = false // This is for testing
                   };
               });

相同的配置适用于 Azure AD 访问 token 。

最佳答案

We have an ASP.NET Core Web API that I want to secure with Microsoft Graph Access toke

不,我建议将您的 web api 注册为受 Azure AD 保护的资源。

Microsoft Graph API token 用于访问 Microsoft Graph,Microsoft Graph 的服务器端将在收到 JWT token 后验证声明/签名。此外,我记得 Microsoft Graph API 访问 token 的签名不同于 AAD 颁发的 JWT token 。因此,让 Microsoft Graph API 服务器端验证 token ,并且 token 不应用于保护其他 API。

您的客户端应用程序可以使用 OpenID Connect 中间件和 Active Directory 身份验证库 (ADAL.NET) 为使用 OAuth 2.0 协议(protocol)的登录用户获取 JWT 不记名 token 。不记名 token 被传递到 Web API,该 API 验证 token 并使用 JWT 不记名身份验证中间件向用户授权:

Calling a web API in an ASP.NET Core web application using Azure AD

关于c# - 使用 Microsoft Graph token 通过 Jwt Bearer token 保护 ASP.NET Core Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55468944/

相关文章:

javascript - Firebase 3 身份验证 + Node + jsonwebtoken : Invalid custom token

c# - 从 System.Runtime.InteropServices.Marshal C# 中找不到 GetActiveObject 的定义

c# - Asp.net Mvc、Razor 和本地化

基于 C#/ASP 的反向 AJAX

java - Microprofile JWT web.xml 返回 200 而不是 401

php - 如何使用 jwt-auth 对 Facebook 用户进行身份验证?

c# - VTK(Activiz)在不同硬件上呈现不同

azure - 使用 Azure Key Vault 中的 secret 替换 VSTS JSON 变量

asp.net-core - DNX核心应用程序版本信息

c# - .NET Core API - 为什么嵌套模型中的文件属性接收 null?