JWT【JSON Web Token】 简述

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 和密钥的混合体。密钥必须安全地保存储在服务端。

具体的算法就如下图 :

代码实现

.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(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds + 5);

            var payload = new Dictionary<string, dynamic>()

                          {

                              { "iss", "irving" },

                              { "exp", exp},

                              { "name", "irving" },

                              { "age", 25 },

                              { "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!");

            }

        }

集成WEBAPI

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

原文地址:http://www.cnblogs.com/Irving/p/4975337.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android增加自定义监听事件

适配器中 public interface ShippingDelOnClickListener {public void onClickListenerShippingDel(int position); }private ShippingDelOnClickListener mShippingDelOnClickListener;public void setShippingDelOnClickListener(ShippingDelOnClickListener shippingDelO…

BufferedInputStream与ImageInputStream

转载自 BufferedInputStream与ImageInputStreamBufferedInputStream读取图片文件&#xff08;jpg格式&#xff09;,但是图片大小在1M到200M之间都有&#xff0c;由于图片太大&#xff0c;不知道怎么处理好&#xff0c;谢谢各位大哥大姐教教小弟&#xff0c;现在只能读取1M以下读…

List自定义对象集合转List<Map<String,Object>>对象

一、List自定义对象集合转List<Map<String,Object>>对象 public static Map<String,Object> object2Map(Object obj) throws Exception{Map<String,Object> map new HashMap<String, Object>(16);Field[] fields obj.getClass().getDeclaredF…

又一大波笑到肾抽筋,笑出六块腹肌的段子

文章来源于网络&#xff0c;侵删 01 我有一个要强的妈妈&#xff0c;记得小时候&#xff0c;我妈骑自行车带我&#xff0c;我脚卡车轮里了&#xff0c;我妈感觉蹬不动&#xff0c;就站起来蹬。 长到两米算我输 02 “单身两年以上是什么体验&#xff1f;”&#xff0c; “单身20…

登录工程:传统 Web 应用中的身份验证技术

标题中 “传统 Web 应用” 这一说法也并没有什么官方定义&#xff0c;只是为了与“现代化 Web 应用”形成比较而自拟的一个概念。所谓现代化 Web 应用指的是那些基于分布式架构思想设计的&#xff0c;面向多个端提供稳定可靠的高可用服务&#xff0c;并且在需要时能够横向扩展的…

getSerializableExtra

Activity之间通过Intent传递值&#xff0c;支持基本数据类型和String对象及它们的数组对象byte、byte[]、char、char[]、boolean、boolean[]、short、short[]、int、int[]、long、long[]、float、float[]、double、double[]、String、String[]&#xff0c;还有实现Serializable…

Java 读写图像

转载自 Java 读写图像Java中进行图像I/O&#xff08;即读图片和写图片&#xff0c;不涉及到复杂图像处理&#xff09;有三个方法&#xff1a;1. Java Image I/O API&#xff0c;支持常见图片&#xff0c;从Java 2 version 1.4.0开始就内置了。主页&#xff1a;http://java.sun…

powerdesigner在工作时用到的方法

一、所有表中name同步comment的方法&#xff1a; 操作步骤&#xff1a;工具>execute commands>Edit/Run script Option Explicit &#xff1b; 将下面脚本复制进去并执行 ValidationMode True InteractiveMode im_Batch Dim mdl the current modelget the current …

大数据项目实践:基于hadoop+spark+mongodb+mysql开发医院临床知识库系统

一、前言 从20世纪90年代数字化医院概念提出到至今的20多年时间&#xff0c;数字化医院&#xff08;Digital Hospital)在国内各大医院飞速的普及推广发展&#xff0c;并取得骄人成绩。不但有数字化医院管理信息系统&#xff08;HIS)、影像存档和通信系统&#xff08;PACS)、电子…

两个对象集合根据对象的某个属性进行过滤,返回不同的部分

例如&#xff1a; plants 和houses 两个集合&#xff0c;进行对比过滤&#xff0c;取出plants里和houses不同的部分&#xff0c;并返回。 List<ImprovedSeedPlant> plants improvedSeedPlantMapper.selectList(spWrapper); List<StudsheepSheepHouse> houses h…

简历

技术岗&#xff01; 那么你应该写什么&#xff1f; 简单的介绍项目的规模&#xff0c;有多少技术人员&#xff0c;是互联网项目还是企业软件&#xff0c;这些就可以了。 接下来你需要写关于项目技术的那部分。 项目用了什么框架&#xff1f;spring 还是struts2 ,持久化是用的是…

java drawimage()方法

转载自 java drawimage()方法图像使用的支持分布于java.applet, java.awt, 和 java.awt.image包中。每一个图像都用一个 java.awt.Image 对象表示。除了Image 类外&#xff0c;java.awt 包提供了其它的基本的图像支持&#xff0c;例如Graphics 类的 drawImage方法&#xff0c;…

老师不能把你怎样,但外面的世界可以!

来源 | 菁优网 本文是一位老师讲述的三段小故事&#xff0c;告诉各位家长及孩子&#xff1a; 亲爱的孩子&#xff0c;老师是不能把你怎样&#xff0c;但外面的世界可以。 1. 我有一个学生&#xff0c;喜欢钻研奥数&#xff0c;却走路慢慢吞吞总爱迟到&#xff0c;同学给他起了…

TagHelper是怎么实现的

众所周知&#xff0c;在asp.net core中编写Razor视图的时候&#xff0c;用了一种新的写法--TagHelper 那这个TagHelper是怎么回事呢? 首先来看看TagHelper的项目位置&#xff0c;它是位于Microsoft.AspNetCore.Mvc.TagHelpers。 如果看到project.json&#xff0c;可以发现&…

java电商面试介绍

写博客 前两个项目采用的是ssh框架搭建的&#xff0c;最近的项目采用的是ssm框架搭建的。在实际开发中&#xff0c;我觉得这两个框架&#xff0c;他们最大的区别在于hibernate与mybatis的区别。 Hibernate与mybatis相比较&#xff0c;mybatis更为轻便、灵活&#xff0c;容易…

java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量

转载自 java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量 之前是在另一位高手的上传内容中学习到的&#xff0c;并将其代码根据我的需求进行了修改&#xff0c;参考位置&#xff1a;http://jiangpin1987.javaeye.com/blog/749690参考代码&#xff1a;…

List<Map<String,Object>>集合按照map中的某个值进行排序

List<Map<String,Object>>集合按照map中的某个值进行排序 举例&#xff1a; public void test5(){List<Map<String, Object>> list new ArrayList<Map<String, Object>>();Map<String, Object> map1 new HashMap<String, Obj…

面试

Java简历与面试 置顶2017年10月20日 10:04:29 阅读数&#xff1a;40142 Java就业指导 想要成为合格的Java程序员或工程师到底需要具备哪些专业技能&#xff0c;面试者在面试之前到底需要准备哪些东西呢&#xff1f;本文陈列的这些内容既可以作为个人简历中的内容&#xff0c…

全文搜索引擎 Elasticsearch 入门教程

转载自 全文搜索引擎 Elasticsearch 入门教程全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 Elastic&#xff09;是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。Elastic…

写给实习生的第一天

实习生&#xff08;intern&#xff09;和新员工有所区别。实习生仿佛一个长达12周&#xff08;三个月&#xff09;的面试&#xff0c;一起工作&#xff0c;一起解决问题。在最后有答辩和debrief meeting讨论结果。可能通过了&#xff0c;最后公司给offer&#xff1b;也可能没有…