JWT 介绍
JWT(Json Web Token)是一种开放标准,已Json对象的方式在各方之间安全地传输信息
JWT登陆状态不在服务器端进行存储,而是通过秘钥生成一个具有有效时间的Token返回给前端,Token中包含类似用户的Id等信息 ,之后的请求将Token携带到服务器端认证,认证通过后可解析Token拿到用户标识进行后续操作
 
JWT官网地址: https://jwt.io
 
JWT结构:(格式: aaaaaa.bbbb.cccc)
(1)Header
(2)Payload 载荷,存放需要传递的数据(用户信息和认证信息等)
 JWT 规定了7个官方字段,供选用。
1 iss (issuer):签发人
2 exp (expiration time):过期时间
3 sub (subject):主题
4 aud (audience):受众
5 nbf (Not Before):生效时间
6 iat (Issued At):签发时间
7 jti (JWT ID):编号
(3)Signature 签名(防止数据被篡改)
使用编码后(base64编码)的header和payload再加上我们提供的一个公钥,然后使用header中指定的签名算法进行签名。
作用是保证JWT没有被窜改过
 
JWT使用
引用:Microsoft.AspNetCore.Authentication.JwtBearer
1.在“appsettings.json”中配置信息存储:
 "JwtSettings": {
"Issuer": "admin",
"Audience": "user",
"SecretKey": "dadf4t5gfg6hh6h6h"
}
 
2.通过依赖注入,将配置文件注入到我们的类对象中
创建类“JwtSettings
 public class JwtSettings
{
public string Issuer { get; set; }
public string Audience { get; set; }
public string SecretKey { get; set; }
}

在Startup.cs中注入:

 //ConfigureServices
services.Configure<JwtSettings>(Configuration.GetSection("JwtSettings"));
JwtSettings setting = new JwtSettings();
Configuration.Bind("JwtSettings", setting);
JwtHelper.Settings = setting;
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) //Configure
app.UseAuthentication();
 
3.创建JwtHelper.cs生成token
 public class JwtHelper
{
private static JwtSettings settings;
public static JwtSettings Settings { set { settings = value; } }
public static string create_Token()
{
var claims = new Claim[] {
new Claim(ClaimTypes.Name, "zhangsan"),
new Claim(ClaimTypes.Role, "admin"),
new Claim(ClaimTypes.Sid,"wmcodetypeid")
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(settings.SecretKey));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: settings.Issuer,
audience: settings.Audience,
claims: claims,
expires: DateTime.Now.AddDays(1),
signingCredentials: creds);
var Token = new JwtSecurityTokenHandler().WriteToken(token);
return Token;
}
}

测试认证:

[HttpPost]
[Authorize]
public string GetOnlineCallerList()
{
TableData data = new TableData();
data = _service.GetOnlineCallerList();
return JsonHelper.Instance.Serialize(data);
}

未在表头添加token认证,状态

在表头添加token认证,状态,返回成功。

.Net Core WepApi-JWT认证的更多相关文章

  1. Asp.Net Core基于JWT认证的数据接口网关Demo

    近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...

  2. Dotnet core使用JWT认证授权最佳实践(二)

    最近,团队的小伙伴们在做项目时,需要用到JWT认证.遂根据自己的经验,整理成了这篇文章,用来帮助理清JWT认证的原理和代码编写操作. 第一部分:Dotnet core使用JWT认证授权最佳实践(一) ...

  3. Dotnet core使用JWT认证授权最佳实践(一)

    最近,团队的小伙伴们在做项目时,需要用到JWT认证.遂根据自己的经验,整理成了这篇文章,用来帮助理清JWT认证的原理和代码编写操作. 一.JWT JSON Web Token (JWT)是一个开放标准 ...

  4. .NET Core的JWT认证的学习

    今天学习下JWT,遇到了两个坑爹问题,这里记录下.在 ASP.NET Core 中,授权的设置方式有两种,可以使用角色,也可以使用策略,这里也将简单举例角色.策略的使用. JWT这里不做介绍,如果想了 ...

  5. 把旧系统迁移到.Net Core 2.0 日记 (18) --JWT 认证(Json Web Token)

    我们最常用的认证系统是Cookie认证,通常用一般需要人工登录的系统,用户访问授权范围的url时,会自动Redirect到Account/Login,登录后把认证结果存在cookie里. 系统只要找到 ...

  6. ASP.NET Core 基于JWT的认证(二)

    ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...

  7. ASP.NET Core 基于JWT的认证(一)

    ASP.NET Core 基于JWT的认证(一) Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计 ...

  8. asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)

    asp.net core 2.0使用JWT认证园子里已经有挺多帖子了,但开发中发现认证未授权情况下返回的401状态码是没有任何信息的,业务中可能有需要返回一串错误的Json信息.在这里我分享一个自定义 ...

  9. 如何简单的在 ASP.NET Core 中集成 JWT 认证?

    前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...

  10. .net core webapi jwt 更为清爽的认证

    原文:.net core webapi jwt 更为清爽的认证 我的方式非主流,控制却可以更加灵活,喜欢的朋友,不妨花一点时间学习一下 jwt认证分为两部分,第一部分是加密解密,第二部分是灵活的应用于 ...

随机推荐

  1. linux 上使用yum 安装openjdk1.8

    使用yum查找jdk: yum search java|grep jdk # yum search java|grep jdk ldapjdk-javadoc.noarch : Javadoc for ...

  2. JCR分区 | 中科院SCI期刊分区表

    LetPub查询系统,非常方便,分区影响因子都可以查询,还有投稿经验可以参考. SCI全称是Science Citation Index(科学引文索引) 科睿唯安JCR分区(Journal Citat ...

  3. SpringBoot——Profile多环境支持

    1.多profile文件形式 主配置文件编写时, 文件名可以是application-{profile}.properties/yml 默认使用的application.properties的配置. ...

  4. Android外接USB扫码枪

    公司的设备以前接入的都是串口的扫码头,优点是直接通过串口读取流里面的数据就OK了,缺点是你需要知道每一款扫码器的型号以获取波特率及Android设备的串口地址.因为现在usb扫码器越来越方便且即插即用 ...

  5. 【转】【Centos】Linux(Centos7)下搭建SVN服务器

    系统环境:centos7.2 第一步:通过yum命令安装svnserve,命令如下: yum -y install subversion 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停 ...

  6. PHP 动态输出 svgz 格式图片

    使用PHP动态生成SVGZ图片(gzip压缩的SVG) 经测试SVG的动画性能很差,简单的动画CPU都能占到 30%左右. 可能的用途: 动态天气图片 访问统计计数图片 文字验证生成 动态头像 静态外 ...

  7. nginx安装和命令

    1. nginx安装 1.1 mac上安装 brew search nginx brew install nginx 1.2 windows上安装 下载nginx.zip,解压到D盘,发送快捷方式到桌 ...

  8. Apache限制IP并发数和流量控制

    使用mod_limitipconn模块限制IP并发连接数安装: wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 tar ...

  9. TensorFlow 8 bit模型量化

    本文基本参考自这篇文章:8-Bit Quantization and TensorFlow Lite: Speeding up mobile inference with low precision ...

  10. IOS开发依赖管理工具CocoaPods

    CocoaPods IOS开发依赖管理工具 CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It ...