使用 JWT 令牌实现身份验证和授权

Posted

技术标签:

【中文标题】使用 JWT 令牌实现身份验证和授权【英文标题】:implementing authentication and authorization using JWT token 【发布时间】:2017-12-10 17:58:47 【问题描述】:

我只是混淆使用 UseJwtBearerAuthentication 或 JWT 和 OAUTH 2 在 .Net Core Web API 中实现身份验证和授权。

【问题讨论】:

【参考方案1】:

JSON Web Token (JWT) 是 OAUTH 2 的实现。

ASP.NET Core and Angular 2 by Valerio De Sanctis 非常详细地解释了如何在 ASP.NET Core 中实现 JWT 提供程序。这是示例代码-

public void Configure(IApplicationBuilder app...)

     ...
    // Add a custom Jwt Provider to generate Tokens
    app.UseJwtProvider();

    // Add the Jwt Bearer Header Authentication to validate Tokens
    app.UseJwtBearerAuthentication(new JwtBearerOptions()
    
        AutomaticAuthenticate = true,
        AutomaticChallenge = true,
        RequireHttpsMetadata = false,
        TokenValidationParameters = new TokenValidationParameters()
        
            IssuerSigningKey = JwtProvider.SecurityKey,
            ValidateIssuerSigningKey = true,
            ValidIssuer = JwtProvider.Issuer,
            ValidateIssuer = false,
            ValidateAudience = false
        
    );
    ...

不幸的是,示例代码是用以前版本的 ASP.NET Core 编写的,它使用了project.json。我将项目转换为csprojGitHub。

【讨论】:

以上是关于使用 JWT 令牌实现身份验证和授权的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring 和 JWT 进行基于令牌的身份验证

使用 Jwt 的基于令牌的身份验证无法授权

如何使用 Apache Shiro 实现基于 JWT 令牌的身份验证机制?

添加基于策略的授权会跳过 JWT 不记名令牌身份验证检查吗?

用于授权和身份验证的多个 JWT 承载

OAuth2:JWT授权授予和客户端凭据授权与JWT客户端身份验证之间的区别是什么?