JWT【JSON Web Token】 简述

时间:2021-07-22 20:41:49

draft:
http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
http://tools.ietf.org/html/draft-jones-json-web-token-10

JWT全称JSON Web Token[http://www.jwt.io/],用于发送可通过数字签名和认证的东西,它包含一个紧凑的,URL安全的JSON对象,服务端可通过解析该值来验证是否有操作权限,是否过期等安全性检查。由于其紧凑的特点,可放在url中或者 HTTP Authorization头中,它是一种用于认证头部的 token 格式。这个 token 帮你实现了在两个系统之间以一种安全的方式传递信息。

一个jwt包含了三部分:header,payload,signature。

  • header 是 token 的一部分,用来存放 token 的类型和编码方式,通常是使用 base-64 编码。

  • payload 包含了信息。你可以存放任一种信息,比如用户信息,产品信息等。它们都是使用 base-64 编码方式进行存储。
  • signature 包括了 header,payload 和密钥的混合体。密钥必须安全地保存储在服务端。

具体的算法就如下图 :

JWT【JSON Web Token】 简述

代码实现

.NET 下有 System.IdentityModel.Tokens.Jwt,JWT 等实现, PM> Install-Package JWT  https://github.com/jwt-dotnet/jwt

        public async Task<ActionResult> Index()
{
//Creating Tokens
var exp = Math.Round((DateTime.UtcNow - new DateTime(, , , , , , DateTimeKind.Utc)).TotalSeconds + );
var payload = new Dictionary<string, dynamic>()
{
{ "iss", "irving" },
{ "exp", exp},
{ "name", "irving" },
{ "age", },
{ "birthday", "1991-04-18" }
};
var secretKey = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
string token = JWT.JsonWebToken.Encode(payload, secretKey, JWT.JwtHashAlgorithm.HS256);
try
{
//Verifying and Decoding Tokens
string jsonPayload = JWT.JsonWebToken.Decode(token, secretKey);
var dictPayload = JWT.JsonWebToken.DecodeToObject(token, secretKey) as IDictionary<string, dynamic>;
return Content(jsonPayload + dictPayload["name"]);
}
catch (JWT.SignatureVerificationException ex)
{
return Content("Invalid token!");
}
}

REFER:

Nodejs RESTFul架构实践之api篇
https://cnodejs.org/topic/557d647216839d2d53936351

JWT【JSON Web Token】 简述的更多相关文章

  1. Java JWT&colon; JSON Web Token

    Java JWT: JSON Web Token for Java and Android JJWT aims to be the easiest to use and understand libr ...

  2. 如何在SpringBoot中集成JWT&lpar;JSON Web Token&rpar;鉴权

    这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...

  3. JWT&lpar;JSON Web Token&rpar; 【转载】

    JWT(JSON Web Token) 什么叫JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. 一般来说,互联网用户认证是这样子的. 1.用户向服务器发送用户名和密码. ...

  4. &lbrack;更新&rsqb;一份包含&colon; 采用RSA JWT&lpar;Json Web Token&comma; RSA加密&rpar;的OAUTH2&period;0,HTTP BASIC,本地数据库验证,Windows域验证,单点登录的Spring Security配置文件

    没有任何注释,表怪我(¬_¬) 更新: 2016.05.29: 将AuthorizationServer和ResourceServer分开配置 2016.05.29: Token获取采用Http Ba ...

  5. &lpar; 转 &rpar; 什么是 JWT -- JSON WEB TOKEN

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  6. 关于JWT&lpar;Json Web Token&rpar;的思考及使用心得

    什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权.由于许多API接口设计是遵循无状态的(比如 ...

  7. 什么是JWT&lpar;Json Web Token&rpar;

    什么是 JWT (Json Web Token) 用户认证是计算机安全领域一个永恒的热点话题. JWT 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519). 该to ...

  8. API安全验证之JWT&lpar;JSON WEB TOKEN&rpar; OLCMS

    假如www.olcms.com/getUserInfo获取用户信息,你怎么知道当前用户是谁?有人说登陆时候我把他UID写入session了,如果是API接口,没有session怎么办,那么就需要把UI ...

  9. 5分钟搞懂:JWT&lpar;Json Web Token&rpar;

    https://www.qikegu.com/easy-understanding/892 JWT 基于token的用户认证原理:让用户输入账号和密码,认证通过后获得一个token(令牌),在toke ...

  10. JWT&lpar;Json Web Token&rpar;认证

    目录 JWT(Json Web Token) JWT的数据结构 JWT的用法 JWT验证流程

随机推荐

  1. 商城项目实战 &vert; 2&period;1 Android 仿京东商城——自定义 Toolbar &lpar;一&rpar;

    前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 现在很多的 APP 里面都有自己的自定义风格,特别是京东商城中自 ...

  2. &lbrack;SDOI2011&rsqb;工作安排

    Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产 ...

  3. Mysql update in报错 &lbrack;Err&rsqb; 1093 - You can&&num;39&semi;t specify target table &&num;39&semi;company&lowbar;info&&num;39&semi; for update in FROM clause

    Mysql update in报错 解决方案: [Err] 1093 - You can't specify target table 'company_info' for update in FRO ...

  4. 【java】网络socket编程简单示例

    package 网络编程; import java.io.IOException; import java.io.PrintStream; import java.net.ServerSocket; ...

  5. &lbrack;2017BUAA软工助教&rsqb;第0次作业小结

    BUAA软工第0次作业小结 零.题目 作业链接: This is a hyperlink 一.评分规则 本次作业满分10分: 按时提交有分 一周内补交得0分 超过一周不交或抄袭倒扣全部分数 评分规则如 ...

  6. shell编程第二天

  7. 如何从GitHub仓库clone项目

    自己也已经多次接触了git了,但是因为工作用svn,自己平时也很少用git,所以每次都是用的时候可能还可以,等过一段时间再来用的时候,就又忘得差不多了,所以索性自己写个博客,自己记得自己也好懂,而且熟 ...

  8. C&num;去除字符串中的反斜杠

    如下,可以使用C#的Replace()方法来替换,但有一点需要注意的是backslash(反斜杠)是特殊字符. string s = "[\"aaaaaaaaaaaaaaaaaaa ...

  9. GreenDao-自定义SQL查询-AndroidStudio

    /** * 功能:员工查询 * 方法参数: * strEmpIdOrEmpName:员工ID 或者 员工名称 * strQueryType:员工查询类型 "0": "员工 ...

  10. HDU 3364

    http://acm.hdu.edu.cn/showproblem.php?pid=3364 经典高斯消元解开关问题 m个开关控制n个灯,开始灯全灭,问到达目标状态有几种方法(每个开关至多一次操作,不 ...