当前位置: 首页 > news >正文

怎样找到网站后台入口在哪个网站做跨境电商

怎样找到网站后台入口,在哪个网站做跨境电商,推广seo公司,接网站开发项目平台每次颁发的token,在重启以后,有小伙伴可能说想,是不是token使用内存存储,重启以后token就没了,其实不是这样,这个和之前的老版本的Oauth2不一样。因此并不是因为存储失效了,导致JWT失效。特性JW…

每次颁发的token,在重启以后,有小伙伴可能说想,是不是token使用内存存储,重启以后token就没了,其实不是这样,这个和之前的老版本的Oauth2不一样。因此并不是因为存储失效了,导致JWT失效。

特性JWT传统随机字符串 Token
信息载体自包含(Payload 带用户/有效期信息)仅为随机字符串(无实际含义)
服务端存储需求无需存储 Token,仅存密钥必须存储 Token(如 Redis/数据库),并关联用户信息
验证逻辑本地验证(密钥+签名对比)需查存储系统(验证 Token 是否存在、关联用户是否合法)
扩展性(分布式场景)天然支持(无状态,服务端可水平扩展)需共享存储(如 Redis 集群),否则多服务节点无法验证

具体来说,如果系统采用 “本地生成 RSA 密钥对” 的模式(例如授权服务器自己生成 RSA 密钥对用于签名 JWT,或资源服务器持有本地 RSA 公钥用于验证签名),而这些密钥对仅存在内存中、未持久化到磁盘或安全存储(如密钥管理服务 KMS),那么程序重启后:

1.授权服务器会重新生成新的 RSA 密钥对,导致之前用旧密钥签名的 Token 全部失效(验证时签名不匹配);
2.资源服务器的JWKSource会丢失之前的 RSA 公钥,无法验证重启前签发的 Token(找不到对应的验证密钥)

如下所示,每次我们都是重新创建keyPair,并且每次的KeyID都是从新生成的UUID,因此,也就是我们上面所说的问题。

/** @Description: 创建用于JWT签名和验证的JWK源,生成RSA密钥对并构建JWK集合,用于OAuth2授权服务器* @author: 胡涛* @mail: hutao_2017@aliyun.com* @date: 2025年5月27日 上午11:46:45*/@Beanpublic JWKSource<SecurityContext> jwkSource() {KeyPair keyPair = generateRsaKey();RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();RSAKey rsaKey = new RSAKey.Builder(publicKey).privateKey(privateKey).keyID(UUID.randomUUID().toString()).build();JWKSet jwkSet = new JWKSet(rsaKey);return new ImmutableJWKSet<>(jwkSet);}/** @Description: 生成RSA密钥对,密钥长度为2048位* @author: 胡涛* @mail: hutao_2017@aliyun.com* @date: 2025年5月20日 上午10:47:00*/private static KeyPair generateRsaKey() {KeyPair keyPair;try {KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(2048);keyPair = keyPairGenerator.generateKeyPair();}catch (Exception ex) {throw new IllegalStateException(ex);}return keyPair;}
}

现在我们微调代码如下

  1. 调整1:固定 RSAKey 的 keyID
  2. 调整2:持久化 KeyPair
	private static final String KEY_ID = "oauth2-rsa-key-pair.ser";@Beanpublic JWKSource<SecurityContext> jwkSource() {KeyPair keyPair = generateRsaKey();RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();RSAKey rsaKey = new RSAKey.Builder(publicKey).privateKey(privateKey).keyID(KEY_ID)//调整1 KEY_ID 固定.build();JWKSet jwkSet = new JWKSet(rsaKey);return new ImmutableJWKSet<>(jwkSet);}private static KeyPair generateRsaKey() {//调整2 从文件获取File file = new File(KEY_ID);if (file.exists() && file.length() > 0) {try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {return (KeyPair) ois.readObject();} catch (Exception e) {e.printStackTrace();}}//如果文件不存在,则新建KeyPairGenerator keyPairGenerator;KeyPair keyPair = null;try {keyPairGenerator = KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(2048);keyPair = keyPairGenerator.generateKeyPair();ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(KEY_ID));oos.writeObject(keyPair);oos.close();} catch (Exception e) {e.printStackTrace();}return keyPair;}

最后,在程序运行的相对根目录就会产生密钥对文件
在这里插入图片描述

http://www.dtcms.com/a/440354.html

相关文章:

  • 郑州网站建设口碑好网站与经营网站
  • 网站建设需要找网站建设公司做吗住房和城乡建设部网站评估
  • 建设网站大约多少钱成品app
  • 国外网站打开很慢wordpress radiate
  • 晚上必看正能量网站短视频北京模板建站公司
  • 掌握 Spring Security:认证、授权与高级功能全解析
  • 做物流网站模块免费看国际短视频软件
  • 淄博企业网站建设公司网站建设开发流程按钮
  • 网站跳转怎么做360wordpress 图片显示
  • 有没有做花卉种子的网站啊会员卡系统一般哪里买
  • 51单片机外部中断
  • 网站开发需要注意的问题山东省住房和城乡建设厅门户网站
  • 个人网站注销原因包装设计效果图
  • 北京高端网站公司哪家好建设银行官方网站
  • 教育在线网站怎样做直播site之后网站在首页说明说明
  • 网页翻译网站聊大 网站设计
  • 做 58 那样的网站建站公司服务
  • 做网站work什开一个网上商城要多少钱
  • 免费网站托管权威的大良网站建设
  • 【Linux系统】进程替换
  • drupal 网站实例家装公司电话
  • 南京小程序网站开发郑州做系统集成的公司网站
  • 龙海建设局网站NET网站开发程序员
  • 惠州市惠城区建设局网站电商网站建设咨询
  • 襄阳市住房和城乡建设局网站做图片带字的网站
  • 建设网站材料可以下载吗最新国际形势最新消息
  • 网站登记查询做广告推广哪家好
  • wordpress 体育主题广州网站优化服务
  • 青羊区网站建设微信小程序插件开发
  • PID资源