package com.test.jwt; import java.io.UnsupportedEncodingException; import java.security.Key; import java.util.Base64; import java.util.Date; import javax.crypto.spec.SecretKeySpec; import javax.xml.bind.DatatypeConverter; import org.junit.Test; import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; public class JwtHelper { //Token过期时间 private final static int expiresSecond = 172800000; /* * 把秘钥转成base64格式 */ @Test public static String base64for(String keyText) throws UnsupportedEncodingException { final Base64.Decoder decoder = Base64.getDecoder(); final Base64.Encoder encoder = Base64.getEncoder(); final byte[] keyByte = keyText.getBytes("UTF-8"); // base64Secret.getBytes("UTF-8"); // 编码 final String encodedKey = encoder.encodeToString(keyByte); //System.out.println("加密后秘钥 " + encodedKey); // 解base64码 //System.out.println("解密后秘钥 " + new String(decoder.decode(encodedKey), "UTF-8")); return encodedKey; } // 根据秘钥,解密jwt加密内容,转成实体Claim,就可以从Claim中取出内容。Claims实际上是个Map public static Claims parseJWT(String jsonWebToken, String encodedKey) { try { Claims claims = Jwts.parser().setSigningKey(DatatypeConverter.parseBase64Binary(encodedKey)) .parseClaimsJws(jsonWebToken).getBody(); return claims; } catch (Exception ex) { ex.printStackTrace(); return null; } } /* *根据秘钥以及设置的内容,建立 jwt字符串 */ public static String createJWT(String sub, String name, String orgnization,String role[], String scope[], String iat,String encodedKey) { SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; long nowMillis = System.currentTimeMillis(); Date now = new Date(nowMillis); // 生成签名密钥 byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(encodedKey); Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName()); // 设置要添加的参数"alg": "HS256", JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT").setHeaderParam("alg", "HS256") .claim("sub", sub) .claim("name", name) .claim("orgnization", orgnization) .claim("role", role) .claim("scope", scope) .claim("iat", iat) .signWith(signatureAlgorithm, signingKey); // 添加Token过期时间 if (expiresSecond >= 0) { long expMillis = nowMillis + expiresSecond; Date exp = new Date(expMillis); builder.setExpiration(exp).setNotBefore(now); } // 生成JWT字符串 return builder.compact(); } public static void main(String[] args) throws UnsupportedEncodingException { String myKey =base64for("abc"); String[] role= {"user","contributor","admin"}; String[] scope= {"mine","orgnization","platform"}; String iat="1516239022"; String jwt = createJWT("9123657", "张三", "XX信息中心", role,scope,iat,myKey); System.out.println("jwt加密后的 " + jwt); String jwtString = jwt; Claims cla = parseJWT(jwtString, myKey);//Claims实际上是个Map //下面是取出来的内容 System.out.println(cla.get("sub")); System.out.println(cla.get("name")); System.out.println(cla.get("orgnization")); System.out.println(cla.get("role")); System.out.println(cla.get("scope")); System.out.println(cla.get("iat")); } }
写个一个jwt的demo ,然而和https://jwt.io/上的效果不太一样,先忙别的了,对jwt了解还是不深
相关推荐
JWT公钥私钥操作工具类
用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。 cookie+session这种模式通常是保存在内存中,而且服务从单服务到多...
签发JWT,验证JWT,解析JWT字符串
jwt是什么,如何在springboot中整合jwt
springboot整合jwt
JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 适用场景 1、用于向Web应用传递...一个JWT实际上就是一个字符串,它由三部分组成:头部、载荷与签名。
jwt.jar包 jwt所需jar包集合 使用commons-codec.jar + java-jwt.jar进行token认证,支持jdk1.7及以上版本,目前大多数jwt支持至少需要1.8及以上,资源不好找,且行且珍惜。 如果需要源码以及功能实现方式,请联系...
正在测试JWT鉴权或者学习JWT的,需要解码token的可以看看。
jwt的工具类包含引入的包,和md5加密方法的工具类,可以直接使用,方便快捷,适合直接上手,欢迎下载
jwthelper是一个Golang包提供了JWT(JSON Web Token)功能基于jwt-go.
适用于浏览器应用程序 jwt解码是一个小型浏览器库,可以帮助解码Base64Url编码的JWTs标记。注意:这个库没有验证令牌,任何格式良好的JWT都可以解码。 应该使用 express JWT 。koa JWT 。 Owin承载JWT插件等方式验证...
手写的JWT,实现SSO框架,将获取到的Token保存在cookie中。简单的练习练习权限框架,提升自己
JWT由三个部分组成:header.payload.signature 以下示例以JWT官网为例 header部分: { alg: HS256, typ: JWT } 对应base64UrlEncode编码为:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 说明:该字段为jso
1. 用户登录时,服务器端将用户的信息作为JWT的Payload,并将其与头部分别进行Base64编码拼接后签名,形成一个Token。 2. 服务器端将Token作为登录成功的返回结果返回给客户端,客户端可以将返回的结果保存在...
兄弟们,加油吧,为了在网络应用环境间传递声明而执行的一种...虽然现在的登录注册打都不用自己写了,很多优秀的框架已经帮忙完成了,但是学习jwt还是必要的,但是为了避免重复造轮,其实没必要自己写个。还是用框架吧
jwt工具类,jwt工具类
在这个类中,我们可以使用 System.IdentityModel.Tokens.Jwt NuGet 包来实现 JWT 的加密解密。 Token 的生成 在 Jwt 类中,GetToken 方法用来生成 Token。这个方法将 Claims_dictionary 转换为 Token。 Token 的...
生成token工具,webapi 接口 token JWT的Web API身份验证Json Web Token(jwt)是一种不错的身份验证及授权方案,简单的说就是调用端调用api时,附带上一个由api端颁发的token,以此来验证调用者的授权信息。
An introduction to the wonders of JSON Web Tokens and associated technologies.
JwtToken令牌工具类