首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在aspnet.core web api中验证JWT令牌?

如何在aspnet.core web api中验证JWT令牌?
EN

Stack Overflow用户
提问于 2018-08-21 15:33:00
回答 1查看 8.8K关注 0票数 7

我已经创建了用于验证JWT令牌的自定义中间件类。我在调用configure方法中的app.AddMvc()之前调用此方法。***

我想知道我应该向配置服务添加哪些内容,以便使用JWT对我的web API进行身份验证?我在我的Controller类中添加了Authorize

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

代码语言:javascript
复制
 app.UseAuthentication();
 app.MessageHandlerMiddleware();
 app.UseMvc();

我对.net web应用编程接口的实现还很陌生。你能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2018-10-16 02:42:10

one of my answers你可以看到我们是如何传递JWT令牌的,以及经典的.NET (非核心) ASP.NET WebAPI 2的代码是什么样子的。

没有太多区别,ASP.NET核心的代码看起来很相似。

关键的方面是-当你在Startup中添加JWT配置时,应用会自动处理验证,

代码语言:javascript
复制
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()
        };
    });

(使用上面的链接查看GetSymmetricSecurityKeyGetValidAudienceGetValidIssuer ext的实现。方法)

也是非常重要的部分:

代码语言:javascript
复制
services.AddAuthorization(auth =>
{
    auth
    .AddPolicy(
        _configuration.GetDefaultPolicy(),
        new AuthorizationPolicyBuilder()
            .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)
            .RequireAuthenticatedUser().Build()
    );
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51943722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档