写了一个jwt的类,但是没有达到网页上的效果

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了解还是不深

扣子Coze将智能体部署到网页 扣子ChatSDK是一个JavaScript库,旨在帮助开发者快速将智能体集成到网页中,实现免登录的AI对话功能。通过该SDK,开发者可以轻松构建聊天应用,支持多形态对话、用户身份识别、文件上传等功能。集成步骤包括引用SDK脚本、获取访问令牌、配置智能体ID等。SDK提供了灵活的UI配置选项,如调整聊天框样式、悬浮球显示、底部文案等,同时支持会话隔离以保护用户隐私。开发者可根据需求自定义界面和功能,快速实现智能体与用户的实时交互。 阅读详情

相关推荐

Spring Cloud【实现用户鉴权(什么是JWT、JWT原理、用户微服务、JWT工具类、用户服务实现JWT鉴权)】(八)

Spring Cloud【实现用户鉴权(什么是JWT、JWT原理、用户微服务、JWT工具类、用户服务实现JWT鉴权)】(八)

746

JSON Web Token(JWT)

一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。 4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。 5、服务器收到 session...

你若盛开,清风自来 707

使用 Java 实现 JWT 解析工具:原理与实战

在上一篇文章中,我们讨论了如何通过 Java 实现静态轮播图,通过生成 HTML 页面或者结合前端框架,实现了网页中的轮播效果。这一过程帮助开发者熟悉了 Java 处理前端内容的一些基础技巧。。JWT 是一种广泛应用于身份验证和信息传输的技术,它通过将信息加密生成令牌,使得客户端和服务器之间的通信变得更加安全。本文将聚焦于使用 Java 编写 JWT 解析工具,介绍如何生成、解析和验证 JWT,并提供源码解析、实际案例、优缺点分析以及核心方法的介绍,帮助开发者轻松掌握 JWT 在 Java 开发中的应用。

喵手的博客 962

JWT(JSON Web Token )详解及实例

JSON Web Token (JWT)详解

深圳市多克创新科技有限公司 7558

JWT实例demo

JWT实例demo,TextJWT为测试实例,包含过滤器及相关jar包

车载毫米波雷达实战:用MATLAB复现DDMA-MIMO雷达的Empty-band算法(附代码解析)

本文详细介绍了车载毫米波雷达中DDMA-MIMO技术的实战应用,重点解析了Empty-band算法的原理与MATLAB实现。通过搭建仿真环境,文章深入探讨了发射天线通道解调与相位法速度解模糊两大核心难题的解决方案,并提供了完整的代码解析,为雷达算法工程师提供了从理论到实践的清晰指南。

hill8的博客 558

JWT( 原理+流程+实例 )

Autowired/*** 注册自定义拦截器*/log.info("开始注册自定义拦截器...");

m0_60708917的博客 3332

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 324

JWT基本简介以及实例展示

JWT(Json Web Token)是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行加密签名。简洁(Compact): 可以通过URL,POST参数或者在HT...

alan_liuyue的博客 5575

服务器测试之网卡性能调优

nvidia下载mlnx_ofed:https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/intel下载驱动固件:https://www.intel.com/content/www/us/en/download-center/home.html。然而,你可以根据实际情况手动调整中断相关配置。老生常谈了,一些性能相关的设置项打开,节能的关闭,虚拟化相关的VMX/SR-IOV/IOMMU最好也都关掉。

qq_41897488的博客 4906

华硕ROG枪神双系统实战:Ubuntu安装避坑指南

本文是华硕ROG枪神笔记本安装Ubuntu双系统的详细避坑指南。针对其独特的硬件与BIOS设计,文章核心解决了VMD控制器导致硬盘无法识别、驱动兼容性等关键难题,并提供了从BIOS设置、分区方案到安装后驱动配置与性能调优的一站式解决方案,帮助用户实现稳定的双系统体验。

raspberrypi5的博客 545

JWT--使用/教程/实例

