当前位置: 首页 > 知识库问答 >
问题:

如何在aspnet中验证JWT令牌。核心web api?

锺离声
2023-03-14

我已经创建了自定义中间件类来验证JWT令牌。我在应用程序之前调用此方法。在configure方法中添加MVC()***

我想知道我应该添加到配置服务以使用JWT验证我的Web API的东西是什么?我在我的Controller类中添加了[Authorize]

我是否需要在配置方法中首先调用验证JWT令牌的中间件类?或者我应该调用App. UseAuthentiation()我使用以下顺序:

 app.UseAuthentication();
 app.MessageHandlerMiddleware();
 app.UseMvc();

我是. net Web API实现的新手。你能帮我吗?


共有1个答案

农雅畅
2023-03-14

从我的一个答案中,你可以看到我们如何传递JWT令牌,以及代码如何寻找经典。NET(非核心)ASP。NET WebAPI 2。

没有太多区别,代码为ASP。NET Core看起来很像。

关键方面是-当您在启动中添加JWT配置时,应用程序会自动处理验证。

services
    .AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer(x =>
    {
        x.RequireHttpsMetadata = false;
        x.SaveToken = true;
        x.TokenValidationParameters = new TokenValidationParameters()
        {
            ValidateIssuerSigningKey = true,
            ValidateLifetime = true,
            IssuerSigningKey = _configuration.GetSymmetricSecurityKey(),
            ValidAudience = _configuration.GetValidAudience(),
            ValidIssuer = _configuration.GetValidIssuer()
        };
    });

(使用上述链接查看GetSymmetricSecurityGetValidudienceGetValidSuerext.方法的实现)

也是非常重要的一部分:

services.AddAuthorization(auth =>
{
    auth
    .AddPolicy(
        _configuration.GetDefaultPolicy(),
        new AuthorizationPolicyBuilder()
            .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)
            .RequireAuthenticatedUser().Build()
    );
});
 类似资料:
  • 问题内容: 如何验证从Amazon Cognito收到的JWT并从中获取信息? 我已经在Cognito中设置了Google身份验证,并将重定向uri设置为打API Gateway,然后收到了我发布到此端点的代码: https://docs.aws.amazon.com/cognito/latest/developerguide/token- endpoint.html 要接收JWT令牌,采用RS2

  • 一旦我们在前端获得JWT令牌,我们就可以通过使用授权头或通过cookies来验证后端服务器中的无状态重启。这段视频很好地解释了这一点。 如果后端服务器在C#中。网络框架(MVC),如何验证接收到的JWT?官方留档指向OWIN,这是不维护。 当看到各种各样的博客和文档时,理论上说我们需要得到模数 如何才能做到这一点?

  • 我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我会得到一个身份令牌(访问令牌),这是一个由Apple签名的有效JWT令牌。这将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。 在服务器上,我想通过验证令牌签名来验证发送的令牌是否确实由Apple签名,并且不是由某些恶意用户专门创建的。Apple提供了一个HT

  • 我正在制作一个javascript客户端,它使用JWT令牌连接到Api。在服务器端没有问题,我可以创建令牌对其进行签名,然后验证签名,从而确保没有人篡改令牌。 但我如何在客户端做到这一点。我可以解码JWT令牌并查看头、负载和签名。但是如何在客户端验证签名?是否有用于此的库,如何将公钥传输到客户端? 如果我不验证签名,我怎么知道令牌没有被篡改?