在没有 public 密钥(RSA)的情况下验证 JWT .net 核心 webapi

validate JWT without public key (RSA) .net core webapi

我是 DOTNet 核心网络中的新 JWT Api。在我们的应用程序中,我们从 Microsoft 站点获取 access_token。 https://login.microsoftonline.com/

我们想在 .net 核心 (Api) 中验证令牌 (RS256 算法),但我们没有 PUBLIC KEY。

注意:我已经有令牌了。我们如何使用 public 密钥和任何其他东西来验证 JWT?我只有一个访问令牌。

使用 JWT 基本上有两种情况:

  • 您自己创建了 JWT,并且知道用于它的密钥。比您可以编写验证,或将参数传递给 .net 核心管道。
  • 您从外部 权威机构 获得了 JWT。在这种情况下,权威机构(在您的特定情况下 - 微软)知道如何验证 JWT。

当局将实施 JWT 协议并通过 URL 公开它。通常你需要知道两件事:authorityaudience(令牌的接收者)。

好消息是.net core 会为您处理协议细节,您需要做的就是设置身份验证管道。这就是它归结为:

 services.AddAuthentication()
   .AddJwtBearer("schemeName", options =>
     {
       options.Audience = "... your audience ...";
       options.Authority = "... your authority ...";
       options.SaveToken = true;
     });

有关详细信息,请阅读 .net core 中的 JWT 身份验证,例如JWT Validation and Authorization in ASP.NET Core。有很多关于该主题的文章。