原文网址: 简介 说明 JWT是常用的TOKEN工具,本文介绍JWT知识。包括:什么是JWT、JWT的消息组成、JWT实战。 官网 官网:JSON Web Tokens - jwt.io (可生成/解析 Token) 简介 JWT简介 什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519)。JWT将用户信息加密到token里,服务器不保存任何用户信息。服务器通...

IT利刃出鞘的博客 3716

论文阅读:2024 ACM CCS “Do Anything Now”: Characterizing and Evaluating In-The-Wild Jailbreak Prompts on

大语言模型(LLMs)的滥用问题引起了公众和大语言模型供应商的高度关注。有一种特殊的对抗性提示,叫做越狱提示,它已成为绕过防护措施、让大语言模型生成有害内容的主要攻击手段。在这篇论文中,作者使用新框架JailbreakHub,对2022年12月至2023年12月期间的1405个越狱提示进行了全面分析。作者识别出131个越狱提示社区,发现了越狱提示的独特特征以及主要攻击策略,比如提示注入和权限提升。

CSPhD-winston的博客 1410

Security+jwt 实现无状态认证,前后端分离(附带网页案例及完整源码)

本章主要实现Spring Security自定义用户认证功能,jwt 实现token无状态认证。 - 使用JWT来传输数据,实际上传输的是一个字符串,这个字符串就是所谓的json web token字符串。 - jwt认证和传统的session和cookie模式相比,由于token认证实现了无状态,不再依赖session和cookie,所以无需要考虑伪造cookie等跨域攻击。............

dingdingdandan 2930

OsgEarth —— 笔记6 - 开发阶段加入漫游飞行(附源码)

效果      视频地址   源码 源码下载请私信   代码      代码相关内容:           OSG —— 笔记1 - 指令调用模型           OsgEarth —— 笔记1 - 创建地球的earth文件           OsgEarth —— 笔记2 - Qt窗口加载earth地球(附源码)           OsgEarth —— 笔记3 - 为地

1895

YOLOv8架构革命:通过EfficientViT融合实现精度-速度的帕累托突破

目标检测领域长期存在精度与速度的权衡难题。视觉Transformer(ViT)的引入解决了长距离依赖问题,但其巨大的计算复杂度制约了实时应用。最新研究表明,将轻量级ViT与YOLO架构融合,可在几乎不损失推理速度的前提下,将mAP提升3-8个百分点。这种架构改进方案已在工业检测、自动驾驶、安防监控等多个领域得到验证,在保持实时性的同时显著提升了复杂场景下的检测可靠性。通过模块化设计,可以灵活适配不同规模的YOLOv8模型,为实际应用提供精度-速度的帕累托最优解。

FJN110的博客 148

Jwt介绍

*** JWT验证过滤器:配置顺序 CorsFilte->JwtUtilsr-->StrutsPrepareAndExecuteFilter**//*** JWT_WEB_TTL:WEBAPP应用中token的有效时间,默认30分钟*//*** 将jwt令牌保存到header中的key*/// 指定签名的时候使用的签名算法,也就是header那部分,jjwt已经将这部分内容封装好了。// JWT密匙// 使用JWT密匙生成的加密key。

m0_67477525的博客 1009

海康机器人visionmaster5.0全局通信西门子S7操作

德国西门子(SIEMENS)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金、化工、印刷生产线等领域都有应用。西门子(SIEMENS)公司的PLC产品包括S7-200、S7-1200、S7-300、S7-400、S7-1500等。西门子S7系列PLC体积小、速度快、标准化,具有网络通信能力,功能更强,可靠性高。S7系列PLC产品可分为微型PLC(如S7-200),小规模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。

weixin_65316120的博客 417

SSO单点登录和JWT

