JWT(JSON Web Token) Java与.Net简单编码实现
参考
Java与.Net实现实现
// java HMacsha256
private static final String MAC_INSTANCE_NAME = "HMacSHA256";
public static String Hmacsha256(String secret, String message) throws NoSuchAlgorithmException, InvalidKeyException {
Mac hmac_sha256 = Mac.getInstance(MAC_INSTANCE_NAME);
SecretKeySpec key = new SecretKeySpec(secret.getBytes(), MAC_INSTANCE_NAME);
hmac_sha256.init(key);
byte[] buff = hmac_sha256.doFinal(message.getBytes());
return Base64.encodeBase64URLSafeString(buff);
}
// java jwt
@Test
public void testJWT() throws InvalidKeyException, NoSuchAlgorithmException {
String secret = "eerp";
String header = "{\"type\":\"JWT\",\"alg\":\"HS256\"}";
String claim = "{\"iss\":\"cnooc\", \"sub\":\"yrm\", \"username\":\"yrm\", \"admin\":true}";
String base64Header = Base64.encodeBase64URLSafeString(header.getBytes());
String base64Claim = Base64.encodeBase64URLSafeString(claim.getBytes());
String signature = ShaUtil.Hmacsha256(secret, base64Header + "." + base64Claim);
String jwt = base64Header + "." + base64Claim + "." + signature;
System.out.println(jwt);
}
// c# Hmacsha256
protected String HMacSha256Hash(String key, String message)
{
var keyBytes = Encoding.UTF8.GetBytes(key);
using (var hmacsha256 = new HMACSHA256(keyBytes))
{
var buffer = hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(message));
var b64 = Base64UrlSafeString(buffer);
return b64;
}
}
protected String Base64UrlSafeString(Byte[] bytes)
{
var b64 = Convert.ToBase64String(bytes);
return b64.Replace("=", "").Replace("+", "-").Replace("/", "_");
}
// c# jwt
[Test]
public void testJWT()
{
String secret = "eerp";
String header = "{\"type\":\"JWT\",\"alg\":\"HS256\"}";
String claim = "{\"iss\":\"cnooc\", \"sub\":\"yrm\", \"username\":\"yrm\", \"admin\":true}";
var encoding = Encoding.UTF8;
var base64Header = Base64UrlSafeString(encoding.GetBytes(header));
var base64Claim = Base64UrlSafeString(encoding.GetBytes(claim));
var signature = HMacSha256Hash(secret, base64Header + "." + base64Claim);
var jwt = base64Header + "." + base64Claim + "." + signature;
Console.WriteLine(jwt);
}
结果:
eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiJjbm9vYyIsICJzdWIiOiJ5cm0iLCAidXNlcm5hbWUiOiJ5cm0iLCAiYWRtaW4iOnRydWV9.sAHcCnpnsPA0T9i-Ig9oZnVq3N0-kK_aCwlkzFOkrH8
JWT(JSON Web Token) Java与.Net简单编码实现的更多相关文章
- Java JWT: JSON Web Token
Java JWT: JSON Web Token for Java and Android JJWT aims to be the easiest to use and understand libr ...
- ( 转 ) 什么是 JWT -- JSON WEB TOKEN
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- 如何在SpringBoot中集成JWT(JSON Web Token)鉴权
这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...
- JWT(JSON Web Token) 【转载】
JWT(JSON Web Token) 什么叫JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. 一般来说,互联网用户认证是这样子的. 1.用户向服务器发送用户名和密码. ...
- 什么是JWT(Json Web Token)
什么是 JWT (Json Web Token) 用户认证是计算机安全领域一个永恒的热点话题. JWT 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519). 该to ...
- 温故知新,.Net Core遇见JWT(JSON Web Token)授权机制方案
什么是JWT JWT (JSON Web Token) 是一个开放标准,它定义了一种以紧凑和自包含的方法,用于在双方之间安全地传输编码为JSON对象的信息. 因此,简单来说,它是JSON格式的加密字符 ...
- [更新]一份包含: 采用RSA JWT(Json Web Token, RSA加密)的OAUTH2.0,HTTP BASIC,本地数据库验证,Windows域验证,单点登录的Spring Security配置文件
没有任何注释,表怪我(¬_¬) 更新: 2016.05.29: 将AuthorizationServer和ResourceServer分开配置 2016.05.29: Token获取采用Http Ba ...
- 关于JWT(Json Web Token)的思考及使用心得
什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权.由于许多API接口设计是遵循无状态的(比如 ...
- API安全验证之JWT(JSON WEB TOKEN) OLCMS
假如www.olcms.com/getUserInfo获取用户信息,你怎么知道当前用户是谁?有人说登陆时候我把他UID写入session了,如果是API接口,没有session怎么办,那么就需要把UI ...
随机推荐
- mysql数据库从删库到跑路之mysql存储引擎
一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用pn ...
- JQuery可以轻松实现数字框
如果使用JQuery,则可以轻松实现数字框. <input type="text" name="name" value="0" run ...
- 03 linux命令的操作
开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 使用快捷键切换到虚拟终端5,使用管理员身份登录, ...
- idea构建一个简单的maven_web项目
软件说明 好啦,开始创建mave的web项目啦!
- Spring MVC 复习笔记02
1. 非注解的处理器映射器和适配器 1.1 非注解的处理器映射器 处理器映射器:org.springframework.web.servlet.handler.BeanNameUrlHandlerMa ...
- oracle安装完成后目录中不论有没有tnsnames.ora和listener.ora文件 PLSQL都能连上的问题解决方法
今天遇到这个问题了,发现listener.ora文件和tnsnames.ora文件在Net Work文件夹下没有,正常情况下安装完oracle或者是oracle Client是会有的,但是在Net M ...
- Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置
0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值 ...
- 20145313张雪纯 《Java程序设计》第6周学习总结
20145313张雪纯 <Java程序设计>第6周学习总结 教材学习内容总结 将数据从来源中取出,可以使用输入串流:将数据写入目的地,可以使用输出串流. 输入串流代表对象为java.io. ...
- SaltStack应用grains和jinja模板-第四篇
目标需求 1.使用jinja模板让apache配置监听本地ip地址 2.了解grains的基本使用方法 说明:实验环境是在前面的第二篇和第三篇基础上完成 实现步骤 使用grains获取ip地址信息 使 ...
- redis 与session
springboot:session集中存储到redis https://www.cnblogs.com/huiy/p/6907164.html springboot处理session生命周期 htt ...