1、用户登录业务介绍 1.1 单一服务器模式 早期单一服务器,使用session对象来实现 登录成功之后,把用户数据放到session里面。 从session获取数据判断是否登录 缺点:单点性能压力,无法扩展。而且在实际项目一般都是多台服务器做集群操作。 1.2SSO(single sign on)模式--单点登录 比如我们这个项目采用的是微服务架构,也就是说每个功能模块都是独立运行的,每个功能模块的服务器都是不同的。 那么采用1.1的session方式登录的话,我们在访问admin_l.

YKbsmn的博客 1071

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JWT介绍

一、JWT出现的原因以及工作原理 1、JWT的定义: JSON Web Token (JWT),是目前最流行的跨域身份验证解决方案 二、JWT工具类的介绍以及三种场景 三、JWT与vuex在SPA项目中的应用

m0_53151031的博客 1738

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

使用SpringBoot依赖jwt实现token加密,附带Postman进行测试

废话: 这段时间涉及到一个项目,老师第一次认真讲token,入坑很浅,花了一天算搞懂了一点点,做个笔记的目的是防止自己下次忘记,肯定有很多不完整的地方,可以通过评论区告诉我哈! 接下来的整个文章都是在讲述token的创建和使用。 前言: 整篇笔记实现了“登录”和“修改”两个方法,当用户没有通过“登录”方式获得token时,在执行“修改”方法时会报错,只有获得了登录方法给的token,并将token加入到“修改”方法请求的头部分,才能完成修改。 整体思维逻辑是写一个token认证方法,再结合mvc写一个过滤器

weixin_43403746的博客 7986

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

drf中的JWT认证

JWT认证时,报{“detail”: “身份认证信息未提供。”}且你的API接口中有设 permission_classes = [IsAuthenticated] 主要的问题是token字符串的设置,我所使用网页调试工具Postman urls.py # jwt的认证接口 path('api/login/', obtain_jwt_token), 此时使用postman进行登录的调...

qq_36579455的博客 2028

零基础学JWT解析:5分钟打造你的第一个解析工具

做了个小工具后,突然就开窍了——原来理解JWT结构可以这么简单!记录下这个零基础也能玩转的实践过程。最近在学Web开发时接触到JWT(JSON Web Token),但直接看原始令牌总是一头雾水。这个工具虽然简单,但把JWT最核心的组成和运作方式都可视化出来了。方法就能把这三部分拆开,Base64解码后一目了然。从零到上线只用了喝杯奶茶的时间,对新手特别友好~用InsCode创建HTML页面时,我直接用。

CrystalwaveStag的博客 291

Springboot实战:Shiro+jwt前后端分离超详细教程(附git源码下载)

Springboot-cli 开发脚手架系列 文章目录Springboot-cli 开发脚手架系列简介1. Springboot实战完整教程2. 封装jwt工具3. shiro和JWT整合4. 开启跨域支持5. 登录注册实战6. 效果演示7. 源码分享 简介 Springboo配置Shiro+jwt进行登录校验,权限认证,附demo演示。 什么是JWT jwt 全称JSON Web Tokens,是目前最流行的跨域身份验证解决方案。 验证流程 这种基于token的认证方式相比传统的ses

dingdingdandan 2362

全网最细总结-Seesion,Cookie以及JWT的区别

全网最详细,关于session,cookie,token的用户认证的原理与区别

qq_42898642的博客 1343

Golang:BasicAuth + JWT 校验用户权限

为什么需要权限 在平常浏览网页中,大多数网站对用户分为游客和普通用户,还有会员,那么游客浏览一些网页需要登录才能看到,普通用户查看一些帖子需要积分,而会员则像是开了一条绿色通道,什么都能访问,这就是权限的作用 使用 BasicAuth 认证 BasicAuth 是开放平台的认证方式,每次访问 API 都会携带 用户的 username 和 password 认证,那么 BasicAuth 会对 u...

HTK217的博客 2202
上一篇: cas5.1x单点登陆后退出到指定页面,服务器端配置
下一篇: 允许跨域访问的过滤器
java_doom
博客等级 码龄20年 6粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值